From: Lukas Krickl Date: Tue, 23 Sep 2025 15:55:55 +0000 (+0200) Subject: rectangle collision: fixed rect to rect collision for actors X-Git-Url: https://git.krickl.dev/?a=commitdiff_plain;h=f36495835a62e114dc54557b4a383080833f3e0d;p=gbrg%2F.git rectangle collision: fixed rect to rect collision for actors --- diff --git a/src/actor.s b/src/actor.s index f64611c..d292de9 100644 --- a/src/actor.s +++ b/src/actor.s @@ -139,6 +139,7 @@ actor_despawn: actor_write_default_collider: ld [hl+], a ; mask ld a, b + add a, 16 ld [hl+], a ; y pos ld a, c ld [hl+], a ; x pos @@ -165,6 +166,7 @@ actor_write_default_collider: pop bc pop hl ; hl = test rect + BREAK call rect_point_test cp a, 1 jp z, $2 @@ -197,8 +199,8 @@ actor_test_movement: actor_test_movement_corner rect_bl, @rect_collision actor_test_movement_corner rect_br, @rect_collision - ; actor_test_movement_corner rect_tl, @rect_collision - ; actor_test_movement_corner rect_tr, @rect_collision + actor_test_movement_corner rect_tl, @rect_collision + actor_test_movement_corner rect_tr, @rect_collision @skip_rect: add hl, de ; next rect (de = r_size) dec b diff --git a/src/debug.s b/src/debug.s index 48af253..644451f 100644 --- a/src/debug.s +++ b/src/debug.s @@ -102,6 +102,37 @@ dbg_rect_draw: ld e, a ld a, [dbg_rect+1] ld d, a + + call dbg_rect_draw_ptr + + ; always draw player rectangle + ld de, player+act_rect + call dbg_rect_draw_ptr + + ret + +@rect_draw_cycle: + ld a, [dbg_rect] + ld l, a + ld a, [dbg_rect+1] + ld h, a + ld de, r_size + add hl, de + + ; next rectangle + ld a, l + ld [dbg_rect], a + ld a, h + ld [dbg_rect+1], a + + ld a, 16 + ld [dbg_delay], a + ret + + ; draws a rectangle from ptr + ; inputs: + ; de: rectangle +dbg_rect_draw_ptr: ; de = rectangle ptr @@ -207,20 +238,3 @@ dbg_rect_draw: ret @rect_not_alloced: ret -@rect_draw_cycle: - ld a, [dbg_rect] - ld l, a - ld a, [dbg_rect+1] - ld h, a - ld de, r_size - add hl, de - - ; next rectangle - ld a, l - ld [dbg_rect], a - ld a, h - ld [dbg_rect+1], a - - ld a, 16 - ld [dbg_delay], a - ret diff --git a/src/map.s b/src/map.s index 0de607c..4388b72 100644 --- a/src/map.s +++ b/src/map.s @@ -239,6 +239,9 @@ l1_objs: ; rectangle at y/x 0/0 with height 32 width 64 modef MOT_RECT, 0, 9, 0x0804 + ; center rectangle + ; modef MOT_RECT, 0, 9, 0x8604 + ; rectangle at y/x 0/0 with height 32 width 48 modef MOT_RECT, 0, 9, 0xE604 diff --git a/src/rectangle.s b/src/rectangle.s index 1ccb4d3..1cc2744 100644 --- a/src/rectangle.s +++ b/src/rectangle.s @@ -178,7 +178,7 @@ rect_point_test: ld a, c ; compare x cp a, e jp c, @no_collision - + ; top right push hl call rect_tr