summaryrefslogtreecommitdiffhomepage
path: root/src/helper.rb
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