blob: b925c12f0a78614f34d231bccdedc2a87675c0f9 (
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
|
# different states
# each state has a set of frames
# each state remembers what frame it was set it
# each frame has a rectangle for rendering, and a rectangle for a hitbox
class Tileset
attr_accessor :texture
attr_writer :frames
def initialize(*source_rects, texture:)
source_rects.each do |rect|
self.frames.push rect
end
self.texture = texture
end
def rect
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
|