| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687 |
- extends Control
- @onready var current_container: Control = $PanelContainer/MarginContainer/VBoxContainer/Video
- @export var containers: Array[Control]
- @export var disabled_containers: Array[Control]
- var category_select_active := false
- var category_index := 0
- signal closed
- var can_move := true
- var active = false
- signal opened
- func _process(_delta: float) -> void:
- category_select_active = current_container.selected_index == -1 and active
- %Category.text = tr(current_container.category_name)
- %Icon.region_rect.position.x = category_index * 24
-
- for i in [%LeftArrow, %RightArrow]:
- i.modulate.a = int(current_container.selected_index == -1)
-
- for i in containers.size():
- containers[i].active = category_index == i and active
- if SelectableInputOption.rebinding_input == false:
- containers[i].can_input = can_move
- for i in disabled_containers:
- i.active = false
- if category_select_active and active and can_move:
- handle_inputs()
- if Input.is_action_just_pressed("ui_back") and active and current_container.can_input and can_move:
- close()
- func handle_inputs() -> void:
- var direction := 0
- if Input.is_action_just_pressed("ui_left"):
- category_index -= 1
- direction = -1
- if Settings.file.audio.extra_sfx == 1:
- AudioManager.play_global_sfx("menu_move")
- if Input.is_action_just_pressed("ui_right"):
- category_index += 1
- direction += 1
- if Settings.file.audio.extra_sfx == 1:
- AudioManager.play_global_sfx("menu_move")
- category_index = wrap(category_index, 0, containers.size())
- current_container = containers[category_index]
- if disabled_containers.has(current_container):
- category_index = wrap(category_index + direction, 0, containers.size())
- func open_pack_config_menu(pack: ResourcePackContainer) -> void:
- $ResourcePackConfigMenu.config_json = pack.config
- $ResourcePackConfigMenu.json_path = pack.config_path
- $ResourcePackConfigMenu.open()
- can_move = false
- await $ResourcePackConfigMenu.closed
- can_move = true
- func open() -> void:
- process_mode = Node.PROCESS_MODE_ALWAYS
- opened.emit()
- update_all_starting()
- $PanelContainer/MarginContainer/VBoxContainer/KeyboardControls.selected_index = -1
- $PanelContainer/MarginContainer/VBoxContainer/Controller.selected_index = -1
- show()
- update_minimum_size()
- current_container.show()
- current_container.active = true
- await get_tree().process_frame
- active = true
- func update_all_starting() -> void:
- get_tree().call_group("Options", "update_starting_values")
- %Flag.region_rect.position.x = Global.lang_codes.find(TranslationServer.get_locale()) * 16
- $PanelContainer/MarginContainer/VBoxContainer/Video/Language.selected_index = Global.lang_codes.find(Settings.file.game.lang)
- func close() -> void:
- hide()
- active = false
- closed.emit()
- await get_tree().process_frame
- Settings.save_settings()
- process_mode = Node.PROCESS_MODE_DISABLED
|