; hl: actor ptr
act_spawn_projectile_pistol_player:
ld a, ACT_T_PISTOL_BULLET
- ld [hl+], a ; write type
+ ld [hl], a ; write type
ld de, act_pos_y
add hl, de
; hl = new pos y
+ ld a, [player+act_pos_y]
+ ld [hl+], a
+
+ ld a, [player+act_pos_x]
+ add a, 4
+ ld [hl+], a
+
ret
; updates a simple pistol projectile
; inputs:
; de: actor ptr
act_projectile_pistol_update:
- ret
+ ld hl, act_pos_y
+ add hl, de
+
+ ld a, [hl]
+ dec a
+ cp a, 0xFF
+ jp z, @despawn
+ ld [hl+], a
+
+ ; a = y pos
+ ld b, a
+ ld a, [hl]
+ ld c, a ; c = x pos
+
+ push de
+
+ ld a, RF_PLAYER
+ ld hl, tmp_rect
+ call actor_write_default_collider
+
+ ; check enemy collision
+ ; TODO: if player projectile check enemies, otherwise
+ ; check player
+ pop de
+ push de
+
+ ld b, DIRUP
+ ld a, RF_ENEMY | RF_WALL
+ ld hl, actors_enemy
+ ld c, ACTS_ENEMY
+ call actor_test_movement
+ pop de
+ cp a, 1
+ jr z, @collided REL
+
+ ret
+
+@collided:
+ push de
+ call actor_col_res
+ pop de
+@despawn:
+ jp actor_despawn
+
+
; draws a pistol projectile
; inputs:
; de: actor
ld a, 1
call oamalloc
pop de
-
+
ld b, PISTOL_SPRITE
ld c, 0
ld a, 0