#pragma once #include #include #include #include "constants.h" #define ENTITY_ALLOCATED 1 #define ENTITY_VISIBLE (1 << 1) #define ENTITY_PHYSICS_ACTIVE (1 << 2) typedef enum EntityType { Player_Entity, Wall_Entity, Background_Entity } EntityType; typedef enum DrawLayer { Background_Layer = 0, Foreground_Layer = 1 } DrawLayer; typedef struct Entity { int id; EntityType type; uint16_t flags; Vector2 position; Vector2 velocity; //Physics information Rectangle physicsCollider; int numHitBoxes; Rectangle hitBoxes[MAX_AREA_COUNT]; int numHurtBoxes; Rectangle hurtBoxes[MAX_AREA_COUNT]; //Graphics Information Texture2D texture; DrawLayer drawLayer; Rectangle destRect; //Relative to the players position #ifdef BEATEMUP_DEBUG //Debug information Color physicsColliderColor; #endif } Entity; typedef struct Game { bool paused; Entity entities[MAX_ENTITY_COUNT]; Texture2D background; float backgroundPosition; #ifdef BEATEMUP_DEBUG //Debug information bool enableDebugOverlay; #endif } Game; void AddEntity(Entity* e); void AddWall(float xpos, float ypos, float width, float height); void InitGame(); void UpdateGame(float deltaTime); void DrawGame();