aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormetamuffin <metamuffin@disroot.org>2024-09-22 00:05:39 +0200
committermetamuffin <metamuffin@disroot.org>2024-09-22 00:05:47 +0200
commit7a1bd351b42e69b225e0938f232b36be2a23470c (patch)
treeb3db6cff289fe1b20746fe72d6025a181e25a9c7
parent007cd84766a196d69bbfe6412d6eeab507861119 (diff)
downloadhurrycurry-7a1bd351b42e69b225e0938f232b36be2a23470c.tar
hurrycurry-7a1bd351b42e69b225e0938f232b36be2a23470c.tar.bz2
hurrycurry-7a1bd351b42e69b225e0938f232b36be2a23470c.tar.zst
add new server options as game settings
-rw-r--r--client/server.gd29
-rw-r--r--client/settings.gd12
-rw-r--r--locale/en.ini11
-rw-r--r--server/registry/src/main.rs2
4 files changed, 34 insertions, 20 deletions
diff --git a/client/server.gd b/client/server.gd
index b236fa2a..4378c02d 100644
--- a/client/server.gd
+++ b/client/server.gd
@@ -62,11 +62,7 @@ func _test_server():
sem.post()
func _server_exec():
- var args = []
- var data_path = get_server_data()
- if data_path != null:
- args.push_back("--data-dir")
- args.push_back(data_path)
+ var args = prepare_args()
thread_result = OS.create_process(get_server_path(), args, false)
if thread_result >= 0:
var ok = false
@@ -83,18 +79,29 @@ func _server_exec():
break
sem.post()
+func prepare_args():
+ var args = []
+ if Global.get_setting("server.data_path") != "":
+ args.push_back("--data-dir")
+ args.push_back(Global.get_setting("server.data_path"))
+ if Global.get_setting("server.name") != "":
+ args.push_back("--server-name")
+ args.push_back(Global.get_setting("server.name"))
+ if Global.get_setting("server.mdns"):
+ args.push_back("--mdns")
+ if Global.get_setting("server.upnp"):
+ args.push_back("--upnp")
+ if Global.get_setting("server.register"):
+ args.push_back("--register")
+ return args
+
func get_server_path() -> String:
- var path: String = Global.get_setting("other.server_binary")
+ var path: String = Global.get_setting("server.binary_path")
if path != "":
return path
else:
return "hurrycurry-server"
-func get_server_data():
- var path: String = Global.get_setting("other.server_data")
- if path != "": return path
- else: return null
-
func _process(_delta):
match state:
State.TESTING:
diff --git a/client/settings.gd b/client/settings.gd
index d217dd6c..269d58af 100644
--- a/client/settings.gd
+++ b/client/settings.gd
@@ -63,9 +63,13 @@ static func get_root():
SettingsCategory.new("input",
InputManager.input_map_to_settings(InputManager.default_input_map)
),
- SettingsCategory.new("other", [
- TextSetting.new("server_binary", ""),
- TextSetting.new("server_data", ""),
+ SettingsCategory.new("server", [
+ TextSetting.new("binary_path", ""),
+ TextSetting.new("data_path", ""),
+ TextSetting.new("name", "A Hurry Curry! Server"),
+ ToggleSetting.new("upnp", false),
+ ToggleSetting.new("mdns", false),
+ ToggleSetting.new("register", false),
])
])
@@ -85,7 +89,7 @@ static func hook_changed_init(key: String, display: bool, callable: Callable):
static func get_category_dict(prefix: String):
var map = {}
for k in Global.settings.keys():
- var kn = k.trim_prefix(prefix+".")
+ var kn = k.trim_prefix(prefix + ".")
if kn == k: continue
map[kn] = Global.get_setting(k)
return map
diff --git a/locale/en.ini b/locale/en.ini
index 749b887a..b55152d5 100644
--- a/locale/en.ini
+++ b/locale/en.ini
@@ -137,10 +137,13 @@ c.settings.input.zoom_in=Zoom in
c.settings.input.zoom_out_discrete=Zoom out (discrete)
c.settings.input.zoom_out=Zoom out
c.settings.input=Controls
-c.settings.other.server_binary.placeholder=Enter path
-c.settings.other.server_binary=Server binary (leave empty to search PATH)
-c.settings.other.server_data=Server data directory (leave empty to auto-detect)
-c.settings.other=Other
+c.settings.server.binary_path=Server binary path
+c.settings.server.data_path=Server data directory path
+c.settings.server.mdns=Local server discoverability
+c.settings.server.name=Server display name
+c.settings.server.register=Submit for public listing (requires port forwarding)
+c.settings.server.upnp=Automatic port forwarding (requires UPnP)
+c.settings.server=Server
c.settings.ui.language.system=System default
c.settings.ui.language=Language
c.settings.ui.scale_factor=UI scale factor
diff --git a/server/registry/src/main.rs b/server/registry/src/main.rs
index 87c0bbe1..5bb7a0a3 100644
--- a/server/registry/src/main.rs
+++ b/server/registry/src/main.rs
@@ -96,7 +96,7 @@ impl Registry {
let mut interval = interval(Duration::from_secs(
var("UPDATE_INTERVAL")
.map(|e| e.parse::<u64>().unwrap())
- .unwrap_or(60),
+ .unwrap_or(10),
));
loop {
interval.tick().await;