From: Lukas Krickl Date: Fri, 23 Jan 2026 10:10:20 +0000 (+0100) Subject: player: Added map redraw flag X-Git-Url: https://git.krickl.dev/?a=commitdiff_plain;h=36d6e2b0d027f57d5619f7dd310fb3879ceafbd6;p=gbrg%2F.git player: Added map redraw flag --- diff --git a/src/defs.s b/src/defs.s index e393f1a..dbc8f34 100644 --- a/src/defs.s +++ b/src/defs.s @@ -43,6 +43,10 @@ #define RENDER_BUF_H 14 #define RENDER_BUF_TILES (RENDER_BUF_W * RENDER_BUF_H) + ; draw flags +.se 1 +.de DRAW_F_REDRAW_MAP, 1 + ; actor type enum .se 0 .de ACT_T_NULL, 1 diff --git a/src/player.s b/src/player.s index f321b40..0e10116 100644 --- a/src/player.s +++ b/src/player.s @@ -82,6 +82,8 @@ player_update: call player_handle_move + call player_need_map_redraw + ret ; draws player @@ -262,6 +264,18 @@ player_handle_move: call player_collided @not_down: ret + + ; checks if a map redraw is needed +player_need_map_redraw: + ld a, [draw_flags] + and a, DRAW_F_REDRAW_MAP + call nz, map_full_draw + + ld a, [draw_flags] + and a, ~DRAW_F_REDRAW_MAP & 0xFF + ld [draw_flags], a + + ret ; code to run when player has collided player_collided: @@ -301,14 +315,19 @@ player_collided: ld a, TT_ROOM_END ld [de], a - call map_full_draw + ld a, [draw_flags] + or a, DRAW_F_REDRAW_MAP + ld [draw_flags], a call player_end_turn ret ; code to run when player has moved player_moved: - call map_full_draw call player_end_turn + + ld a, [draw_flags] + or a, DRAW_F_REDRAW_MAP + ld [draw_flags], a ret ; ends the current turn diff --git a/src/wram.s b/src/wram.s index 4ef3fa4..8f0dfa6 100644 --- a/src/wram.s +++ b/src/wram.s @@ -45,6 +45,9 @@ demo_inputs: .adv 2 ; gameplay control flags game_flags: .adv 1 + + ; flags for drawing the screen +draw_flags: .adv 1 ; if 0 == player can perform actions ; if 1 == all other actors can perform actions