| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162 |
- #pragma once
- #include "engine/engine.h"
- #include <game/world.h>
- #include <game/level.h>
- #include <game/enemy.h>
- #include "flip_world.h"
- #include "flip_storage/storage.h"
- #define PLAYER_COLLISION_VERTICAL 5
- #define PLAYER_COLLISION_HORIZONTAL 5
- typedef enum
- {
- PLAYER_IDLE,
- PLAYER_MOVING,
- PLAYER_ATTACKING,
- PLAYER_ATTACKED,
- PLAYER_DEAD,
- } PlayerState;
- typedef enum
- {
- PLAYER_UP,
- PLAYER_DOWN,
- PLAYER_LEFT,
- PLAYER_RIGHT
- } PlayerDirection;
- typedef struct
- {
- PlayerDirection direction; // direction the player is facing
- PlayerState state; // current state of the player
- Vector start_position; // starting position of the player
- Sprite *sprite_right; // player sprite looking right
- Sprite *sprite_left; // player sprite looking left
- int8_t dx; // x direction
- int8_t dy; // y direction
- uint32_t xp; // experience points
- uint32_t level; // player level
- uint32_t health; // player health
- uint32_t strength; // player strength
- float attack_timer; // Cooldown duration between attacks
- float elapsed_attack_timer; // Time elapsed since the last attack
- } PlayerContext;
- typedef struct
- {
- PlayerContext *player_context;
- Level *levels[10];
- Entity *enemies[2];
- Entity *players[1];
- GameKey user_input;
- float fps;
- int level_count;
- int enemy_count;
- int current_level;
- } GameContext;
- extern const EntityDescription player_desc;
- void player_spawn(Level *level, GameManager *manager);
- // Get game context: GameContext* game_context = game_manager_game_context_get(manager);
|