#ifndef PIXELDEFENSE_GAME_STATE_H #define PIXELDEFENSE_GAME_STATE_H #include #include typedef enum InputType { INPUT_NONE, INPUT_BUILDING, INPUT_SELECTED_UNITS, INPUT_SELECTED_OBJECT, INPUT_SELECTED_BUILDING, } InputType; typedef struct InputState { InputType state; // Input mapping MouseButton LMB; MouseButton RMB; MouseButton MMB; KeyboardKey ESC; f32 DRAG_LIMIT; // Common Vector2 mouseDown; Vector2 mouseDownWorld; f32 mouseDownElapsed; // INPUT_BUILDING int building; bool buildingCanPlace; TilePosition buildingPos; TileSize buildingSize; // SELECTED_UNITS // SELECTED_OBJECTS // SELECTED_BUILDING } InputState; typedef struct Game { Camera2D camera; BzTileset terrainTileset; BzTileset buildingsTileset; BzTileset entitiesTileset; BzTileMap map; BzSpatialGrid *entityGrid; f32 frameDuration; ecs_entity_t entity; InputState input; struct { i64 wood; i64 iron; i64 food; i64 gold; i64 pop; } resources; struct { BzObjectPool *pathData; } pools; struct { bool path; bool entityColliders; bool mapColliders; bool spatialGrid; } debugDraw; f32 elapsed; } Game; extern ecs_world_t *ECS; extern ECS_COMPONENT_DECLARE(Game); #endif //PIXELDEFENSE_GAME_STATE_H