Merge branch 'v26'

This commit is contained in:
evanpelle
2025-11-21 14:08:27 -08:00
2 changed files with 11 additions and 18 deletions
+2 -1
View File
@@ -307,7 +307,8 @@ server {
if ($worker = "39") { set $worker_port 3040; }
if ($worker = "40") { set $worker_port 3041; }
proxy_pass http://127.0.0.1:$worker_port$2;
# Preserve query string by appending $is_args$args
proxy_pass http://127.0.0.1:$worker_port$2$is_args$args;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade;
+9 -17
View File
@@ -40,7 +40,6 @@ export class GameServer {
private turns: Turn[] = [];
private intents: Intent[] = [];
public activeClients: Client[] = [];
private LobbyCreatorID: string | undefined;
private allClients: Map<ClientID, Client> = new Map();
private clientsDisconnectedStatus: Map<ClientID, boolean> = new Map();
private _hasStarted = false;
@@ -75,10 +74,9 @@ export class GameServer {
public readonly createdAt: number,
private config: ServerConfig,
public gameConfig: GameConfig,
lobbyCreatorID?: string,
private lobbyCreatorID?: string,
) {
this.log = log_.child({ gameID: id });
this.LobbyCreatorID = lobbyCreatorID ?? undefined;
}
public updateGameConfig(gameConfig: Partial<GameConfig>): void {
@@ -140,10 +138,10 @@ export class GameServer {
return;
}
// Log when lobby creator joins private game
if (client.clientID === this.LobbyCreatorID) {
if (client.clientID === this.lobbyCreatorID) {
this.log.info("Lobby creator joined", {
gameID: this.id,
creatorID: this.LobbyCreatorID,
creatorID: this.lobbyCreatorID,
});
}
this.log.info("client (re)joining game", {
@@ -255,13 +253,11 @@ export class GameServer {
// Handle kick_player intent via WebSocket
case "kick_player": {
const authenticatedClientID = client.clientID;
// Check if the authenticated client is the lobby creator
if (authenticatedClientID !== this.LobbyCreatorID) {
if (client.clientID !== this.lobbyCreatorID) {
this.log.warn(`Only lobby creator can kick players`, {
clientID: authenticatedClientID,
creatorID: this.LobbyCreatorID,
clientID: client.clientID,
creatorID: this.lobbyCreatorID,
target: clientMsg.intent.target,
gameID: this.id,
});
@@ -269,16 +265,16 @@ export class GameServer {
}
// Don't allow lobby creator to kick themselves
if (authenticatedClientID === clientMsg.intent.target) {
if (client.clientID === clientMsg.intent.target) {
this.log.warn(`Cannot kick yourself`, {
clientID: authenticatedClientID,
clientID: client.clientID,
});
return;
}
// Log and execute the kick
this.log.info(`Lobby creator initiated kick of player`, {
creatorID: authenticatedClientID,
creatorID: client.clientID,
target: clientMsg.intent.target,
gameID: this.id,
kickMethod: "websocket",
@@ -525,10 +521,6 @@ export class GameServer {
}
}
public isPrivateLobbyCreator(clientID: string): boolean {
return this.LobbyCreatorID === clientID;
}
phase(): GamePhase {
const now = Date.now();
const alive: Client[] = [];