mtd/Scripts/Resources/player_keymap.gd

177 lines
7.5 KiB
GDScript3
Raw Normal View History

2024-02-22 06:22:22 +11:00
class_name PlayerKeymap extends Resource
const SAVE_PATH: String = "user://keymap.tres"
@export var title: String
@export_category("Primary Bindings")
@export var move_forward: InputEvent
@export var move_backward: InputEvent
@export var move_left: InputEvent
@export var move_right: InputEvent
@export var jump: InputEvent
@export var sprint: InputEvent
@export var interact: InputEvent
@export var open_text_chat: InputEvent
@export var ready: InputEvent
@export var pause: InputEvent
@export var equip_card_in_gauntlet: InputEvent
@export var view_map: InputEvent
@export var fire1: InputEvent
@export var fire2: InputEvent
@export var select_next_card: InputEvent
@export var select_prev_card: InputEvent
@export_category("Secondary Bindings")
@export var secondary_move_forward: InputEvent
@export var secondary_move_backward: InputEvent
@export var secondary_move_left: InputEvent
@export var secondary_move_right: InputEvent
@export var secondary_jump: InputEvent
@export var secondary_sprint: InputEvent
@export var secondary_interact: InputEvent
@export var secondary_open_text_chat: InputEvent
@export var secondary_ready: InputEvent
@export var secondary_pause: InputEvent
@export var secondary_equip_card_in_gauntlet: InputEvent
@export var secondary_view_map: InputEvent
@export var secondary_fire1: InputEvent
@export var secondary_fire2: InputEvent
@export var secondary_select_next_card: InputEvent
@export var secondary_select_prev_card: InputEvent
func apply() -> void:
replace_action_event("Move Forward", move_forward, secondary_move_forward)
replace_action_event("Move Backward", move_backward, secondary_move_backward)
replace_action_event("Move Left", move_left, secondary_move_left)
replace_action_event("Move Right", move_right, secondary_move_right)
replace_action_event("Jump", jump, secondary_jump)
replace_action_event("Sprint", sprint, secondary_sprint)
replace_action_event("Interact", interact, secondary_interact)
replace_action_event("Open Text Chat", open_text_chat, secondary_open_text_chat)
replace_action_event("Ready", ready, secondary_ready)
replace_action_event("Pause", pause, secondary_pause)
replace_action_event("Equip In Gauntlet", equip_card_in_gauntlet, secondary_equip_card_in_gauntlet)
replace_action_event("View Map", view_map, secondary_view_map)
replace_action_event("Primary Fire", fire1, secondary_fire1)
replace_action_event("Secondary Fire", fire2, secondary_fire2)
replace_action_event("Select Next Card", select_next_card, secondary_select_next_card)
replace_action_event("Select Previous Card", select_prev_card, secondary_select_prev_card)
func replace_action_event(action_string: String, event: InputEvent, secondary_event: InputEvent) -> void:
InputMap.action_erase_events(action_string)
2024-02-22 06:22:22 +11:00
if event:
InputMap.action_add_event(action_string, event)
if secondary_event:
InputMap.action_add_event(action_string, secondary_event)
func set_primary_action_event(action_string: String, event: InputEvent) -> void:
var secondary_event: InputEvent
if InputMap.action_get_events(action_string).size() > 1:
secondary_event = InputMap.action_get_events(action_string)[1]
replace_action_event(action_string, event, secondary_event)
func set_secondary_action_event(action_string: String, event: InputEvent) -> void:
var primary_event: InputEvent
if InputMap.action_get_events(action_string).size() > 0:
primary_event = InputMap.action_get_events(action_string)[0]
replace_action_event(action_string, primary_event, event)
func append_input_map() -> void:
InputMap.action_add_event("Move Forward", move_forward)
InputMap.action_add_event("Move Backward", move_backward)
InputMap.action_add_event("Move Left", move_left)
InputMap.action_add_event("Move Right", move_right)
InputMap.action_add_event("Jump", jump)
InputMap.action_add_event("Sprint", sprint)
InputMap.action_add_event("Interact", interact)
InputMap.action_add_event("Open Text Chat", open_text_chat)
InputMap.action_add_event("Ready", ready)
InputMap.action_add_event("Pause", pause)
InputMap.action_add_event("Equip In Gauntlet", equip_card_in_gauntlet)
InputMap.action_add_event("View Map", view_map)
InputMap.action_add_event("Primary Fire", fire1)
InputMap.action_add_event("Secondary Fire", fire2)
InputMap.action_add_event("Select Next Card", select_next_card)
InputMap.action_add_event("Select Previous Card", select_prev_card)
2024-02-22 06:22:22 +11:00
func get_current_input_map() -> void:
move_forward = InputMap.action_get_events("Move Forward")[0]
2024-02-22 06:22:22 +11:00
if InputMap.action_get_events("Move Forward").size() > 1:
secondary_move_forward = InputMap.action_get_events("Move Forward")[1]
move_backward = InputMap.action_get_events("Move Backward")[0]
2024-02-22 06:22:22 +11:00
if InputMap.action_get_events("Move Backward").size() > 1:
secondary_move_backward = InputMap.action_get_events("Move Backward")[1]
move_left = InputMap.action_get_events("Move Left")[0]
2024-02-22 06:22:22 +11:00
if InputMap.action_get_events("Move Left").size() > 1:
secondary_move_left = InputMap.action_get_events("Move Left")[1]
move_right = InputMap.action_get_events("Move Right")[0]
2024-02-22 06:22:22 +11:00
if InputMap.action_get_events("Move Right").size() > 1:
secondary_move_right = InputMap.action_get_events("Move Right")[1]
jump = InputMap.action_get_events("Jump")[0]
2024-02-22 06:22:22 +11:00
if InputMap.action_get_events("Jump").size() > 1:
secondary_jump = InputMap.action_get_events("Jump")[1]
sprint = InputMap.action_get_events("Sprint")[0]
2024-02-22 06:22:22 +11:00
if InputMap.action_get_events("Sprint").size() > 1:
secondary_sprint = InputMap.action_get_events("Sprint")[1]
interact = InputMap.action_get_events("Interact")[0]
2024-02-22 06:22:22 +11:00
if InputMap.action_get_events("Interact").size() > 1:
secondary_interact = InputMap.action_get_events("Interact")[1]
open_text_chat = InputMap.action_get_events("Open Text Chat")[0]
2024-02-22 06:22:22 +11:00
if InputMap.action_get_events("Open Text Chat").size() > 1:
secondary_open_text_chat = InputMap.action_get_events("Open Text Chat")[1]
ready = InputMap.action_get_events("Ready")[0]
2024-02-22 06:22:22 +11:00
if InputMap.action_get_events("Ready").size() > 1:
secondary_ready = InputMap.action_get_events("Ready")[1]
pause = InputMap.action_get_events("Pause")[0]
2024-02-22 06:22:22 +11:00
if InputMap.action_get_events("Pause").size() > 1:
secondary_pause = InputMap.action_get_events("Pause")[1]
equip_card_in_gauntlet = InputMap.action_get_events("Equip In Gauntlet")[0]
2024-02-22 06:22:22 +11:00
if InputMap.action_get_events("Equip In Gauntlet").size() > 1:
secondary_equip_card_in_gauntlet = InputMap.action_get_events("Equip In Gauntlet")[1]
view_map = InputMap.action_get_events("View Map")[0]
2024-02-22 06:22:22 +11:00
if InputMap.action_get_events("View Map").size() > 1:
secondary_view_map = InputMap.action_get_events("View Map")[1]
fire1 = InputMap.action_get_events("Primary Fire")[0]
if InputMap.action_get_events("Primary Fire").size() > 1:
secondary_fire1 = InputMap.action_get_events("Primary Fire")[1]
fire2 = InputMap.action_get_events("Secondary Fire")[0]
if InputMap.action_get_events("Secondary Fire").size() > 1:
secondary_fire2 = InputMap.action_get_events("Secondary Fire")[1]
select_next_card = InputMap.action_get_events("Select Next Card")[0]
if InputMap.action_get_events("Select Next Card").size() > 1:
secondary_select_next_card = InputMap.action_get_events("Select Next Card")[1]
select_prev_card = InputMap.action_get_events("Select Previous Card")[0]
if InputMap.action_get_events("Select Previous Card").size() > 1:
secondary_select_prev_card = InputMap.action_get_events("Select Previous Card")[1]
2024-02-22 06:22:22 +11:00
func save_profile_to_disk() -> void:
get_current_input_map()
ResourceSaver.save(self, SAVE_PATH)
static func load_profile_from_disk() -> PlayerKeymap:
if ResourceLoader.exists(SAVE_PATH):
return ResourceLoader.load(SAVE_PATH)
return Data.keymaps[0]