#ifndef PIXELDEFENSE_COMPONENTS_H #define PIXELDEFENSE_COMPONENTS_H #include #include #include "utils/building_types.h" #include "utils/entity_types.h" extern ECS_TAG_DECLARE(TextureTerrain); extern ECS_TAG_DECLARE(TextureBuildings); extern ECS_TAG_DECLARE(TextureEntities); extern ECS_TAG_DECLARE(UnitSelected); typedef enum ResourceType { RES_IRON, RES_WOOD, RES_GOLD, RES_FOOD, RES_COUNT, } ResourceType; typedef struct Resource { ResourceType type; i32 amount; } Resource; extern ECS_COMPONENT_DECLARE(Resource); typedef struct TilePosition { BzTile x; BzTile y; } TilePosition; extern ECS_COMPONENT_DECLARE(TilePosition); typedef struct TileSize { BzTile sizeX; BzTile sizeY; } TileSize; extern ECS_COMPONENT_DECLARE(TileSize); typedef struct Owner { BuildingType playerID; } Owner; extern ECS_COMPONENT_DECLARE(Owner); typedef BzSpatialGridID SpatialGridID; extern ECS_COMPONENT_DECLARE(SpatialGridID); typedef Vector2 Position, Size, Velocity, Offset; extern ECS_COMPONENT_DECLARE(Position); extern ECS_COMPONENT_DECLARE(Size); extern ECS_COMPONENT_DECLARE(Velocity); extern ECS_COMPONENT_DECLARE(Offset); typedef f32 Rotation, AngularVelocity; extern ECS_COMPONENT_DECLARE(Rotation); extern ECS_COMPONENT_DECLARE(AngularVelocity); typedef struct SteeringOutput { Vector2 linear; f32 angular; } SteeringOutput; extern ECS_COMPONENT_DECLARE(SteeringOutput); typedef struct TextureRegion { Texture2D texture; Rectangle rec; bool flipX; bool flipY; } TextureRegion; extern ECS_COMPONENT_DECLARE(TextureRegion); typedef struct Animation { EntityType entityType; AnimationType animType; AnimationSequence sequence; BzTileset *tileset; i32 curFrame; f32 frameDuration; f32 elapsed; } Animation; extern ECS_COMPONENT_DECLARE(Animation); extern ECS_COMPONENT_DECLARE(AnimationType); #define PATH_DATA_SIZE 8 typedef struct PathData { Position waypoints[PATH_DATA_SIZE]; size_t numWaypoints; struct PathData *next; } PathData; typedef struct Path { PathData *paths; i32 curWaypoint; } Path; extern ECS_COMPONENT_DECLARE(Path); typedef struct EntityArms { ecs_entity_t left; ecs_entity_t right; } EntityArms; //extern ECS_COMPONENT_DECLARE(EntityArms); void initComponentIDs(ecs_world_t *ecs); #endif //PIXELDEFENSE_COMPONENTS_H