#pragma once #include "raylib.h" #include "lib.h" #include "sprites.h" #include using namespace std; #define TEXTURES_BUF_SIZE 16 #define TARGET_FPS 60 #define MAX_KNIGHTS 5000 #define SCREEN_WIDTH 1300 #define SCREEN_HEIGHT 1080 #define DEBUG_MODE_ENABLED bool global_debug_mode = false; enum class KnightState : u8 { IDLE = 0, RUNNING = 1, ATTACKING = 2, }; enum class Direction : u8 { UP = 0, DOWN = 1, LEFT = 2, RIGHT = 3, // DIR_UP_LEFT = 4, // DIR_UP_RIGHT = 5, // DIR_DOWN_LEFT = 6, // DIR_DOWN_RIGHT = 7, }; struct Knight { Point position; Point move_target_point; Direction look_dir; KnightState state; u8 selected; u8 ordered_to_move; }; typedef struct Assets { Texture2D *textures; } Assets; struct GameState { Camera2D camera; int frame_count; Point camera_position; optional selected_point; Knight *knights; SpriteAnimationPlayback* anim_playbacks; Knight *selected_knights; optional selection_mouse_start_pos; int entity_count; }; extern "C" { void game_init(GameState* state); void game_update(GameState* state); void game_draw(GameState* state); void game_cleanup(GameState* state); }