summaryrefslogtreecommitdiffhomepage
path: root/camera.rb
diff options
context:
space:
mode:
authorrealtradam <[email protected]>2021-01-19 18:55:59 -0500
committerrealtradam <[email protected]>2021-01-19 18:55:59 -0500
commit344daa131d2343283e9e33e454b328f3e233f6b4 (patch)
tree1a10595dc9dc00e828a2990e73f40f2ddb7324e1 /camera.rb
downloadruby2d-camera-old-344daa131d2343283e9e33e454b328f3e233f6b4.tar.gz
ruby2d-camera-old-344daa131d2343283e9e33e454b328f3e233f6b4.zip
initial
Diffstat (limited to 'camera.rb')
-rw-r--r--camera.rb65
1 files changed, 65 insertions, 0 deletions
diff --git a/camera.rb b/camera.rb
new file mode 100644
index 0000000..7e93f7e
--- /dev/null
+++ b/camera.rb
@@ -0,0 +1,65 @@
+
+class Camera
+
+ def self.elasticity
+ @elasticity ||= 1
+ end
+
+ def self.elasticity= speed
+ @elasticity = speed
+ end
+
+ def self.follow item
+ self.move_to((item.x - (Window.width / 2))/self.elasticity,
+ (item.y - (Window.height / 2))/self.elasticity)
+ end
+
+ def self.objects
+ @objects ||= []
+ end
+
+ def self.<< item
+ unless self.objects.include?(item)
+ self.objects.push(item)
+ end
+ end
+
+ def self.add item
+ self << item
+ end
+
+ def self.remove item
+ if self.objects.include?(item)
+ self.objects.delete(item)
+ end
+ end
+
+
+ def self.move_by(x,y)
+ self.camera_position[0] += x
+ self.camera_position[1] += y
+ objects.each do |object|
+ object.x -= x
+ object.y -= y
+ end
+ end
+ def self.move_to(x,y)
+ self.camera_position = [x+camera_position[0],y+camera_position[1]]
+ objects.each do |object|
+ object.x -= x
+ object.y -= y
+ end
+ end
+
+ def self.camera_position
+ @camera_position ||= [0,0]
+ end
+
+ private
+
+ def self.camera_position= array
+ @camera_position = array
+ end
+
+
+end