tinyswords/game.h
2025-10-03 18:34:35 +07:00

71 lines
1.2 KiB
C++

#pragma once
#include "raylib.h"
#include "lib.h"
#include "sprites.h"
#include <optional>
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<Point> selected_point;
Knight *knights;
SpriteAnimationPlayback* anim_playbacks;
Knight *selected_knights;
optional<Point> 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);
}