Added checkboxes to disable Bots and NPCs for single player and private lobbies

This commit is contained in:
NewHappyRabbit
2025-02-11 03:29:56 +02:00
parent a0b88f543c
commit 684b0bb2e0
12 changed files with 92 additions and 5 deletions
+34
View File
@@ -9,6 +9,8 @@ export class HostLobbyModal extends LitElement {
@state() private isModalOpen = false;
@state() private selectedMap: GameMapType = GameMapType.World;
@state() private selectedDiffculty: Difficulty = Difficulty.Medium;
@state() private disableNPCs = false;
@state() private disableBots = false;
@state() private lobbyId = "";
@state() private copySuccess = false;
@state() private players: string[] = [];
@@ -165,6 +167,22 @@ export class HostLobbyModal extends LitElement {
)}
</select>
</div>
<div>
<input
type="checkbox"
id="disable-bots"
@change=${this.handleDisableBotsChange}
/>
<label for="disable-bots">Disable Bots</label>
</div>
<div>
<input
type="checkbox"
id="disable-npcs"
@change=${this.handleDisableNPCsChange}
/>
<label for="disable-npcs">Disable NPCs</label>
</div>
<button @click=${this.startGame}>Start Game</button>
<div>
<p>Players: ${this.players.join(", ")}</p>
@@ -191,6 +209,8 @@ export class HostLobbyModal extends LitElement {
},
map: this.selectedMap,
difficulty: this.selectedDiffculty,
disableBots: this.disableBots,
disableNPCs: this.disableNPCs,
},
bubbles: true,
composed: true,
@@ -226,6 +246,18 @@ export class HostLobbyModal extends LitElement {
this.putGameConfig();
}
private async handleDisableBotsChange(e: Event) {
this.disableBots = Boolean((e.target as HTMLInputElement).checked);
consolex.log(`updating disable bots to ${this.disableBots}`);
this.putGameConfig();
}
private async handleDisableNPCsChange(e: Event) {
this.disableNPCs = Boolean((e.target as HTMLInputElement).checked);
consolex.log(`updating disable npcs to ${this.disableNPCs}`);
this.putGameConfig();
}
private async putGameConfig() {
const response = await fetch(`/private_lobby/${this.lobbyId}`, {
method: "PUT",
@@ -235,6 +267,8 @@ export class HostLobbyModal extends LitElement {
body: JSON.stringify({
gameMap: this.selectedMap,
difficulty: this.selectedDiffculty,
disableBots: this.disableBots,
disableNPCs: this.disableNPCs,
}),
});
}