// // Created by bruno on 7.6.2025. // #ifndef FACTORYGAME_ENTITY_H #define FACTORYGAME_ENTITY_H #include "../tiles/tile.h" #include "../util/pathfinding.h" #include "../player/player.h" #define ENTITY_MAX_COUNT 1024 #define ENEMY_DAMAGE 1 #define ENEMY_RANGE 3 #define SPAWN_RADIUS 5 typedef struct EnemySpawnState { int enemiesSpawned; int spawnCooldown; } EnemySpawnState; #define SPAWN_COOLDOWN 30 // frames between each enemy spawn #define MAX_SPAWN_ATTEMPTS 50 extern EnemySpawnState currentSpawnState; typedef enum EntityType { GHOST, } EntityType; typedef struct EntityTypeReg { EntityType type; Animation animation; char name[20]; int speed; int entityTickRate; uint16_t maxHealth; } EntityTypeReg; typedef struct Entity { MiniRect tileRect; SDL_Rect renderRect; EntityType type; int16_t health; MiniRect target; Path path; int entityNextTick; unsigned char interpolateTick; MiniRect fromTile; MiniRect toTile; MiniRect targetSnapshot; } Entity; typedef struct EntityArray { Entity entities[ENTITY_MAX_COUNT]; int activeCount; } EntityArray; extern EntityArray entities; void remove_entity(EntityArray *arr, int index); int add_entity(EntityArray *arr, Entity t); void renderEntities(SDL_Renderer *renderer, SDL_Rect playerRect); void updateEntities(Player * plr); void registerEntity(char fname[20], SDL_Renderer *renderer); void loadEntities(SDL_Renderer *renderer); void updateWaveLogic(WaveInfo* info); #endif //FACTORYGAME_ENTITY_H