|
|
|
@ -47,16 +47,15 @@ func _ready() -> void: |
|
|
|
|
for phalange in [ "Proximal", "Intermediate", "Distal" ]: |
|
|
|
|
tracked_bones.append("%s%s%s" % [ side, finger, phalange ]) |
|
|
|
|
|
|
|
|
|
setup_setting_widget("address" , "Connect/VBoxContainer/Join/Address" , true ) |
|
|
|
|
setup_setting_widget("port" , "Connect/VBoxContainer/Host/Port" , true ) |
|
|
|
|
|
|
|
|
|
setup_setting_widget("cache" , "Settings/VBoxContainer/Cache/LineEdit", true ) |
|
|
|
|
setup_setting_widget("nickname", "Settings/VBoxContainer/Name/LineEdit" , false) |
|
|
|
|
setup_setting_widget("connect" , "address" , true ) |
|
|
|
|
setup_setting_widget("connect" , "port" , true ) |
|
|
|
|
setup_setting_widget("settings", "cache" , true ) |
|
|
|
|
setup_setting_widget("settings", "nickname", false) |
|
|
|
|
|
|
|
|
|
setup_button_connections() |
|
|
|
|
|
|
|
|
|
# Filter whitespace characters from nickname before saving it to "nickname" field. |
|
|
|
|
var nickname_widget: LineEdit = get_settings_window().get_node("Settings/VBoxContainer/Name/LineEdit") |
|
|
|
|
var nickname_widget := get_settings_window().settings_nickname |
|
|
|
|
nickname_widget.text_changed.connect(func(new_text): modify_setting("nickname", new_text.strip_edges())) |
|
|
|
|
nickname_widget.text_submitted.connect(func(_new_text): nickname_widget.text = nickname) |
|
|
|
|
nickname_widget.focus_exited.connect(func(): nickname_widget.text = nickname) |
|
|
|
@ -73,24 +72,28 @@ func _exit_tree() -> void: |
|
|
|
|
func _create_settings_window() -> Control: |
|
|
|
|
return load("res://Mods/copyMultiplayer/Scenes/copy_multiplayer_settings.tscn").instantiate() |
|
|
|
|
|
|
|
|
|
func setup_setting_widget(setting_name: String, path: NodePath, setup_events: bool) -> void: |
|
|
|
|
var settings = get_settings_window() |
|
|
|
|
var widget: Control = settings.get_node(path) |
|
|
|
|
# Override base method to provide type hint. |
|
|
|
|
func get_settings_window() -> copyMultiplayerSettings: |
|
|
|
|
return super.get_settings_window() |
|
|
|
|
|
|
|
|
|
func setup_setting_widget(category: String, setting: String, setup_events: bool) -> void: |
|
|
|
|
var settings := get_settings_window() |
|
|
|
|
var widget: Control = settings.get("%s_%s" % [ category, setting ]) |
|
|
|
|
|
|
|
|
|
_settings_properties.append({ name = setting_name, args = { } }) |
|
|
|
|
_settings_widgets_by_setting_name[setting_name] = widget |
|
|
|
|
_settings_properties.append({ name = setting, args = { } }) |
|
|
|
|
_settings_widgets_by_setting_name[setting] = widget |
|
|
|
|
|
|
|
|
|
if setup_events: |
|
|
|
|
if widget is LineEdit: widget.text_changed.connect( |
|
|
|
|
func(text): modify_setting(setting_name, text)) |
|
|
|
|
func(text): modify_setting(setting, text)) |
|
|
|
|
if widget is SpinBox: widget.value_changed.connect( |
|
|
|
|
func(number): modify_setting(setting_name, roundi(number))) |
|
|
|
|
func(number): modify_setting(setting, roundi(number))) |
|
|
|
|
|
|
|
|
|
func setup_button_connections() -> void: |
|
|
|
|
var window = get_settings_window() |
|
|
|
|
window.get_node("Connect/VBoxContainer/Join/Button").pressed.connect(on_join_pressed) |
|
|
|
|
window.get_node("Connect/VBoxContainer/Host/Button").pressed.connect(on_host_pressed) |
|
|
|
|
window.get_node("Connect/VBoxContainer/Disconnect" ).pressed.connect(on_disconnect_pressed) |
|
|
|
|
var settings := get_settings_window() |
|
|
|
|
settings.connect_join.pressed.connect(on_join_pressed) |
|
|
|
|
settings.connect_host.pressed.connect(on_host_pressed) |
|
|
|
|
settings.connect_disconnect.pressed.connect(on_disconnect_pressed) |
|
|
|
|
|
|
|
|
|
var player_settings_scene: PackedScene = load("res://Mods/copyMultiplayer/Scenes/player_settings.tscn") |
|
|
|
|
func new_player_settings() -> PlayerSettings: |
|
|
|
@ -175,13 +178,13 @@ func on_server_disconnected() -> void: |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
func update_enabled_state(is_online: bool) -> void: |
|
|
|
|
var window = get_settings_window() |
|
|
|
|
window.get_node("Settings/VBoxContainer/Name/LineEdit").editable = !is_online |
|
|
|
|
window.get_node("Connect/VBoxContainer/Join/Address" ).editable = !is_online |
|
|
|
|
window.get_node("Connect/VBoxContainer/Join/Button" ).disabled = is_online |
|
|
|
|
window.get_node("Connect/VBoxContainer/Host/Port" ).editable = !is_online |
|
|
|
|
window.get_node("Connect/VBoxContainer/Host/Button" ).disabled = is_online |
|
|
|
|
window.get_node("Connect/VBoxContainer/Disconnect" ).disabled = !is_online |
|
|
|
|
var settings := get_settings_window() |
|
|
|
|
settings.settings_nickname .editable = !is_online |
|
|
|
|
settings.connect_address .editable = !is_online |
|
|
|
|
settings.connect_port .editable = !is_online |
|
|
|
|
settings.connect_join .disabled = is_online |
|
|
|
|
settings.connect_host .disabled = is_online |
|
|
|
|
settings.connect_disconnect.disabled = !is_online |
|
|
|
|
|
|
|
|
|
func update_status() -> void: |
|
|
|
|
var num_players := 1 + multiplayer.get_peers().size() |
|
|
|
|