Files
factorygame/entity/entity.h

75 lines
1.5 KiB
C

//
// 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