dw act_nop
dw player_update_and_draw
dw act_guard_update_and_draw
+ dw act_nop
+ dw act_nop
+ dw act_projectile_pistol_update_and_draw
; called when an actor is spawned
; via a map object
dw act_nop
dw act_nop
dw act_guard_init
+ dw act_nop
+ dw act_nop
+ dw act_nop
actor_collision_res_table:
dw act_nop
dw player_col_res
dw act_guard_col_res
+ dw act_nop
+ dw act_nop
+ dw act_projectile_pistol_col_res
; inits an actors
; inputs:
; collision resolution between guard and another actor
; inputs:
- ; de: even origin actor
+ ; de: event origin actor
; bc: guard
act_guard_col_res:
ld hl, act_hp
call player_try_move
@not_right:
+ ld b, BTNA
+ input_just
+ jr z, @not_a REL
+ call player_shoot
+@not_a:
+
@direction_done:
; write collider for this frame
ld a, [player+act_pos_y]
; shoots the player's current weapon
player_shoot:
+ ; TODO: check player curr weapon
+
+ call actor_try_add
+ ld a, h
+ or a, l
+ ret z
+
+ call act_spawn_projectile_pistol_player
ret
; combination of update and draw call
--- /dev/null
+
+#define PISTOL_SPRITE 0x82
+
+ ; spawns a pistol projectile for player
+ ; inputs:
+ ; hl: actor ptr
+act_spawn_projectile_pistol_player:
+ ld a, ACT_T_PISTOL_BULLET
+ ld [hl+], a ; write type
+
+ ld de, act_pos_y
+ add hl, de
+ ; hl = new pos y
+
+
+ ret
+
+ ; updates a simple pistol projectile
+ ; inputs:
+ ; de: actor ptr
+act_projectile_pistol_update:
+ ret
+
+ ; draws a pistol projectile
+ ; inputs:
+ ; de: actor
+act_projectile_pistol_draw:
+ push de
+ ld a, 1
+ call oamalloc
+ pop de
+
+ ld b, PISTOL_SPRITE
+ ld c, 0
+ ld a, 0
+ jp actor_draw
+
+ ; updates and draws projectile
+ ; for pistosl
+act_projectile_pistol_update_and_draw:
+ push de
+ call act_projectile_pistol_update
+ pop de
+ jp act_projectile_pistol_draw
+
+ ; collision resolution for pistol projectile
+ ; inputs:
+ ; de: event origin actor
+ ; bc: projectile
+act_projectile_pistol_col_res:
+ ret