Chelimbalo/gui/client_settings/client_settings.gd
2025-12-17 16:59:21 +05:00

62 lines
1.5 KiB
GDScript

extends Node
const PLAYER_CFG = "user://client_settings"
signal locale_changed(StringName)
var NICKNAME: StringName = "MyNameIs"
var SENSITIVITY: float = 0.004
var TOGGLE_CROUCH: bool = false
var TOGGLE_SCOPE: bool = false
var TOGGLE_WALK: bool = false
var LOCALE: StringName = "automatic":
set(value):
LOCALE = value
locale_changed.emit(value)
TranslationServer.set_locale(value)
func _ready() -> void:
load_settings()
multiplayer.connected_to_server.connect(send_client_data)
if LOCALE == "automatic":
TranslationServer.set_locale(OS.get_locale_language())
func _exit_tree() -> void:
save_settings()
func send_client_data() -> void:
var data = {}
data["nick"] = NICKNAME
if multiplayer.is_server():
Lobby.recieve_client_data(data)
else:
Lobby.recieve_client_data.rpc_id(1,data)
func save_settings() -> void:
var file = FileAccess.open(PLAYER_CFG,FileAccess.WRITE)
file.store_line(NICKNAME)
file.store_line(str(SENSITIVITY))
var compacted_toggles = 1 * int(TOGGLE_CROUCH) | 2 * int(TOGGLE_SCOPE) | 4 * int(TOGGLE_WALK)
file.store_line(str(compacted_toggles))
file.store_line(TranslationServer.get_locale())
func load_settings() -> void:
var file = FileAccess.open(PLAYER_CFG,FileAccess.READ)
if file == null:
return
NICKNAME = file.get_line()
SENSITIVITY = float(file.get_line())
var compacted_toggles = int(file.get_line())
TOGGLE_CROUCH = compacted_toggles & 1
TOGGLE_SCOPE = compacted_toggles & 2
TOGGLE_WALK = compacted_toggles & 4
LOCALE = file.get_line()