diff options
| author | realtradam <[email protected]> | 2021-01-21 13:44:15 -0500 |
|---|---|---|
| committer | realtradam <[email protected]> | 2021-01-21 13:44:15 -0500 |
| commit | 463b68e50e0c703f8e171168dc5e771daf1d375c (patch) | |
| tree | 1e6bbbc7cb336d76e0f0a32d680f73edbded743e /camera.rb | |
| parent | adaba8c8b299f5ad9e5c33965e42a30ec65c77d6 (diff) | |
| download | ruby2d-camera-old-463b68e50e0c703f8e171168dc5e771daf1d375c.tar.gz ruby2d-camera-old-463b68e50e0c703f8e171168dc5e771daf1d375c.zip | |
linted code
Diffstat (limited to 'camera.rb')
| -rw-r--r-- | camera.rb | 83 |
1 files changed, 37 insertions, 46 deletions
@@ -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 |
