// Copyright (c) 2023 Alex Diener. All rights reserved. #ifndef __EntityPushBlock_H__ #define __EntityPushBlock_H__ typedef struct EntityPushBlock EntityPushBlock; #define EntityPushBlock_superclass GameEntity #include "PROJECT_NAME/EntityComponent_collidable.h" #include "PROJECT_NAME/EntityComponent_position.h" #include "PROJECT_NAME/EntityComponent_pushable.h" #include "PROJECT_NAME/EntityComponent_sprite.h" #include "PROJECT_NAME/GameEntity.h" #define EntityPushBlock_ivars \ GameEntity_ivars \ \ EntityComponent_position positionComponent; \ EntityComponent_sprite spriteComponent; \ EntityComponent_collidable collidableComponent; \ EntityComponent_pushable pushableComponent; #define EntityPushBlock_vtable(self_type) \ GameEntity_vtable(self_type) stemobject_declare(EntityPushBlock) EntityPushBlock * EntityPushBlock_create(Vector2i position, bool multipush, struct RoomState * roomState); bool EntityPushBlock_init(EntityPushBlock * self, Vector2i position, bool multipush, struct RoomState * roomState); EntityPushBlock * EntityPushBlock_createWithEncodedState(struct memreadContext * memreadContext, struct RoomState * roomState); void EntityPushBlock_initWithEncodedState(EntityPushBlock * self, struct memreadContext * memreadContext, struct RoomState * roomState); EntityPushBlock * EntityPushBlock_copy(EntityPushBlock * self, struct RoomState * roomState); void EntityPushBlock_initCopy(EntityPushBlock * self, compat_type(EntityPushBlock *) original, struct RoomState * roomState); void EntityPushBlock_dispose(EntityPushBlock * self); compat_type(GameEntityComponent *) EntityPushBlock_getComponent(EntityPushBlock * self, ComponentType type); void EntityPushBlock_preadvance(EntityPushBlock * self); void EntityPushBlock_postadvance(EntityPushBlock * self); bool EntityPushBlock_isEqual(EntityPushBlock * self, EntityPushBlock * compare); void EntityPushBlock_enumerateProperties(EntityPushBlock * self, bool transient, GameEntity_enumeratePropertiesCallback callback, void * context); #endif