From 3c6267d6452fa47c84791e82008a74e76764ce1c Mon Sep 17 00:00:00 2001 From: realtradam Date: Sun, 25 Apr 2021 19:47:41 -0400 Subject: Camera automatically removes nil objects --- house.rb | 1 + lib/camera/camera.rb | 14 ++++++++++++-- run.rb | 2 +- 3 files changed, 14 insertions(+), 3 deletions(-) diff --git a/house.rb b/house.rb index 1da0d58..6d309fa 100644 --- a/house.rb +++ b/house.rb @@ -82,6 +82,7 @@ class House @objects.each do |item| Camera.remove item item.remove + puts item end end diff --git a/lib/camera/camera.rb b/lib/camera/camera.rb index 6a6dd3d..7079d56 100644 --- a/lib/camera/camera.rb +++ b/lib/camera/camera.rb @@ -65,8 +65,18 @@ module Camera # Redraw all objects that # are tracked by the Camera - def self.redraw - objects.each(&:redraw) + def self.redraw(auto_purge: true) + if auto_purge + objects.each do |item| + if item.nil? + objects.delete(obj) + else + item.redraw + end + end + else + objects.each(&:redraw) + end end # Variables changing Camera properties diff --git a/run.rb b/run.rb index 5197978..30881df 100644 --- a/run.rb +++ b/run.rb @@ -164,7 +164,7 @@ update do if !@scene_transition_into && !@scene_transition_out Camera.zoom += ((-[Math.sqrt(((@player.x + (@player.width / 2) - Camera.x)**2) + ((@player.y + (@player.width / 2) - Camera.y)**2)), 350].min * 0.004) + 2 - Camera.zoom) * 0.25 Camera.x += (@player.x + (@player.width / 2) - Camera.x) * 0.025 - Camera.y += (@player.y + (@player.height / 2)- Camera.y) * 0.025 + Camera.y += (@player.y + (@player.height / 2) - Camera.y) * 0.025 elsif @scene_transition_into if Camera.zoom < 250 Camera.zoom *= 1.05 -- cgit v1.2.3