From 06baf4555dc1c7a64bed7d059fbe34c99e9638fb Mon Sep 17 00:00:00 2001 From: metamuffin Date: Fri, 6 Sep 2024 23:43:42 +0200 Subject: refactor settings again (part 1) --- client/player/controllable_player.gd | 2 +- client/player/follow_camera.gd | 6 +++--- client/player/player.gd | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) (limited to 'client/player') diff --git a/client/player/controllable_player.gd b/client/player/controllable_player.gd index 81315630..142d5f47 100644 --- a/client/player/controllable_player.gd +++ b/client/player/controllable_player.gd @@ -60,7 +60,7 @@ func _process(delta): func _process_movement(delta): var input = Input.get_vector("left", "right", "forwards", "backwards") if is_input_enabled() else Vector2.ZERO - var boost = Input.is_action_pressed("boost") or (Global.get_setting("latch_boost") and boosting) + var boost = Input.is_action_pressed("boost") or (Global.get_setting("gameplay.latch_boost") and boosting) input = input.rotated( - game.camera.angle_target) if Input.is_action_pressed("interact") or Input.is_action_just_released("interact"): input *= 0 diff --git a/client/player/follow_camera.gd b/client/player/follow_camera.gd index 516b1ba1..88b6cad4 100644 --- a/client/player/follow_camera.gd +++ b/client/player/follow_camera.gd @@ -71,12 +71,12 @@ func reset(): func follow(delta): if not _disable_input: angle_target += Input.get_axis("rotate_left", "rotate_right") * ( - ROTATE_SPEED * delta * (-1 if Global.get_setting("invert_camera") else 1) + ROTATE_SPEED * delta * (-1 if Global.get_setting("gameplay.invert_camera") else 1) ) angle = G.interpolate_angle(angle, angle_target, delta * ROTATE_WEIGHT) if not _disable_input: angle_up_target += Input.get_axis("rotate_down", "rotate_up") * ( - ROTATE_UP_SPEED * delta * (-1 if Global.get_setting("invert_camera") else 1) + ROTATE_UP_SPEED * delta * (-1 if Global.get_setting("gameplay.invert_camera") else 1) ) angle_up_target = clamp(angle_up_target, ANGLE_UP_MIN, ANGLE_UP_MAX) angle_up = G.interpolate_angle(angle_up, angle_up_target, delta * ROTATE_UP_WEIGHT) @@ -87,7 +87,7 @@ func follow(delta): new_transform.origin = target.position + offset new_transform = new_transform.looking_at(target.position) - if Global.get_setting("interpolate_camera_rotation"): + if Global.get_setting("gameplay.interpolate_camera_rotation"): transform.basis = Basis.from_euler(Vector3( G.interpolate_angle(transform.basis.get_euler().x, new_transform.basis.get_euler().x, delta * LOOK_WEIGHT), G.interpolate_angle(transform.basis.get_euler().y, new_transform.basis.get_euler().y, delta * LOOK_WEIGHT), diff --git a/client/player/player.gd b/client/player/player.gd index d5837d47..bc978209 100644 --- a/client/player/player.gd +++ b/client/player/player.gd @@ -88,7 +88,7 @@ func update_position(new_position: Vector2, new_rotation: float, new_boosting: b func update_username_tag(): var tag: Label3D = character.username_tag tag.text = username - tag.visible = Global.get_setting("usernames") + tag.visible = Global.get_setting("graphics.usernames") func set_item(i: Item): i.owned_by = hand_base -- cgit v1.2.3-70-g09d2 From 5b602bee672c469e7b8f27d956c7b10c2321b08f Mon Sep 17 00:00:00 2001 From: metamuffin Date: Sat, 7 Sep 2024 12:17:59 +0200 Subject: fallback language --- client/makefile | 2 +- client/map/map.gd | 2 +- client/menu/ingame.tscn | 14 +++++++------- client/menu/lobby.tscn | 6 +++--- client/menu/overlay.tscn | 18 +++++++++--------- client/player/player.gd | 7 +++---- locale/en.ini | 10 +++++----- locale/tools/src/main.rs | 12 ++++++++++++ 8 files changed, 41 insertions(+), 30 deletions(-) (limited to 'client/player') diff --git a/client/makefile b/client/makefile index 71a4fb38..085ed748 100644 --- a/client/makefile +++ b/client/makefile @@ -37,4 +37,4 @@ po/locales.csv: $(LT) po/%.po: ../locale/%.ini $(LT) @mkdir -p po - $(LT) export-po $< $@ + $(LT) export-po $< $@ --fallback ../locale/en.ini diff --git a/client/map/map.gd b/client/map/map.gd index fc3bd1bb..f6258cc6 100644 --- a/client/map/map.gd +++ b/client/map/map.gd @@ -63,7 +63,7 @@ func apply_gi_setting(state): func gi_bake(): - if not Global.get_setting("graphics.gi") == 2: return + if Global.get_setting("graphics.gi") != "voxelgi": return print("Map: Rebaking VoxelGI") currently_baked = true gi_bake_blocking() diff --git a/client/menu/ingame.tscn b/client/menu/ingame.tscn index ce42bbdd..55678847 100644 --- a/client/menu/ingame.tscn +++ b/client/menu/ingame.tscn @@ -94,22 +94,22 @@ layout_mode = 2 [node name="Resume" type="Button" parent="Side/Margin/Options"] layout_mode = 2 -text = "Resume" +text = "c.menu.ingame.resume" alignment = 0 [node name="Leave" type="Button" parent="Side/Margin/Options"] layout_mode = 2 -text = "Join Game" +text = "c.menu.ingame.join" alignment = 0 [node name="Lobby" type="Button" parent="Side/Margin/Options"] layout_mode = 2 -text = "Cancel game" +text = "c.menu.ingame.cancel" alignment = 0 [node name="Reconnect" type="Button" parent="Side/Margin/Options"] layout_mode = 2 -text = "Reconnect" +text = "c.menu.ingame.reconnect" alignment = 0 [node name="Spacer2" type="Control" parent="Side/Margin/Options"] @@ -118,7 +118,7 @@ layout_mode = 2 [node name="Settings" type="Button" parent="Side/Margin/Options"] layout_mode = 2 -text = "Settings" +text = "c.menu.settings" alignment = 0 [node name="Spacer3" type="Control" parent="Side/Margin/Options"] @@ -127,12 +127,12 @@ layout_mode = 2 [node name="MainMenu" type="Button" parent="Side/Margin/Options"] layout_mode = 2 -text = "Main menu" +text = "c.menu.ingame.main_menu" alignment = 0 [node name="Quit" type="Button" parent="Side/Margin/Options"] layout_mode = 2 -text = "Quit game" +text = "c.menu.quit" alignment = 0 [connection signal="pressed" from="Side/Margin/Options/Resume" to="." method="_on_resume_pressed"] diff --git a/client/menu/lobby.tscn b/client/menu/lobby.tscn index 05b6507c..d1fe2233 100644 --- a/client/menu/lobby.tscn +++ b/client/menu/lobby.tscn @@ -124,7 +124,7 @@ layout_mode = 2 [node name="EnableBots" type="CheckButton" parent="HBoxContainer/Bottom/MarginContainer/VBoxContainer/Bots"] layout_mode = 2 -text = "Enable bots" +text = "c.menu.lobby.enable_bots" [node name="ScrollContainerCustom" type="ScrollContainer" parent="HBoxContainer/Bottom/MarginContainer/VBoxContainer/Bots"] visible = false @@ -145,7 +145,7 @@ alignment = 1 [node name="JoinSpectate" parent="HBoxContainer/Bottom/MarginContainer/VBoxContainer/VBoxContainer" instance=ExtResource("7_t6mox")] custom_minimum_size = Vector2(148, 0) layout_mode = 2 -text = "Spectate" +text = "c.menu.ingame.spectate" expand_icon = true controller_texture = ExtResource("11_5uugf") press_action = "join_spectate" @@ -153,7 +153,7 @@ press_action = "join_spectate" [node name="Start" parent="HBoxContainer/Bottom/MarginContainer/VBoxContainer/VBoxContainer" instance=ExtResource("7_t6mox")] custom_minimum_size = Vector2(148, 0) layout_mode = 2 -text = "Start game" +text = "c.menu.lobby.start_game" expand_icon = true controller_texture = ExtResource("9_q14bw") press_action = "start_game" diff --git a/client/menu/overlay.tscn b/client/menu/overlay.tscn index e28013db..0947e308 100644 --- a/client/menu/overlay.tscn +++ b/client/menu/overlay.tscn @@ -67,16 +67,16 @@ layout_mode = 2 theme_override_colors/font_color = Color(0, 0, 0, 1) theme_override_fonts/font = ExtResource("3_u54fv") theme_override_font_sizes/font_size = 25 -text = "Completed" +text = "c.score.completed" [node name="Spacer" type="Control" parent="Score/Paper/Margin/Lines/Line1"] layout_mode = 2 size_flags_horizontal = 3 [node name="Completed" type="Label" parent="Score/Paper/Margin/Lines/Line1"] +auto_translate_mode = 2 custom_minimum_size = Vector2(100, 0) layout_mode = 2 -auto_translate = false theme_override_colors/font_color = Color(0, 0.278431, 0, 1) theme_override_fonts/font = ExtResource("3_u54fv") theme_override_font_sizes/font_size = 35 @@ -91,16 +91,16 @@ layout_mode = 2 theme_override_colors/font_color = Color(0, 0, 0, 1) theme_override_fonts/font = ExtResource("3_u54fv") theme_override_font_sizes/font_size = 25 -text = "Failed" +text = "c.score.failed" [node name="Spacer" type="Control" parent="Score/Paper/Margin/Lines/Line2"] layout_mode = 2 size_flags_horizontal = 3 [node name="Failed" type="Label" parent="Score/Paper/Margin/Lines/Line2"] +auto_translate_mode = 2 custom_minimum_size = Vector2(100, 0) layout_mode = 2 -auto_translate = false theme_override_colors/font_color = Color(0.505882, 0, 0, 1) theme_override_fonts/font = ExtResource("3_u54fv") theme_override_font_sizes/font_size = 35 @@ -115,16 +115,16 @@ layout_mode = 2 theme_override_colors/font_color = Color(0, 0, 0, 1) theme_override_fonts/font = ExtResource("3_u54fv") theme_override_font_sizes/font_size = 35 -text = "Points" +text = "c.score.points" [node name="Spacer" type="Control" parent="Score/Paper/Margin/Lines/Line3"] layout_mode = 2 size_flags_horizontal = 3 [node name="Points" type="Label" parent="Score/Paper/Margin/Lines/Line3"] +auto_translate_mode = 2 custom_minimum_size = Vector2(100, 0) layout_mode = 2 -auto_translate = false theme_override_colors/font_color = Color(0, 0, 0, 1) theme_override_fonts/font = ExtResource("3_u54fv") theme_override_font_sizes/font_size = 45 @@ -156,9 +156,9 @@ texture = ExtResource("3_oum5g") layout_mode = 0 [node name="Seconds" type="Label" parent="Time/Paper/Line"] +auto_translate_mode = 2 custom_minimum_size = Vector2(100, 0) layout_mode = 2 -auto_translate = false theme_override_colors/font_color = Color(0, 0, 0, 1) theme_override_fonts/font = ExtResource("3_u54fv") theme_override_font_sizes/font_size = 45 @@ -166,8 +166,8 @@ text = "300" horizontal_alignment = 2 [node name="Point" type="Label" parent="Time/Paper/Line"] +auto_translate_mode = 2 layout_mode = 2 -auto_translate = false theme_override_colors/font_color = Color(0, 0, 0, 1) theme_override_fonts/font = ExtResource("3_u54fv") theme_override_font_sizes/font_size = 45 @@ -175,8 +175,8 @@ text = "." horizontal_alignment = 1 [node name="Decimals" type="Label" parent="Time/Paper/Line"] +auto_translate_mode = 2 layout_mode = 2 -auto_translate = false theme_override_colors/font_color = Color(0, 0, 0, 1) theme_override_fonts/font = ExtResource("3_u54fv") theme_override_font_sizes/font_size = 45 diff --git a/client/player/player.gd b/client/player/player.gd index bc978209..f034f14d 100644 --- a/client/player/player.gd +++ b/client/player/player.gd @@ -77,18 +77,17 @@ func _ready(): character.select_hairstyle(character_idx) clear_timer.timeout.connect(clear_message) - update_username_tag() - Global.settings_changed.connect(update_username_tag) + Settings.hook_changed_init("gameplay.usernames", update_username_tag) func update_position(new_position: Vector2, new_rotation: float, new_boosting: bool): position_ = new_position rotation_ = new_rotation boosting = new_boosting -func update_username_tag(): +func update_username_tag(state): var tag: Label3D = character.username_tag tag.text = username - tag.visible = Global.get_setting("graphics.usernames") + tag.visible = state func set_item(i: Item): i.owned_by = hand_base diff --git a/locale/en.ini b/locale/en.ini index 0db72e87..509cfd34 100644 --- a/locale/en.ini +++ b/locale/en.ini @@ -18,10 +18,6 @@ c.hint.movement=Use %s to move c.hint.reset_camera=Press %s to reset the camera view c.hint.zoom_camera=Use %s to zoom in/out c.hint=Hint -c.lobby.botenable=Enable bots -c.lobby.mapname=Map name -c.lobby.players=Players -c.lobby.start=Start game c.map.difficulty.0=Easy c.map.difficulty.1=Hard c.map.difficulty.2=Moderate @@ -37,11 +33,15 @@ c.menu.ingame.join2=Join Game c.menu.ingame.leave=Leave game c.menu.ingame.leave2=Leave Game c.menu.ingame.main_menu=Main menu -c.menu.ingame.mainmenu=Main Menu +c.menu.ingame.main_menu2=Main Menu c.menu.ingame.quit=Quit game c.menu.ingame.reconnect=Reconnect c.menu.ingame.resume=Resume c.menu.ingame.spectate=Spectate +c.menu.lobby.enable_bots=Enable bots +c.menu.lobby.mapname=Map name +c.menu.lobby.players=Players +c.menu.lobby.start=Start game c.menu.my_chef=My Chef c.menu.play.connect=Connect c.menu.play.quick_connect=Quick Connect diff --git a/locale/tools/src/main.rs b/locale/tools/src/main.rs index 1082581e..68805b99 100644 --- a/locale/tools/src/main.rs +++ b/locale/tools/src/main.rs @@ -26,6 +26,8 @@ enum Args { ExportPo { #[arg(long)] remap_ids: Option, + #[arg(long)] + fallback: Option, input: PathBuf, output: PathBuf, }, @@ -55,9 +57,19 @@ fn main() -> Result<()> { remap_ids: id_map, input, output, + fallback, } => { let mut ini = load_ini(&input)?; let id_map = id_map.map(|path| load_ini(&path)).transpose()?; + if let Some(fallback) = fallback { + let f = load_ini(&fallback)?; + for (k, v) in f { + if !ini.contains_key(&k) { + eprintln!("fallback: key {k:?} is missing"); + ini.insert(k, v); + } + } + } for &(code, name) in NATIVE_LANGUAGE_NAMES { ini.insert(format!("c.settings.ui.language.{code}"), name.to_owned()); -- cgit v1.2.3-70-g09d2 From 923b4d1aa63b6226365a53a7fe227a734760ed1e Mon Sep 17 00:00:00 2001 From: metamuffin Date: Sat, 7 Sep 2024 13:56:56 +0200 Subject: fix hooks overriding each other --- client/map/auto_setup/environment_setup.gd | 6 +++--- client/map/auto_setup/light_setup.gd | 2 +- client/map/map.gd | 2 +- client/menu/blur_setup.gd | 2 +- client/menu/settings/dropdown_setting.gd | 2 +- client/menu/settings/input/input_setting.gd | 2 +- client/menu/settings/range_setting.gd | 2 +- client/menu/settings/text_setting.gd | 2 +- client/menu/settings/toggle_setting.gd | 2 +- client/player/player.gd | 2 +- client/settings.gd | 9 +++++---- 11 files changed, 17 insertions(+), 16 deletions(-) (limited to 'client/player') diff --git a/client/map/auto_setup/environment_setup.gd b/client/map/auto_setup/environment_setup.gd index 73c3ee32..c484ca1d 100644 --- a/client/map/auto_setup/environment_setup.gd +++ b/client/map/auto_setup/environment_setup.gd @@ -22,9 +22,9 @@ func set_sky(sky_name: String): environment.sky.sky_material = load("res://map/environment/presets/%s_sky.tres" % sky_name) func _ready(): - Settings.hook_changed_init("graphics.ssao", func (x): environment.ssao_enabled = x) - Settings.hook_changed_init("graphics.gi", func (x): environment.sdfgi_enabled = x == "sdfgi" and allow_sdfgi) - Settings.hook_changed_init("graphics.glow", func (x): environment.glow_enabled = x) + Settings.hook_changed_init("graphics.ssao", false, func (x): environment.ssao_enabled = x) + Settings.hook_changed_init("graphics.gi", false, func (x): environment.sdfgi_enabled = x == "sdfgi" and allow_sdfgi) + Settings.hook_changed_init("graphics.glow", false, func (x): environment.glow_enabled = x) if !Global.on_vulkan(): environment.environment.tonemap_exposure = 0.5 diff --git a/client/map/auto_setup/light_setup.gd b/client/map/auto_setup/light_setup.gd index 4da2886e..7d1b0b7a 100644 --- a/client/map/auto_setup/light_setup.gd +++ b/client/map/auto_setup/light_setup.gd @@ -19,7 +19,7 @@ class_name LightSetup @export var completely_disable_light_if_shadows_disabled := false func _ready(): - Settings.hook_changed_init("graphics.shadows", apply_settings) + Settings.hook_changed_init("graphics.shadows", false, apply_settings) func apply_settings(setting: bool): if completely_disable_light_if_shadows_disabled: diff --git a/client/map/map.gd b/client/map/map.gd index f6258cc6..ce3c6dfa 100644 --- a/client/map/map.gd +++ b/client/map/map.gd @@ -52,7 +52,7 @@ func clear_tile(pos: Vector2i): func _ready(): voxelgi_timer.connect("timeout", gi_bake) - Settings.hook_changed("graphics.gi", apply_gi_setting) + Settings.hook_changed("graphics.gi", false, apply_gi_setting) func apply_gi_setting(state): if state == "voxelgi" and not currently_baked: diff --git a/client/menu/blur_setup.gd b/client/menu/blur_setup.gd index b5f80540..331d1f47 100644 --- a/client/menu/blur_setup.gd +++ b/client/menu/blur_setup.gd @@ -17,7 +17,7 @@ extends Control func _ready(): update(Global.get_setting("graphics.ui_blur")) - Settings.hook_changed("graphics.ui_blur", update) + Settings.hook_changed("graphics.ui_blur", false, update) func update(state): material.set_shader_parameter("enable_blur", state) diff --git a/client/menu/settings/dropdown_setting.gd b/client/menu/settings/dropdown_setting.gd index 4a3ce8c6..3d6b7c80 100644 --- a/client/menu/settings/dropdown_setting.gd +++ b/client/menu/settings/dropdown_setting.gd @@ -26,6 +26,6 @@ func create_row(): var row = super() row.value_node = OptionButton.new() for i in options: row.value_node.add_item(tr(nskey + "." + i)) - Settings.hook_changed_init(key, func (value): row.value_node.select(options.find(value))) + Settings.hook_changed_init(key, true, func (value): row.value_node.select(options.find(value))) row.value_node.item_selected.connect(func(item): Global.set_setting(key, options[item])) return row diff --git a/client/menu/settings/input/input_setting.gd b/client/menu/settings/input/input_setting.gd index 7a017ed2..7388af78 100644 --- a/client/menu/settings/input/input_setting.gd +++ b/client/menu/settings/input/input_setting.gd @@ -22,6 +22,6 @@ const INPUT_VALUE_NODE_SCENE = preload("res://menu/settings/input/input_value_no func create_row(): var row = super() row.value_node = INPUT_VALUE_NODE_SCENE.instantiate() - Settings.hook_changed_init(key, func(value): row.value_node.value = value) + Settings.hook_changed_init(key, true, func(value): row.value_node.value = value) row.value_node.changed.connect(func(): Global.set_setting(key, row.value_node.value)) return row diff --git a/client/menu/settings/range_setting.gd b/client/menu/settings/range_setting.gd index f1261b81..b119a205 100644 --- a/client/menu/settings/range_setting.gd +++ b/client/menu/settings/range_setting.gd @@ -36,6 +36,6 @@ func create_row(): row.value_node.max_value = max_value row.value_node.tick_count = abs(max_value - min_value) if tick_count == null else tick_count row.value_node.step = 0 if smooth else (1 if tick_count == null else abs(max_value - min_value) / (tick_count - 1)) - Settings.hook_changed_init(key, func(value): row.value_node.value = value) + Settings.hook_changed_init(key, true, func(value): row.value_node.value = value) row.value_node.value_changed.connect(func(value): Global.set_setting(key, value)) return row diff --git a/client/menu/settings/text_setting.gd b/client/menu/settings/text_setting.gd index 8bf2fa9f..dc9352ab 100644 --- a/client/menu/settings/text_setting.gd +++ b/client/menu/settings/text_setting.gd @@ -28,5 +28,5 @@ func create_row(): row.value_node = LineEdit.new() row.value_node.placeholder_text = placeholder row.value_node.text_changed.connect(func(text): Global.set_setting(key, text)) - Settings.hook_changed_init(key, func(text): row.value_node.text = text) + Settings.hook_changed_init(key, true, func(text): row.value_node.text = text) return row diff --git a/client/menu/settings/toggle_setting.gd b/client/menu/settings/toggle_setting.gd index c8c40469..8e0c030c 100644 --- a/client/menu/settings/toggle_setting.gd +++ b/client/menu/settings/toggle_setting.gd @@ -24,5 +24,5 @@ func create_row(): var row = super() row.value_node = CheckButton.new() row.value_node.pressed.connect(func(): Global.set_setting(key, row.value_node.button_pressed)) - Settings.hook_changed_init(key, func(value): row.value_node.button_pressed = value) + Settings.hook_changed_init(key, true, func(value): row.value_node.button_pressed = value) return row diff --git a/client/player/player.gd b/client/player/player.gd index f034f14d..f418337b 100644 --- a/client/player/player.gd +++ b/client/player/player.gd @@ -77,7 +77,7 @@ func _ready(): character.select_hairstyle(character_idx) clear_timer.timeout.connect(clear_message) - Settings.hook_changed_init("gameplay.usernames", update_username_tag) + Settings.hook_changed_init("gameplay.usernames", false, update_username_tag) func update_position(new_position: Vector2, new_rotation: float, new_boosting: bool): position_ = new_position diff --git a/client/settings.gd b/client/settings.gd index 828ecb62..5501f1ab 100644 --- a/client/settings.gd +++ b/client/settings.gd @@ -66,11 +66,12 @@ static func get_root(): ]) ]) -static func hook_changed(key: String, callable: Callable): - change_hooks_display[key] = callable +static func hook_changed(key: String, display: bool, callable: Callable): + if display: change_hooks_display[key] = callable + else: change_hooks_apply[key] = callable -static func hook_changed_init(key: String, callable: Callable): - hook_changed(key, callable) +static func hook_changed_init(key: String, display: bool, callable: Callable): + hook_changed(key, display, callable) callable.call(Global.get_setting(key)) static var change_hooks_display = {} -- cgit v1.2.3-70-g09d2