// Copyright (c) 2023 Alex Diener. All rights reserved. #ifndef __EntityComponent_movement_H__ #define __EntityComponent_movement_H__ typedef struct EntityComponent_movement EntityComponent_movement; #define EntityComponent_movement_superclass GameEntityComponent #include "PROJECT_NAME/GameEntityComponent.h" typedef enum EntityComponent_movement_moveResult { MOVE_RESULT_IDLE, MOVE_RESULT_MOVED, MOVE_RESULT_REFUSED, MOVE_RESULT_BLOCKED } EntityComponent_movement_moveResult; #define EntityComponent_movement_ivars \ GameEntityComponent_ivars \ \ EntityComponent_movement_moveResult lastMoveResult; \ bool canExitRoom; #define EntityComponent_movement_vtable(self_type) \ GameEntityComponent_vtable(self_type) stemobject_declare(EntityComponent_movement) EntityComponent_movement * EntityComponent_movement_create(bool canExitRoom); bool EntityComponent_movement_init(EntityComponent_movement * self, bool canExitRoom); void EntityComponent_movement_dispose(EntityComponent_movement * self); void EntityComponent_movement_initCopy(EntityComponent_movement * self, compat_type(GameEntityComponent *) original); void EntityComponent_movement_update(EntityComponent_movement * self, struct GameEntity * entity); #endif