From 3813fcb26864a66459958dcb97bea522596c85d9 Mon Sep 17 00:00:00 2001 From: Daanish Date: Thu, 26 Mar 2026 12:49:28 +0000 Subject: [PATCH] Refactor enemy movement logic for simplicity; adjust character sprite drawing position --- game/character.rb | 2 +- game/enemy/ai.rb | 29 ++--------------------------- 2 files changed, 3 insertions(+), 28 deletions(-) diff --git a/game/character.rb b/game/character.rb index 1534bc6..03784e4 100644 --- a/game/character.rb +++ b/game/character.rb @@ -129,7 +129,7 @@ class Character elapsed = Gosu.milliseconds / 1000.0 frame_index = ((elapsed * 7).floor) % 6 - @animations[@current_animation][frame_index].draw(sprite_x, sprite_y, sprite_y, 1.8, 1.8) + @animations[@current_animation][frame_index].draw(sprite_x, sprite_y, sprite_y + 30, 1.8, 1.8) return unless DEBUG diff --git a/game/enemy/ai.rb b/game/enemy/ai.rb index 743bb37..725f905 100644 --- a/game/enemy/ai.rb +++ b/game/enemy/ai.rb @@ -131,33 +131,8 @@ class EnemyAI dx = Gosu.offset_x(angle, SPEED) dy = Gosu.offset_y(angle, SPEED) - steps = SPEED.ceil - step_dx = dx / steps.to_f - step_dy = dy / steps.to_f - - steps.times do - moved_x = false - moved_y = false - - # Try X - @enemy.x += step_dx - if ($bus.get(:collides?, @enemy.rect) & [:wall, :object])&.any? - @enemy.x -= step_dx - else - moved_x = true - end - - # Try Y (independent — keeps full intent) - @enemy.y += step_dy - if ($bus.get(:collides?, @enemy.rect) & [:wall, :object])&.any? - @enemy.y -= step_dy - else - moved_y = true - end - - # If both failed, stop early - break unless moved_x || moved_y - end + @enemy.x += dx + @enemy.y += dy if $bus.get(:collides?, @enemy.rect)&.include?(:character) # Attack player