From: Lukas Krickl Date: Mon, 29 Sep 2025 09:24:31 +0000 (+0200) Subject: projectile: Added collision check for projectiles X-Git-Url: https://git.krickl.dev/?a=commitdiff_plain;h=48bf81168f2015d7e0d16ed1f0d358c939e8208f;p=gbrg%2F.git projectile: Added collision check for projectiles --- diff --git a/src/projectile.s b/src/projectile.s index 4a01712..922511b 100644 --- a/src/projectile.s +++ b/src/projectile.s @@ -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