diff options
| author | metamuffin <metamuffin@disroot.org> | 2024-12-26 13:43:03 +0100 |
|---|---|---|
| committer | metamuffin <metamuffin@disroot.org> | 2024-12-26 13:43:03 +0100 |
| commit | e73d6273e969f9720b9ce730c3c5825126ae892b (patch) | |
| tree | 386c13a5a582e9593605dcef9b6dab7cf6b15620 /client/server.gd | |
| parent | 01811610b169a0572417c1493ea606353fd1a327 (diff) | |
| download | hurrycurry-e73d6273e969f9720b9ce730c3c5825126ae892b.tar hurrycurry-e73d6273e969f9720b9ce730c3c5825126ae892b.tar.bz2 hurrycurry-e73d6273e969f9720b9ce730c3c5825126ae892b.tar.zst | |
generalize services and add editor to play menu
Diffstat (limited to 'client/server.gd')
| -rw-r--r-- | client/server.gd | 133 |
1 files changed, 0 insertions, 133 deletions
diff --git a/client/server.gd b/client/server.gd deleted file mode 100644 index 4378c02d..00000000 --- a/client/server.gd +++ /dev/null @@ -1,133 +0,0 @@ -# Hurry Curry! - a game about cooking -# Copyright 2024 metamuffin -# Copyright 2024 nokoe -# Copyright 2024 tpart -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU Affero General Public License as published by -# the Free Software Foundation, version 3 of the License only. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU Affero General Public License for more details. -# -# You should have received a copy of the GNU Affero General Public License -# along with this program. If not, see <https://www.gnu.org/licenses/>. -# -class_name GameServer -extends Node - -var thread = null -var pid = null - -var state = State.TESTING -enum State { - TESTING, - UNAVAILABLE, - FAILED, - STOPPED, - STARTING, - RUNNING, -} - -var sem = Semaphore.new() -var thread_result = null; - -func _ready(): - state = State.TESTING - thread = Thread.new() - thread.start(_test_server) - -func test(): - pass - -func start(): - if state != State.STOPPED and state != State.FAILED: - push_error("server cant be started") - return - state = State.STARTING - thread = Thread.new() - thread.start(_server_exec) - -func stop(): - if state != State.RUNNING: - push_error("server cant be stopped") - return - OS.kill(pid) - -func _test_server(): - var output = [] - thread_result = OS.execute(get_server_path(), ["-v"], output, true, false) - sem.post() - -func _server_exec(): - var args = prepare_args() - thread_result = OS.create_process(get_server_path(), args, false) - if thread_result >= 0: - var ok = false - while not ok: - var conn = StreamPeerTCP.new() - if conn.connect_to_host("127.0.0.1", 27032) == OK: - while conn.poll() == OK: - if conn.get_status() == StreamPeerTCP.STATUS_ERROR: break - elif conn.get_status() == StreamPeerTCP.STATUS_CONNECTED: ok = true; break - OS.delay_msec(10) - OS.delay_msec(500 if not ok else 50) - if !OS.is_process_running(thread_result): - thread_result = -1 - 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("server.binary_path") - if path != "": - return path - else: - return "hurrycurry-server" - -func _process(_delta): - match state: - State.TESTING: - if sem.try_wait(): - print("Server: Test result=", thread_result) - if thread_result == 0: state = State.STOPPED - else: state = State.UNAVAILABLE - thread.wait_to_finish() - thread = null - State.STARTING: - if sem.try_wait(): - if thread_result >= 0: - state = State.RUNNING - pid = thread_result - print("Server: Started pid=", thread_result) - else: - state = State.FAILED - print("Server: Failed") - thread.wait_to_finish() - thread = null - State.RUNNING: - if not OS.is_process_running(pid): - print("Server: Stopped") - state = State.STOPPED - pid = null - -func _exit_tree(): - if thread != null: thread.wait_to_finish() - if pid != null: OS.kill(pid) |