various: implement fog of war; make enemy AI slightly more intelligent
Signed-off-by: NotAShelf <raf@notashelf.dev> Change-Id: I3e22dbc5e10690871255980c52a24c226a6a6964
This commit is contained in:
parent
4dfe52ae72
commit
f85d28e932
8 changed files with 151 additions and 21 deletions
11
src/main.c
11
src/main.c
|
|
@ -123,6 +123,9 @@ static void init_floor(GameState *gs, int floor_num) {
|
|||
}
|
||||
gs->player.floor = floor_num;
|
||||
|
||||
// Calculate initial visibility
|
||||
calculate_visibility(&gs->map, gs->player.position.x, gs->player.position.y);
|
||||
|
||||
// Spawn enemies
|
||||
enemy_spawn(gs->enemies, &gs->enemy_count, &gs->map, &gs->player, floor_num);
|
||||
|
||||
|
|
@ -217,6 +220,9 @@ static void post_action(GameState *gs, Enemy *attacked_enemy) {
|
|||
}
|
||||
}
|
||||
|
||||
// Update visibility based on player's new position
|
||||
calculate_visibility(&gs->map, gs->player.position.x, gs->player.position.y);
|
||||
|
||||
// Enemy turns - uses speed/cooldown system
|
||||
enemy_update_all(gs->enemies, gs->enemy_count, &gs->player, &gs->map);
|
||||
|
||||
|
|
@ -248,6 +254,7 @@ static int handle_stun_turn(GameState *gs) {
|
|||
if (gs->game_over)
|
||||
return 1;
|
||||
enemy_update_all(gs->enemies, gs->enemy_count, &gs->player, &gs->map);
|
||||
calculate_visibility(&gs->map, gs->player.position.x, gs->player.position.y);
|
||||
if (gs->player.hp <= 0)
|
||||
gs->game_over = 1;
|
||||
gs->last_message = "You are stunned!";
|
||||
|
|
@ -550,8 +557,8 @@ static void game_loop(void) {
|
|||
cam.offset = (Vector2){(float)gs.shake_x, (float)gs.shake_y};
|
||||
BeginMode2D(cam);
|
||||
render_map(&gs.map);
|
||||
render_items(gs.items, gs.item_count);
|
||||
render_enemies(gs.enemies, gs.enemy_count);
|
||||
render_items(gs.items, gs.item_count, gs.map.visible);
|
||||
render_enemies(gs.enemies, gs.enemy_count, gs.map.visible);
|
||||
render_player(&gs.player);
|
||||
EndMode2D();
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue