You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
63 lines
2.2 KiB
63 lines
2.2 KiB
extends Node
|
|
|
|
const FILE_PATH = "user://local_storage"
|
|
|
|
|
|
|
|
func _ready():
|
|
apply_settings()
|
|
|
|
|
|
func apply_settings():
|
|
apply_locale()
|
|
apply_game_server()
|
|
apply_resolution()
|
|
apply_controls()
|
|
|
|
|
|
func apply_locale():
|
|
TranslationServer.set_locale(config.get_value("system","locale","en"))
|
|
|
|
|
|
func apply_game_server():
|
|
var server_addr = config.get_value("system", "server_addr")
|
|
if server_addr != null && not server_addr.empty():
|
|
game_server.set_server_addr(server_addr)
|
|
var api_addr = config.get_value("system","api_addr")
|
|
if api_addr != null && not api_addr.empty():
|
|
game_server.set_api_addr(api_addr)
|
|
|
|
|
|
func apply_resolution():
|
|
var view_port = get_tree().get_root()
|
|
OS.set_window_fullscreen(config.get_value("graphics","fullscreen", true))
|
|
|
|
var resolution = config.get_value("graphics","resolution",config.RESOLUTIONS[0])
|
|
if OS.is_window_fullscreen():
|
|
var base_size = Vector2(1920, 1080)
|
|
var scale= base_size.x / resolution.x
|
|
get_tree().set_screen_stretch(SceneTree.STRETCH_MODE_2D,SceneTree.STRETCH_ASPECT_EXPAND,base_size,scale)
|
|
else:
|
|
OS.set_window_size(resolution)
|
|
OS.set_window_position(Vector2((OS.get_screen_size().x - resolution.x) / 2, (OS.get_screen_size().y - resolution.y) / 2)) # center screen
|
|
get_tree().set_screen_stretch(SceneTree.STRETCH_MODE_VIEWPORT,SceneTree.STRETCH_ASPECT_IGNORE,OS.get_window_size(),1)
|
|
|
|
|
|
func apply_controls():
|
|
InputMap.load_from_globals()
|
|
var control_map = config.get_value("controls","mapping",{})
|
|
for action in InputMap.get_actions():
|
|
if control_map.has(action):
|
|
for event in InputMap.get_action_list(action):
|
|
if event is InputEventKey && control_map[action].has("key"):
|
|
InputMap.action_erase_event(action, event)
|
|
event.set_scancode(OS.find_scancode_from_string(control_map[action]["key"]))
|
|
InputMap.action_add_event(action,event)
|
|
elif event is InputEventJoypadButton && control_map[action].has("joypad"):
|
|
InputMap.action_erase_event(action, event)
|
|
event.set_button_index(control_map[action]["joypad"])
|
|
InputMap.action_add_event(action,event)
|
|
|
|
for ui_mapping in config.INPUT_UI_MAPPING:
|
|
for event in InputMap.get_action_list(config.INPUT_UI_MAPPING[ui_mapping]):
|
|
InputMap.action_add_event(ui_mapping, event)
|