Files
i-mic-fps/lib/managers/input_mapper.rb

54 lines
1.2 KiB
Ruby

class IMICFPS
class InputMapper
@@keymap = {}
@@keys = Hash.new(false)
def self.keydown(id)
@@keys[id] = true
end
def self.keyup(id)
@@keys[id] = false
end
def self.get(category, action)
key = @@keymap.dig(category, action)
end
def self.set(category, action, key)
raise "category must be a symbol" unless category.is_a?(Symbol)
raise "action must be a symbol" unless action.is_a?(Symbol)
raise "key must be a whole number or Array of whole numbers, got #{key}" unless key.is_a?(Integer) || key.is_a?(Array)
@@keymap[category] ||= {}
warn "InputMapper.set(:#{category}, :#{action}) is already defined as #{@@keymap[category][action]}" if @@keymap[category][action]
@@keymap[category][action] = key
end
def self.down?(category, action)
keys = get(category, action)
if keys.is_a?(Array)
keys.detect do |key|
@@keys[key]
end
else
@@keys[keys]
end
end
def self.is?(category, action, query_key)
keys = get(category, action)
if keys.is_a?(Array)
keys.detect do |key|
query_key == key
end
else
query_key == keys
end
end
end
end