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

45 lines
1.1 KiB
Ruby

class IMICFPS
class InputMapper
@@keymap = {}
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|
Gosu.button_down?(key)
end
else
Gosu.button_down?(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