summaryrefslogtreecommitdiffhomepage
path: root/src/helper.rb
diff options
context:
space:
mode:
authorrealtradam <[email protected]>2022-01-22 23:34:22 -0500
committerrealtradam <[email protected]>2022-01-22 23:34:22 -0500
commit4615a4617499984ede6b16832e4e03578903e0a2 (patch)
treeeb60ac6b98b31bcea42592693cd1b094934721fa /src/helper.rb
parent2a0220c3dbafaca3f1b711cb77d49bb29f0e0c2e (diff)
downloadorc-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.rb42
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