// Copyright (c) 2023 Alex Diener. All rights reserved. #include "PROJECT_NAME/EntityDestructibleTile.h" #include "PROJECT_NAME/EntityPlayer.h" #include "PROJECT_NAME/EntityPushBlock.h" #include "PROJECT_NAME/EntityToken.h" #include "PROJECT_NAME/EntityWallCrawler.h" #include "PROJECT_NAME/GameEntities.h" #include "PROJECT_NAME/GameEntity.h" GameEntityTypeID getEntityTypeFromVtable(compat_type(GameEntity *) entityUntyped) { GameEntity * entity = entityUntyped; #define DEFINE_ENTITY(data_id, entity_class) \ if (entity->vtable == (struct GameEntity_vtableStruct *) &entity_class##_class) { \ return data_id; \ } #include "GameEntity_list.h" #undef DEFINE_ENTITY return GameEntityType_unknown; } struct GameEntity_vtableStruct * getVtableFromEntityType(GameEntityTypeID typeID) { #define DEFINE_ENTITY(data_id, entity_class) \ if (typeID == data_id) { \ return (struct GameEntity_vtableStruct *) &entity_class##_class; \ } #include "GameEntity_list.h" #undef DEFINE_ENTITY return NULL; }