Lobby: SPIELEN des Erstellers startet den Server
Kein eigener Server-starten-Knopf mehr: playLobby schaltet beim Ersteller den Lobby-Server ein und startet das Spiel, die anderen koennen spielen, sobald er laeuft. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
@@ -5,6 +5,7 @@ Neue Version: hier einen Abschnitt `## <Version>` anlegen, `<Version>` in `BSO.L
|
|||||||
|
|
||||||
## 0.3.1
|
## 0.3.1
|
||||||
- Sprache: Deutsch oder Englisch (Einstellungen oder Umschalter auf der Anmeldeseite) – auch Meldungen und Fehler der Website
|
- Sprache: Deutsch oder Englisch (Einstellungen oder Umschalter auf der Anmeldeseite) – auch Meldungen und Fehler der Website
|
||||||
|
- Lobby: kein eigener „Server starten“-Knopf mehr – SPIELEN des Erstellers startet den Server, dann können alle spielen
|
||||||
|
|
||||||
## 0.3.0
|
## 0.3.0
|
||||||
- Freunde: per Benutzername hinzufügen, Anfragen annehmen, sehen wer online ist
|
- Freunde: per Benutzername hinzufügen, Anfragen annehmen, sehen wer online ist
|
||||||
|
|||||||
@@ -291,6 +291,8 @@ public sealed class MainForm : Form
|
|||||||
case "launch":
|
case "launch":
|
||||||
return await Launch();
|
return await Launch();
|
||||||
case "playLobby":
|
case "playLobby":
|
||||||
|
// Ersteller: SPIELEN schaltet den Lobby-Server mit ein (der Relay faehrt ihn beim ersten Spieler hoch)
|
||||||
|
if (BoolArg(args, "startServer") == true) await Site("POST", "/api/lobby/start");
|
||||||
return await Launch(lobby: true);
|
return await Launch(lobby: true);
|
||||||
|
|
||||||
// --- Freunde und Lobby (Website, mit dem Konto-Token)
|
// --- Freunde und Lobby (Website, mit dem Konto-Token)
|
||||||
|
|||||||
@@ -17,7 +17,7 @@ WinForms-Fenster mit WebView2, die Oberfläche (`ui\`) ist in der .exe eingebett
|
|||||||
- **Auto-Update:** neueste Mod-Version vor jedem Start (abschaltbar), Selbst-Update des Launchers mit einem Klick.
|
- **Auto-Update:** neueste Mod-Version vor jedem Start (abschaltbar), Selbst-Update des Launchers mit einem Klick.
|
||||||
Downloads sind fortsetzbar, SHA-256-geprüft und müssen mit dem **BSO-Release-Schlüssel signiert** sein.
|
Downloads sind fortsetzbar, SHA-256-geprüft und müssen mit dem **BSO-Release-Schlüssel signiert** sein.
|
||||||
- **Prüft alles:** Spielordner (alle Steam-Bibliotheken), BSO-Version, .NET 10 Runtime (braucht die Mod).
|
- **Prüft alles:** Spielordner (alle Steam-Bibliotheken), BSO-Version, .NET 10 Runtime (braucht die Mod).
|
||||||
- **Freunde & Lobby:** Freunde per Benutzername hinzufügen (online-Anzeige), Lobby erstellen, einladen, Server starten.
|
- **Freunde & Lobby:** Freunde per Benutzername hinzufügen (online-Anzeige), Lobby erstellen, einladen - SPIELEN des Erstellers startet den Lobby-Server.
|
||||||
Der Server läuft im BSO-Relay – niemand hostet, niemand braucht eine Portfreigabe.
|
Der Server läuft im BSO-Relay – niemand hostet, niemand braucht eine Portfreigabe.
|
||||||
- **SPIELEN:** holt ein Spiel-Ticket (in der Lobby: für deren Server) und die Relay-Adresse, schreibt beides in
|
- **SPIELEN:** holt ein Spiel-Ticket (in der Lobby: für deren Server) und die Relay-Adresse, schreibt beides in
|
||||||
`BSO.json`, startet Bus-Simulator 2012 über Steam und verbindet automatisch.
|
`BSO.json`, startet Bus-Simulator 2012 über Steam und verbindet automatisch.
|
||||||
|
|||||||
@@ -329,13 +329,20 @@ function lobbyCard() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
const play = h("button", { class: "btn primary play", type: "button" }, t("SPIELEN"));
|
const play = h("button", { class: "btn primary play", type: "button" }, t("SPIELEN"));
|
||||||
play.disabled = !lobby.serverOnline;
|
// Beim Ersteller startet SPIELEN den Lobby-Server gleich mit, die anderen koennen spielen, sobald er laeuft
|
||||||
play.addEventListener("click", () => busy(play, async () => { await call("playLobby"); toast(t("Bus-Simulator 2012 startet und verbindet mit der Lobby …")); }));
|
play.disabled = !lobby.serverOnline && !lobby.isOwner;
|
||||||
|
play.addEventListener("click", () => busy(play, async () => {
|
||||||
|
await call("playLobby", { startServer: lobby.isOwner && !lobby.serverOnline });
|
||||||
|
toast(t("Bus-Simulator 2012 startet und verbindet mit der Lobby …"));
|
||||||
|
await loadSocial();
|
||||||
|
drawSocial();
|
||||||
|
}));
|
||||||
|
|
||||||
const state = h("div", { class: "server-state" },
|
const state = h("div", { class: "server-state" },
|
||||||
h("span", { class: "dot " + (lobby.serverOnline ? "ok" : "bad") }),
|
h("span", { class: "dot " + (lobby.serverOnline ? "ok" : "bad") }),
|
||||||
h("span", { style: "flex:1" }, lobby.serverOnline ? t("Server läuft") : lobby.isOwner ? t("Server aus – starte ihn, dann können alle spielen") : t("Server aus – warte, bis {0} ihn startet", lobby.owner)),
|
h("span", { style: "flex:1" }, lobby.serverOnline ? t("Server läuft – alle können SPIELEN drücken")
|
||||||
lobby.isOwner ? (lobby.serverOnline ? action(t("Server stoppen"), "", "lobbyStop") : action(t("Server starten"), "primary", "lobbyStart")) : null);
|
: lobby.isOwner ? t("Drück SPIELEN – der Server startet dann für die ganze Lobby") : t("Warte, bis {0} SPIELEN drückt – dann startet der Server", lobby.owner)),
|
||||||
|
lobby.isOwner && lobby.serverOnline ? action(t("Server stoppen"), "", "lobbyStop") : null);
|
||||||
|
|
||||||
const members = h("div", { class: "people" }, ...lobby.members.map((m) => h("div", { class: "person" },
|
const members = h("div", { class: "people" }, ...lobby.members.map((m) => h("div", { class: "person" },
|
||||||
h("span", { class: "dot " + (m.online ? "ok" : "") }),
|
h("span", { class: "dot " + (m.online ? "ok" : "") }),
|
||||||
|
|||||||
+3
-2
@@ -35,8 +35,9 @@ const EN = {
|
|||||||
"Erstelle eine Lobby und lade Freunde ein. Der Server läuft auf dem BSO-Relay – niemand muss etwas hosten oder Ports freigeben.":
|
"Erstelle eine Lobby und lade Freunde ein. Der Server läuft auf dem BSO-Relay – niemand muss etwas hosten oder Ports freigeben.":
|
||||||
"Create a lobby and invite friends. The server runs on the BSO relay – nobody has to host anything or forward ports.",
|
"Create a lobby and invite friends. The server runs on the BSO relay – nobody has to host anything or forward ports.",
|
||||||
"Lobby erstellen": "Create lobby", "Bus-Simulator 2012 startet und verbindet mit der Lobby …": "Bus-Simulator 2012 is starting and connecting to the lobby …",
|
"Lobby erstellen": "Create lobby", "Bus-Simulator 2012 startet und verbindet mit der Lobby …": "Bus-Simulator 2012 is starting and connecting to the lobby …",
|
||||||
"Server läuft": "Server is running", "Server aus – starte ihn, dann können alle spielen": "Server is off – start it so everyone can play",
|
"Server läuft – alle können SPIELEN drücken": "Server is running – everyone can press PLAY",
|
||||||
"Server aus – warte, bis {0} ihn startet": "Server is off – wait until {0} starts it", "Server stoppen": "Stop server", "Server starten": "Start server",
|
"Drück SPIELEN – der Server startet dann für die ganze Lobby": "Press PLAY – the server then starts for the whole lobby",
|
||||||
|
"Warte, bis {0} SPIELEN drückt – dann startet der Server": "Waiting for {0} to press PLAY – then the server starts", "Server stoppen": "Stop server",
|
||||||
"Ersteller": "Owner", "Entfernen": "Remove", "Deine Lobby": "Your lobby", "Lobby von {0}": "{0}'s lobby", "Mitglieder ({0})": "Members ({0})",
|
"Ersteller": "Owner", "Entfernen": "Remove", "Deine Lobby": "Your lobby", "Lobby von {0}": "{0}'s lobby", "Mitglieder ({0})": "Members ({0})",
|
||||||
"{0} Einladung(en) offen": "{0} invitation(s) pending", "Lobby auflösen": "Close lobby", "Lobby verlassen": "Leave lobby",
|
"{0} Einladung(en) offen": "{0} invitation(s) pending", "Lobby auflösen": "Close lobby", "Lobby verlassen": "Leave lobby",
|
||||||
"Hinzufügen": "Add", "Anfrage an {0} geschickt": "Request sent to {0}", "Anfragen": "Requests", "Annehmen": "Accept",
|
"Hinzufügen": "Add", "Anfrage an {0} geschickt": "Request sent to {0}", "Anfragen": "Requests", "Annehmen": "Accept",
|
||||||
|
|||||||
Reference in New Issue
Block a user