Sha256: 9ee5614ff3f0688f9178621e1337c0b6df072c22d2459e5eaeb4c6b091357e58

Contents?: true

Size: 1.09 KB

Versions: 1

Compression:

Stored size: 1.09 KB

Contents

# frozen_string_literal: true

module Engine
  class Input
    def self.key?(key)
      keys[key] == :down || keys[key] == :held
    end

    def self.key_down?(key)
      keys[key] == :down
    end

    def self.key_up?(key)
      keys[key] == :up
    end

    def self._on_key_down(key)
      keys[key] = :down
      if key == GLFW::KEY_ESCAPE
        Engine.close
      end

      if key == GLFW::KEY_BACKSPACE
        Engine::Debugging.breakpoint { binding.pry }
        # Engine.breakpoint { debugger }
      end

      if key == GLFW::KEY_F
        Engine::Window.toggle_full_screen
      end
    end

    def self._on_key_up(key)
      keys[key] = :up
    end

    def self.key_callback(key, action)
      if action == GLFW::PRESS
        _on_key_down(key)
      elsif action == GLFW::RELEASE
        _on_key_up(key)
      end
    end

    def self.update_key_states
      keys.each do |key, state|
        if state == :down
          keys[key] = :held
        elsif state == :up
          keys.delete(key)
        end
      end
    end

    private

    def self.keys
      @keys ||= {}
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
ruby_rpg-0.0.3 lib/engine/input.rb