projectile: Added collision check for projectiles
authorLukas Krickl <lukas@krickl.dev>
Mon, 29 Sep 2025 09:24:31 +0000 (11:24 +0200)
committerLukas Krickl <lukas@krickl.dev>
Mon, 29 Sep 2025 09:24:31 +0000 (11:24 +0200)
src/projectile.s

index 4a0171298bbc995f1661123544399c61630c1085..922511b1e9d0afb2b20b05387ecefc5a832d3102 100644 (file)
@@ -6,21 +6,72 @@
        ;               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
@@ -29,7 +80,7 @@ act_projectile_pistol_draw:
        ld a, 1
        call oamalloc
        pop de
-
+       
        ld b, PISTOL_SPRITE
        ld c, 0
        ld a, 0