call player_handle_move
+ call player_need_map_redraw
+
ret
; draws player
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:
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
; 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