Compare commits

..

4 Commits

Author SHA1 Message Date
6ca35c12e2 Added name and port fields for game creation. 2026-05-30 16:31:30 +02:00
06514cc4c2 Testing game creator page. 2026-05-30 16:05:21 +02:00
caba8d42bd nvm i'm stupid 2026-05-30 16:01:54 +02:00
84b84f45b6 Added function to check if folder exists. 2026-05-30 14:40:52 +02:00
2 changed files with 37 additions and 7 deletions

View File

@@ -8,17 +8,15 @@ load_dotenv()
SERVER_PATH = os.getenv("SERVERPATH") SERVER_PATH = os.getenv("SERVERPATH")
def create_server(name, port, channel): def create_server(name: str, port: int, channel: int, command: str):
if is_port_in_use(port): if is_port_in_use(port):
return "ERROR_PORT_IN_USE" return "ERROR_PORT_IN_USE"
os.mkdir("games/" + name) os.mkdir("games/" + name)
# print(SERVER_PATH)
# print(server_command_builder(name, port, channel))
game = Dom5game(name, channel, [], 0, {}) game = Dom5game(name, channel, [], 0, {})
game.to_json() game.to_json()
try: try:
p = subprocess.Popen( p = subprocess.Popen(
server_command_builder(name, port), command,
stdout=subprocess.DEVNULL, stdout=subprocess.DEVNULL,
stderr=subprocess.STDOUT, stderr=subprocess.STDOUT,
) )
@@ -55,9 +53,11 @@ def get_nations():
def server_command_builder( def server_command_builder(
name: str, name: str,
port: int, port: int,
era: int, era: int, # 1 EA, 2 MA, 3 LA
closed_slots: list[int] = [], closed_slots: list[int] = [], # list of nations that will be closed
ai_slots: list[tuple[int, int]] = [], ai_slots: list[
tuple[int, int]
] = [], # list of nations that will be ai tuple format: NationID, AI Level (1-6)
client_start: bool = True, client_start: bool = True,
teams: list[tuple[int, int, int]] = [], teams: list[tuple[int, int, int]] = [],
clustered_start: bool = False, clustered_start: bool = False,

View File

@@ -1,6 +1,9 @@
from nicegui import ui from nicegui import ui
from bot_instance import bot from bot_instance import bot
from dom5game import Dom5game from dom5game import Dom5game
import servermanager
import os
from dotenv import load_dotenv
def create_ui(): def create_ui():
@@ -11,6 +14,7 @@ def create_ui():
rows.append({"Name": game.name, "Turn": game.turn}) rows.append({"Name": game.name, "Turn": game.turn})
pages.add("/", lambda: main_page(rows)) pages.add("/", lambda: main_page(rows))
pages.add("/create", lambda: creator_page())
ui.run(reload=False) ui.run(reload=False)
@@ -29,3 +33,29 @@ def game_page(game_name: str):
if game.players[player] not in {"AI", "Eliminated"}: if game.players[player] not in {"AI", "Eliminated"}:
rows.append({"Player": player, "Status": game.players[player]}) rows.append({"Player": player, "Status": game.players[player]})
ui.table(rows=rows, title=game_name) ui.table(rows=rows, title=game_name)
# hell
def creator_page():
# Game Name
name = ui.input(
label="Game Name",
validation={
"Game with that name already exists": lambda value: not (
os.path.isdir("games/" + value)
)
},
).value
# Port
load_dotenv()
port_min = os.getenv("PORT_MIN")
port_max = os.getenv("PORT_MAX")
port = ui.input(
label="Port",
validation={
f"Port must be between {str(port_min)} and {str(port_max)}": lambda value: port_min
<= value
<= port_max
},
)
# Era