diff options
| author | realtradam <[email protected]> | 2022-01-22 23:34:22 -0500 |
|---|---|---|
| committer | realtradam <[email protected]> | 2022-01-22 23:34:22 -0500 |
| commit | 4615a4617499984ede6b16832e4e03578903e0a2 (patch) | |
| tree | eb60ac6b98b31bcea42592693cd1b094934721fa /src/helper.rb | |
| parent | 2a0220c3dbafaca3f1b711cb77d49bb29f0e0c2e (diff) | |
| download | orc-arena-of-time-4615a4617499984ede6b16832e4e03578903e0a2.tar.gz orc-arena-of-time-4615a4617499984ede6b16832e4e03578903e0a2.zip | |
working movement and animation
Diffstat (limited to 'src/helper.rb')
| -rw-r--r-- | src/helper.rb | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/src/helper.rb b/src/helper.rb new file mode 100644 index 0000000..b925c12 --- /dev/null +++ b/src/helper.rb @@ -0,0 +1,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 |
