Class: Ruby2D::Camera::Text

Inherits:
Text
  • Object
show all
Defined in:
lib/ruby2d/camera/text.rb

Overview

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)

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(text, opts = {}) ⇒ Text

Returns a new instance of Text.



43
44
45
46
47
# File 'lib/ruby2d/camera/text.rb', line 43

def initialize(text, opts = {})
  super(text, opts)
  Ruby2D::Camera << self
  Window.remove(self)
end

Instance Attribute Details

#centerObject

Returns the value of attribute center.



62
63
64
# File 'lib/ruby2d/camera/text.rb', line 62

def center
  @center
end

Instance Method Details

#_drawObject

Recalculates real coordiantes Use after changing variables



15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
# File 'lib/ruby2d/camera/text.rb', line 15

def _draw
  return if @hide

  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
  # TODO: resizing doesnt work at all even with workaround
  temp_size = size # * Camera.zoom
  self.size *= Camera.zoom
  draw(x: temp_x, y: temp_y,
       rotate: temp_rotate,
       color: [color.r, color.g, color.b, color.a])
  self.size = temp_size
end

#addObject



58
59
60
# File 'lib/ruby2d/camera/text.rb', line 58

def add
  @hide = false
end

#removeObject



54
55
56
# File 'lib/ruby2d/camera/text.rb', line 54

def remove
  @hide = true
end

#z=(z) ⇒ Object



49
50
51
52
# File 'lib/ruby2d/camera/text.rb', line 49

def z=(z)
  super(z)
  Ruby2D::Camera._sort_by_z
end