blob: 40578e5f501bdd6d5d377b2bdbbf39f68fe695a6 (
plain)
1
2
3
4
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
62
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
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
|
# frozen_string_literal: true
module Camera
# Wraps existing variables as well as adding new methods
# so that it can be handled by the Camera Module
module SquareWrapped
# Recalculates real coordiantes
# Use after changing variables
def redraw
angle = Camera.angle * (Math::PI / 180)
half_width = Window.width * 0.5
half_height = Window.height * 0.5
@x1 = (((x + x1 - Camera.x) * Math.cos(angle)) - ((y + y1 - Camera.y) * Math.sin(angle))) * Camera.zoom + half_width
@y1 = (((x + x1 - Camera.x) * Math.sin(angle)) + ((y + y1 - Camera.y) * Math.cos(angle))) * Camera.zoom + half_height
@x2 = (((x + x2 - Camera.x) * Math.cos(angle)) - ((y + y2 - Camera.y) * Math.sin(angle))) * Camera.zoom + half_width
@y2 = (((x + x2 - Camera.x) * Math.sin(angle)) + ((y + y2 - Camera.y) * Math.cos(angle))) * Camera.zoom + half_height
@x3 = (((x + x3 - Camera.x) * Math.cos(angle)) - ((y + y3 - Camera.y) * Math.sin(angle))) * Camera.zoom + half_width
@y3 = (((x + x3 - Camera.x) * Math.sin(angle)) + ((y + y3 - Camera.y) * Math.cos(angle))) * Camera.zoom + half_height
@x4 = (((x + x4 - Camera.x) * Math.cos(angle)) - ((y + y4 - Camera.y) * Math.sin(angle))) * Camera.zoom + half_width
@y4 = (((x + x4 - Camera.x) * Math.sin(angle)) + ((y + y4 - Camera.y) * Math.cos(angle))) * Camera.zoom + half_height
end
#Methods for moving the shape
def x
@x ||= x1
end
def x=(x)
@x = x
end
def y
@y ||= y1
end
def y=(y)
@y = y
end
# Wrappers for the coordinates so that
# they are handled by the Camera instead
# and for ease of programming
def x1
@virtual_x1 ||= @x1
end
def x1=(x1)
@virtual_x1 = x1
end
def y1
@virtual_y1 ||= @y1
end
def y1=(y1)
@virtual_y1 = y1
end
def x2
@virtual_x2 ||= @x2
end
def x2=(x2)
@virtual_x2 = x2
end
def y2
@virtual_y2 ||= @y2
end
def y2=(y2)
@virtual_y2 = y2
end
def x3
@virtual_x3 ||= @x3
end
def x3=(x3)
@virtual_x3 = x3
end
def y3
@virtual_y3 ||= @y3
end
def y3=(y3)
@virtual_y3 = y3
end
def x4
@virtual_x4 ||= @x4
end
def x4=(x4)
@virtual_x4 = x4
end
def y4
@virtual_y4 ||= @y4
end
def y4=(y4)
@virtual_y4 = y4
end
def width
@width ||= 200
end
def width=(width)
self.x2 = width
self.x3 = width
@width = width
end
def height
@height ||= 100
end
def height=(height)
self.y3 = height
self.y4 = height
@height = height
end
def size
@size ||= 100
end
def size=(size)
@size = self.width = self.height = size
end
end
end
|