diff options
Diffstat (limited to 'lib')
| -rw-r--r-- | lib/ruby2d/application.rb | 4 | ||||
| -rw-r--r-- | lib/ruby2d/dsl.rb | 4 | ||||
| -rw-r--r-- | lib/ruby2d/window.rb | 7 |
3 files changed, 15 insertions, 0 deletions
diff --git a/lib/ruby2d/application.rb b/lib/ruby2d/application.rb index 5a91760..f2c74da 100644 --- a/lib/ruby2d/application.rb +++ b/lib/ruby2d/application.rb @@ -16,6 +16,10 @@ module Ruby2D::Application @@window.on(mouse: mouse, key: key, key_up: key_up, key_down: key_down, controller: controller, &proc) end + def on_key(&proc) + @@window.on_key(&proc) + end + def add(o) @@window.add(o) end diff --git a/lib/ruby2d/dsl.rb b/lib/ruby2d/dsl.rb index 431f83f..5c15c30 100644 --- a/lib/ruby2d/dsl.rb +++ b/lib/ruby2d/dsl.rb @@ -13,6 +13,10 @@ module Ruby2D::DSL Application.on(mouse: mouse, key: key, key_up: key_up, key_down: key_down, controller: controller, &proc) end + def on_key(&proc) + Application.on_key(&proc) + end + def update(&proc) Application.update(&proc) end diff --git a/lib/ruby2d/window.rb b/lib/ruby2d/window.rb index eddb833..28fd019 100644 --- a/lib/ruby2d/window.rb +++ b/lib/ruby2d/window.rb @@ -16,6 +16,7 @@ module Ruby2D @vsync = vsync @objects = [] @keys, @keys_up, @keys_down, @controller = {}, {}, {}, {} + @on_key_proc = Proc.new {} @update_proc = Proc.new {} end @@ -102,8 +103,14 @@ module Ruby2D end end + def on_key(&proc) + @on_key_proc = proc + true + end + def key_callback(key) key.downcase! + @on_key_proc.call(key) if @keys.has_key? key @keys[key].call end |
