// Copyright (c) 2023 Alex Diener. All rights reserved. #ifndef __EntityToken_H__ #define __EntityToken_H__ typedef struct EntityToken EntityToken; #define EntityToken_superclass GameEntity #include "PROJECT_NAME/EntityComponent_pickup.h" #include "PROJECT_NAME/EntityComponent_position.h" #include "PROJECT_NAME/EntityComponent_sprite.h" #include "PROJECT_NAME/GameEntity.h" #define EntityToken_ivars \ GameEntity_ivars \ \ EntityComponent_pickup pickupComponent; \ EntityComponent_position positionComponent; \ EntityComponent_sprite spriteComponent; #define EntityToken_vtable(self_type) \ GameEntity_vtable(self_type) stemobject_declare(EntityToken) EntityToken * EntityToken_create(Vector2i position, struct RoomState * roomState); bool EntityToken_init(EntityToken * self, Vector2i position, struct RoomState * roomState); EntityToken * EntityToken_createWithEncodedState(struct memreadContext * memreadContext, struct RoomState * roomState); void EntityToken_initWithEncodedState(EntityToken * self, struct memreadContext * memreadContext, struct RoomState * roomState); EntityToken * EntityToken_copy(EntityToken * self, struct RoomState * roomState); void EntityToken_initCopy(EntityToken * self, compat_type(EntityToken *) original, struct RoomState * roomState); void EntityToken_dispose(EntityToken * self); compat_type(GameEntityComponent *) EntityToken_getComponent(EntityToken * self, ComponentType type); void EntityToken_enumerateProperties(EntityToken * self, bool transient, GameEntity_enumeratePropertiesCallback callback, void * context); #endif