Sha256: e47b3b0b27b559610099dfe362dd9f8463f7b5065bdd22e2c7d8f982c1ffd242

Contents?: true

Size: 1.08 KB

Versions: 1

Compression:

Stored size: 1.08 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.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.2 lib/engine/input.rb