From c9811a9a01a634da1a86cc8e3a24e70edb4b7958 Mon Sep 17 00:00:00 2001 From: Carl Date: Tue, 21 Apr 2026 18:16:50 +0200 Subject: [PATCH] First attempt of modular nation list. --- servermanager.py | 43 +++++++++++++++++++++++++++++++++++++------ 1 file changed, 37 insertions(+), 6 deletions(-) diff --git a/servermanager.py b/servermanager.py index c52067e..958edd1 100644 --- a/servermanager.py +++ b/servermanager.py @@ -2,6 +2,7 @@ import subprocess from dotenv import load_dotenv import os from dom5game import Dom5game +import re load_dotenv() SERVER_PATH = os.getenv("SERVERPATH") @@ -24,7 +25,30 @@ def create_server(name, port, channel): except Exception as e: return "EXCEPTION OCCURED: " + str(e) return "SUCCESS" - p.wait() + # p.wait() + + +def get_nations(): + # TODO mod support + nation_string = str(subprocess.check_output([SERVER_PATH, "--listnations"])) + nations = {} + current_era = None + for line in nation_string.splitlines(): + line = line.strip() + + era_match = re.match(r"-+ Era (\d+) -+", line) + if era_match: + current_era = f"Era {era_match.group(1)}" + nations[current_era] = {} + continue + + entry_match = re.match(r"(\d+)\s+(.*?),\s+(.*)", line) + if entry_match and current_era: + nation_id = int(entry_match.group(1)) + name = entry_match.group(2), entry_match.group(3) + + nations[current_era][nation_id] = {"name": name} + return nations # This is terrible. @@ -66,7 +90,7 @@ def server_command_builder( required_apoints: int = 0, cataclysm: int = 0, ): - if not ((random_map == 0) ^ (mapfile == "")): + if (not ((random_map == 0) ^ (mapfile == ""))) or random_map not in {0, 10, 15, 20}: return "ERROR_MAP" if not (0 < era < 4): @@ -84,16 +108,23 @@ def server_command_builder( command = [ SERVER_PATH, - " -TS ", + "-TS ", name, - " --port ", + "--port ", str(port), - " --statuspage ", + "--statuspage ", os.getcwd() + "/games/" + name + "/turnstats.html", - " --era ", + "--era ", era, ] if team_game: + for team in teams: + # TODO Check valid inputs + command.append( + " --team " + str(team[0]) + " " + str(team[1]) + " " + str(team[2]) + ) + if clustered_start: + command.append(" --clustered ") if not client_start: command.append(" --noclientstart ")