From c1476cb451e93a54df8521ad5572732539f345dd Mon Sep 17 00:00:00 2001 From: realtradam Date: Mon, 25 Jan 2021 00:09:51 -0500 Subject: finished implementing quads --- animator.rb | 2 +- camera.rb | 178 ++++++------------------------------------------- quad_camera_tracker.rb | 173 +++++++++++++++++++++++++++++++++++++++++++++++ run.rb | 35 ++++++---- 4 files changed, 217 insertions(+), 171 deletions(-) create mode 100644 quad_camera_tracker.rb diff --git a/animator.rb b/animator.rb index 94f7770..0d713b1 100644 --- a/animator.rb +++ b/animator.rb @@ -15,7 +15,7 @@ class AnimatedSquare attr_writer :speed def speed - @speed ||= (1..5).to_a.sample + @speed ||= (0..5).to_a.sample end def axis diff --git a/camera.rb b/camera.rb index 0044794..c361806 100644 --- a/camera.rb +++ b/camera.rb @@ -1,158 +1,14 @@ # frozen_string_literal: true +require 'ruby2d' +require_relative 'quad_camera_tracker' + # Simulates a moving camera by manipulating objects it knows class Camera # Is added to quads to manage how they show and modify # it should convert or undo the camera modification # such that it is as if the camera wasnt there and everything # is relative to the origin - module QuadCameraTracker - def update(x, y) - @x1 -= x - @x2 -= x - @x3 -= x - @x4 -= x - @y1 -= y - @y2 -= y - @y3 -= y - @y4 -= y - end - - def x - @x ||= 0 - end - - def x=(x) - diff = @x - x - self.x1 += diff - self.x2 += diff - self.x3 += diff - self.x4 += diff - @x = x - end - - def y - @y ||= 0 - end - - def y=(y) - diff = @y - y - self.y1 += diff - self.y2 += diff - self.y3 += diff - self.y4 += diff - @y = y - end - - def size - @size ||= 1 - end - - def size=(size) - # should resize based on the top left point - # offset rotation to shape - end - - def x1 - (@x1 + x) / Camera.zoom_level + Camera.camera_position[0] - # undo rotation/translation/zoom - end - - def x1=(x1) - @x1 = ((x1 + x) - Camera.camera_position[0]) * Camera.zoom_level - # add rotation level - # apply rotation/translation/zoom then pass to super - end - - def y1 - (@y1 + y) / Camera.zoom_level + Camera.camera_position[1] - # undo rotation/translation/zoom - end - - def y1=(y1) - @y1 = ((y1 + y) - Camera.camera_position[1]) * Camera.zoom_level - # add rotation level - # apply rotation/translation/zoom then pass to super - end - - def x2 - (@x2 + x) / Camera.zoom_level + Camera.camera_position[0] - # undo rotation/translation/zoom - end - - def x2=(x2) - @x2 = ((x2 + x) - Camera.camera_position[0]) * Camera.zoom_level - # add rotation level - # apply rotation/translation/zoom then pass to super - end - - def y2 - (@y2 + y) / Camera.zoom_level + Camera.camera_position[1] - # undo rotation/translation/zoom - end - - def y2=(y2) - @y2 = ((y2 + y) - Camera.camera_position[1]) * Camera.zoom_level - # add rotation level - # apply rotation/translation/zoom then pass to super - end - - def x3 - (@x3 + x) / Camera.zoom_level + Camera.camera_position[0] - # undo rotation/translation/zoom - end - - def x3=(x3) - @x1 = ((x3 + x) - Camera.camera_position[0]) * Camera.zoom_level - # add rotation level - # apply rotation/translation/zoom then pass to super - end - - def y3 - (@y3 + y) / Camera.zoom_level + Camera.camera_position[1] - # undo rotation/translation/zoom - end - - def y3=(y3) - @y3 = ((y3 + y) - Camera.camera_position[1]) * Camera.zoom_level - # add rotation level - # apply rotation/translation/zoom then pass to super - end - - def x4 - (@x4 + x) / Camera.zoom_level + Camera.camera_position[0] - # undo rotation/translation/zoom - end - - def x4=(x4) - @x4 = ((x4 + x) - Camera.camera_position[0]) * Camera.zoom_level - # add rotation level - # apply rotation/translation/zoom then pass to super - end - - def y4 - (@y4 + y) / Camera.zoom_level + Camera.camera_position[1] - # undo rotation/translation/zoom - end - - def y4=(y4) - @y4 = ((y4 + y) - Camera.camera_position[1]) * Camera.zoom_level - # add rotation level - # apply rotation/translation/zoom then pass to super - end - - def rotation_degrees - @rotation_degrees ||= 0 - end - - def rotate_degrees_by(degrees) - # offset rotation to shape - end - - def rotate_degree_to(degrees) - # set rotation - end - end class <