summaryrefslogtreecommitdiffhomepage
path: root/input.rb
diff options
context:
space:
mode:
Diffstat (limited to 'input.rb')
-rw-r--r--input.rb55
1 files changed, 55 insertions, 0 deletions
diff --git a/input.rb b/input.rb
new file mode 100644
index 0000000..22d1bee
--- /dev/null
+++ b/input.rb
@@ -0,0 +1,55 @@
+require 'ruby2d'
+
+class Input
+ @down = {}
+ @held = {}
+ @up = {}
+
+ def self.down(char, toggle_on: false)
+ #puts 'work' if char == 'left' if toggle_on
+ if toggle_on
+ @down[char] = true
+ else
+ !@down[char].nil?
+ end
+ end
+
+ def self.held(char, toggle_on: false)
+ if toggle_on
+ @held[char] = true
+ else
+ !@held[char].nil?
+ end
+ end
+
+ def self.up(char, toggle_on: false)
+ if toggle_on
+ @up[char] = true
+ else
+ !@up[char].nil?
+ end
+ end
+
+ class <<self
+ alias pressed down
+ alias released up
+ end
+
+ def self.any(char)
+ !@pressed[char].nil? || !@held[char].nil? || !@released[char].nil?
+ end
+
+ def self.reset
+ @down = {}
+ @held = {}
+ @up = {}
+ end
+end
+
+on :mouse do |event|
+ Input.public_send(event.type, event.button.to_s, toggle_on: true) unless event.button.nil?
+end
+
+on :key do |event|
+ Input.public_send(event.type, event.key, toggle_on: true)
+end