diff options
| author | realtradam <[email protected]> | 2021-08-07 20:42:42 -0400 |
|---|---|---|
| committer | realtradam <[email protected]> | 2021-08-07 20:42:42 -0400 |
| commit | f338746d142fc742a31268ba1129fd83d750d07f (patch) | |
| tree | 21d2c7d19edfb79058e58afedd07579f43c8fc77 /lib/ruby2d/camera | |
| parent | 6a68433c56b44958eba9bea9a73a78e1f478e630 (diff) | |
| download | ruby2d-camera-f338746d142fc742a31268ba1129fd83d750d07f.tar.gz ruby2d-camera-f338746d142fc742a31268ba1129fd83d750d07f.zip | |
added text
Diffstat (limited to 'lib/ruby2d/camera')
| -rw-r--r-- | lib/ruby2d/camera/text.rb | 49 |
1 files changed, 49 insertions, 0 deletions
diff --git a/lib/ruby2d/camera/text.rb b/lib/ruby2d/camera/text.rb new file mode 100644 index 0000000..21c9e1b --- /dev/null +++ b/lib/ruby2d/camera/text.rb @@ -0,0 +1,49 @@ +# frozen_string_literal: true + +module Ruby2D + module Camera + # Wraps existing variables as well as adding new methods + # so that it can be handled by the Camera Module + # TODO: note that text could not be resized at the current iteration + # of Ruby2D so the math needs to be changed compensate for this. + # When Ruby2D gets updated to allow text resizing the math will need + # to be corrected again(see image_wrapper.rb for reference, that has + # math that allows for resizing) + class Text < Ruby2D::Text + @center = false + + # Recalculates real coordiantes + # Use after changing variables + def _draw + angle = Camera.angle * (Math::PI / 180) + half_width = Window.width * 0.5 + half_height = Window.height * 0.5 + if center + offset_y = y + (Camera.zoom / 2) + offset_x = x + (Camera.zoom / 2) + else + offset_x = x + (width / Camera.zoom / 2) + offset_y = y + (height / Camera.zoom / 2) + end + temp_x = (((offset_x - Camera.x) * Math.cos(angle)) - ((offset_y - Camera.y) * Math.sin(angle))) \ + * Camera.zoom + half_width - (width / 2) + temp_y = (((offset_x - Camera.x) * Math.sin(angle)) + ((offset_y - Camera.y) * Math.cos(angle))) \ + * Camera.zoom + half_height - (height / 2) + temp_rotate = rotate + Camera.angle + # Workaround for resizing text + temp_size = size# * Camera.zoom + self.size *= Camera.zoom + self.draw(x: temp_x, y: temp_y, + rotate: temp_rotate, + color: self.color) + self.size = temp_size + end + + def initialize(opts = {}) + super(opts) + Ruby2D::Camera << self + self.remove + end + end + end +end |
