sauvegarde des contrôles
This commit is contained in:
@@ -44,3 +44,8 @@ const AVAILABLE_LANGUAGES_LABEL = [
|
||||
set(v):
|
||||
full_screen = v
|
||||
video_changed.emit(self)
|
||||
|
||||
#region ------------------ Controls ------------------
|
||||
|
||||
@export var action_remapped : Array[String] = []
|
||||
@export var input_remapped : Array[InputEvent] = []
|
||||
@@ -49,25 +49,26 @@ func restart_game_data():
|
||||
func _init():
|
||||
load_game_data()
|
||||
load_settings_data()
|
||||
update_language_settings(settings_data)
|
||||
update_video_settings(settings_data)
|
||||
update_language_settings()
|
||||
update_video_settings()
|
||||
settings_data.language_changed.connect(_on_settings_language_changed)
|
||||
settings_data.video_changed.connect(_on_settings_video_changed)
|
||||
|
||||
|
||||
func _on_settings_video_changed(s : SettingsData):
|
||||
update_video_settings(s)
|
||||
|
||||
func _on_settings_language_changed(s : SettingsData):
|
||||
update_language_settings(s)
|
||||
|
||||
func update_language_settings(s : SettingsData):
|
||||
func update_language_settings(s : SettingsData = settings_data):
|
||||
TranslationServer.set_locale(s.language)
|
||||
|
||||
func update_video_settings(s : SettingsData):
|
||||
func update_video_settings(s : SettingsData = settings_data):
|
||||
DisplayServer.window_set_mode(DisplayServer.WINDOW_MODE_FULLSCREEN if s.full_screen else DisplayServer.WINDOW_MODE_WINDOWED)
|
||||
|
||||
func update_input(action : String, old_event : InputEvent, event : InputEvent):
|
||||
InputMap.action_erase_event(action, old_event)
|
||||
InputMap.action_add_event(action, event)
|
||||
func update_inputs(s : SettingsData = settings_data):
|
||||
for i in range(len(s.input_remapped)):
|
||||
InputMap.action_erase_events(s.action_remapped[i])
|
||||
InputMap.action_add_event(s.action_remapped[i], s.input_remapped[i])
|
||||
print("Update %s action to %s" % [s.action_remapped[i], s.input_remapped[i].as_text()])
|
||||
|
||||
|
||||
@@ -62,6 +62,7 @@ func change_scene(scene_id : String, with_loading = true):
|
||||
current_scene_node.show()
|
||||
|
||||
Input.mouse_mode = Input.MOUSE_MODE_CAPTURED if scene.mouse_captured else Input.MOUSE_MODE_VISIBLE
|
||||
GameInfo.update_inputs()
|
||||
|
||||
if with_loading:
|
||||
LoadingScreen.hide_loading_screen()
|
||||
|
||||
@@ -11,6 +11,10 @@ var is_remapping := false
|
||||
set(v):
|
||||
action_name = v
|
||||
var events : Array[InputEvent] = InputMap.action_get_events(action_name)
|
||||
var saved_remapped_input = get_remapped_input()
|
||||
if saved_remapped_input :
|
||||
event = saved_remapped_input
|
||||
else :
|
||||
event = null if events.size() == 0 else events[0]
|
||||
update()
|
||||
|
||||
@@ -28,10 +32,29 @@ func _input(new_event):
|
||||
new_event is InputEventKey or (new_event is InputEventMouseButton and new_event.is_pressed())
|
||||
):
|
||||
is_remapping = false
|
||||
GameInfo.update_input(action_name, event, new_event)
|
||||
event = new_event
|
||||
save_remapped_input(event)
|
||||
GameInfo.update_inputs()
|
||||
update()
|
||||
|
||||
func get_remapped_input() -> InputEvent:
|
||||
var existing_remapped_id : int = GameInfo.settings_data.action_remapped.find(action_name)
|
||||
|
||||
if existing_remapped_id != -1:
|
||||
return GameInfo.settings_data.input_remapped[existing_remapped_id]
|
||||
|
||||
return null
|
||||
|
||||
func save_remapped_input(e : InputEvent = event):
|
||||
var existing_remapped_id : int = GameInfo.settings_data.action_remapped.find(action_name)
|
||||
|
||||
if existing_remapped_id != -1:
|
||||
GameInfo.settings_data.action_remapped.remove_at(existing_remapped_id)
|
||||
GameInfo.settings_data.input_remapped.remove_at(existing_remapped_id)
|
||||
|
||||
GameInfo.settings_data.action_remapped.push_back(action_name)
|
||||
GameInfo.settings_data.input_remapped.push_back(e)
|
||||
|
||||
func _on_button_button_down():
|
||||
if !is_remapping:
|
||||
is_remapping = true
|
||||
|
||||
Reference in New Issue
Block a user