// Copyright (c) 2023 Alex Diener. All rights reserved. #ifndef __EntityDestructibleTile_H__ #define __EntityDestructibleTile_H__ typedef struct EntityDestructibleTile EntityDestructibleTile; #define EntityDestructibleTile_superclass GameEntity #include "PROJECT_NAME/EntityComponent_collidable.h" #include "PROJECT_NAME/EntityComponent_position.h" #include "PROJECT_NAME/EntityComponent_sprite.h" #include "PROJECT_NAME/GameEntity.h" #define EntityDestructibleTile_ivars \ GameEntity_ivars \ \ bool destroyed; \ EntityComponent_collidable collidableComponent; \ EntityComponent_position positionComponent; \ EntityComponent_sprite spriteComponent; #define EntityDestructibleTile_vtable(self_type) \ GameEntity_vtable(self_type) stemobject_declare(EntityDestructibleTile) EntityDestructibleTile * EntityDestructibleTile_create(Vector2i position, bool destroyed, struct RoomState * roomState); bool EntityDestructibleTile_init(EntityDestructibleTile * self, Vector2i position, bool destroyed, struct RoomState * roomState); EntityDestructibleTile * EntityDestructibleTile_createWithEncodedState(struct memreadContext * memreadContext, struct RoomState * roomState); void EntityDestructibleTile_initWithEncodedState(EntityDestructibleTile * self, struct memreadContext * memreadContext, struct RoomState * roomState); EntityDestructibleTile * EntityDestructibleTile_copy(EntityDestructibleTile * self, struct RoomState * roomState); void EntityDestructibleTile_initCopy(EntityDestructibleTile * self, compat_type(EntityDestructibleTile *) original, struct RoomState * roomState); void EntityDestructibleTile_dispose(EntityDestructibleTile * self); compat_type(GameEntityComponent *) EntityDestructibleTile_getComponent(EntityDestructibleTile * self, ComponentType type); bool EntityDestructibleTile_isEqual(EntityDestructibleTile * self, EntityDestructibleTile * compare); void EntityDestructibleTile_enumerateProperties(EntityDestructibleTile * self, bool transient, GameEntity_enumeratePropertiesCallback callback, void * context); void EntityDestructibleTile_undoActionPerformed(EntityDestructibleTile * self); #endif