blob: 020b2b967bbf32dbd01e04fabf340cc27c1c3a35 (
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
|
class Tileset
attr_accessor :texture
attr_writer :frames
def initialize(*source_recs, texture:)
source_recs.each do |rec|
self.frames.push rec
end
self.texture = texture
end
def rec
self.frames[self.frame.to_i]
end
def frame
@frame ||= 0
end
def frame=(var)
return @frame = 0 if frames.length.zero?
@frame = (var % frames.length)
end
def step(amount = 1)
self.frame += amount
end
def step_back(amount = 1)
self.frame -= amount
end
def frames
@frames ||= []
end
end
module Helper
class << self
def decelerate(velocity_cmp, movement_cmp)
velocity_mag = Math.sqrt((velocity_cmp.x**2) + (velocity_cmp.y**2))
# If going slower then deceleration
if velocity_mag <= (movement_cmp.deceleration * Rl.frame_time)
# Set to 0
velocity_cmp.x = 0
velocity_cmp.y = 0
else
velocity_x_mag = velocity_cmp.x / velocity_mag
velocity_y_mag = velocity_cmp.y / velocity_mag
# Add deceleration
velocity_cmp.x -= velocity_x_mag * movement_cmp.deceleration * Rl.frame_time
velocity_cmp.y -= velocity_y_mag * movement_cmp.deceleration * Rl.frame_time
end
true
end
end
end
|