Class: SpriteKit::Primitives

Inherits:
Object
  • Object
show all
Defined in:
mygame/lib/sprite_kit/primitives.rb

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Attribute Details

#created_buttonsObject

Returns the value of attribute created_buttons.



3
4
5
# File 'mygame/lib/sprite_kit/primitives.rb', line 3

def created_buttons
  @created_buttons
end

Class Method Details

.borders(rect, padding: nil, border_width: 1, color: { r: 0, b: 0, g: 0, a: 255 }) ⇒ Object



63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
# File 'mygame/lib/sprite_kit/primitives.rb', line 63

def self.borders(rect, padding: nil, border_width: 1, color: { r: 0, b: 0, g: 0, a: 255 })
  if padding && padding.is_a?(Numeric) && padding >= 0
    padding = {
      top: padding,
      right: padding,
      bottom: padding,
      left: padding
    }
  else
    padding = {
      top: 0,
      left: 0,
      right: 0,
      bottom: 0
    }
  end

  {
    top: {
      # top
      x: rect.x - padding.left,
      w: rect.w + padding.left + padding.right,
      y: rect.y + rect.h + padding.top - border_width,
      h: border_width,
      **color,
    },
    right: {
      # right
      x: rect.x + rect.w + padding.right - border_width,
      w: border_width,
      y: rect.y - padding.bottom,
      h: rect.h + padding.bottom + padding.top,
      **color,
    },
    bottom: {
      # bottom
      x: rect.x - padding.left,
      w: rect.w + padding.left + padding.right,
      y: rect.y - padding.bottom,
      h: border_width,
      **color,
    },
    left: {
      # left
      x: rect.x - padding.left,
      w: border_width,
      y: rect.y - padding.bottom,
      h: rect.h + padding.top + padding.bottom,
      **color,
    }
  }.each_value do |hash|
    hash[:primitive_marker] = :sprite
    hash[:path] = :pixel
  end
end

.button(text: nil, w: nil, h: nil, x: nil, y: nil, size_enum: nil, font: nil, padding: 0, border_width: 0) ⇒ Object



5
6
7
8
9
10
11
12
13
14
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
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
# File 'mygame/lib/sprite_kit/primitives.rb', line 5

def self.button(
  text: nil,
  w: nil,
  h: nil,
  x: nil,
  y: nil,
  size_enum: nil,
  font: nil,
  padding: 0,
  border_width: 0
)
  if !padding
    padding = 0
  end

  if padding.is_a?(Numeric)
    padding = {
      top: padding,
      right: padding,
      bottom: padding,
      left: padding
    }
  end

  if w == nil && h == nil
    w, h = GTK.calcstringbox(text, size_enum: size_enum || 0, font: font || nil)
    w += (border_width * 2) + padding.left + padding.right
    h += (border_width * 2) + padding.top + padding.bottom
  end

  rect = {
    w: w,
    h: h,
    x: 0,
    y: 0,
    primitive_marker: :sprite,
  }

  # create a label centered vertically and horizontally within the texture
  label = {
    x: x + border_width + padding.left,
    y: y + border_width + padding.bottom,
    text: text,
    size_enum: size_enum,
    anchor_x: 0,
    anchor_y: 0
  }.label!

  primitives = [
    label,
    *Primitives.borders(rect, border_width: border_width, padding: 0).values
  ]

  rect.primitives = primitives

  rect
end