summaryrefslogtreecommitdiffhomepage
path: root/camera.rb
diff options
context:
space:
mode:
authorrealtradam <[email protected]>2021-01-21 13:44:15 -0500
committerrealtradam <[email protected]>2021-01-21 13:44:15 -0500
commit463b68e50e0c703f8e171168dc5e771daf1d375c (patch)
tree1e6bbbc7cb336d76e0f0a32d680f73edbded743e /camera.rb
parentadaba8c8b299f5ad9e5c33965e42a30ec65c77d6 (diff)
downloadruby2d-camera-old-463b68e50e0c703f8e171168dc5e771daf1d375c.tar.gz
ruby2d-camera-old-463b68e50e0c703f8e171168dc5e771daf1d375c.zip
linted code
Diffstat (limited to 'camera.rb')
-rw-r--r--camera.rb83
1 files changed, 37 insertions, 46 deletions
diff --git a/camera.rb b/camera.rb
index be1e3f0..b3cd116 100644
--- a/camera.rb
+++ b/camera.rb
@@ -1,87 +1,78 @@
+# frozen_string_literal: true
+# Simulates a moving camera by manipulating objects it knows
class Camera
+ class <<self
+ attr_writer :elasticity
+
+ private
+
+ attr_writer :camera_position, :zoom_level
+ end
+
+ def self.elasticity
+ @elasticity ||= 1
+ end
+
+ def self.camera_position
+ @camera_position ||= [0, 0]
+ end
def self.zoom_level
@zoom_level ||= 1
end
- def self.zoom_by zoom
+ def self.zoom_by(zoom)
objects.each do |object|
object.size *= zoom
object.x *= zoom
object.y *= zoom
end
- self.move_by(Window.width/2 * (zoom-1),Window.height/2 * (zoom-1))
+ move_by(Window.width / 2 * (zoom - 1),
+ Window.height / 2 * (zoom - 1))
self.zoom_level *= zoom
end
- def self.zoom_to zoom
- self.zoom_by(zoom/self.zoom_level)
- end
-
- def self.elasticity
- @elasticity ||= 1
- end
-
- def self.elasticity= speed
- @elasticity = speed
+ def self.zoom_to(zoom)
+ zoom_by(zoom / self.zoom_level)
end
- def self.follow item
- self.move_to((item.x - (Window.width / 2))/self.elasticity,
- (item.y - (Window.height / 2))/self.elasticity)
+ def self.follow(item)
+ move_to((item.x - (Window.width / 2)) / elasticity,
+ (item.y - (Window.height / 2)) / elasticity)
end
def self.objects
@objects ||= []
end
- def self.<< item
- unless self.objects.include?(item)
- self.objects.push(item)
- end
+ def self.<<(item)
+ objects.push(item) unless objects.include?(item)
end
- def self.add item
+ def self.add(item)
self << item
end
- def self.remove item
- if self.objects.include?(item)
- self.objects.delete(item)
- end
+ def self.remove(item)
+ objects.delete(item) if objects.include?(item)
end
-
- def self.move_by(x,y)
- self.camera_position[0] += x
- self.camera_position[1] += y
+ def self.move_by(x, y)
+ camera_position[0] += x
+ 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]]
+
+ 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
-
- def self.zoom_level= value
- @zoom_level = value
- end
-
-
end