Cleanup nations (Part 1) 🧹 (#2637)

## Description:

1. Using the wording `"Nation"`, `"FakeHuman"` and `"NPC"` at the same
time is confusing.
So I renamed every mention of `"FakeHuman"` and `"NPC"` in the entire
project to `"Nation"`. Just like they are called ingame.

2. `BotBehavior.ts` was originally intended for sharing the logic
between nations and bots.
But at the moment, the logic there isn't really shared and it's
basically just about attacking.
So I renamed `BotBehavior.ts` to `AiAttackBehavior.ts`. I use "Ai" to
indicate that this file is used by bots AND nations.

3. Moved `execuction/utils/AllianceBehavior.ts` to
`execuction/nation/NationAllianceBehavior.ts` to make sure everybody
understands that this file is not about alliances in general. It's just
about nations and how they handle alliances.

4. Removed `difficultyModifier` from `DefaultConfig`. It's unused and I
think we usually want to finetune the difficulty instead of using that
method.

5. Added `assertNever` in all `switch (difficulty)` default cases.

## Please complete the following:

- [X] I have added screenshots for all UI updates
- [X] I process any text displayed to the user through translateText()
and I've added it to the en.json file
- [X] I have added relevant tests to the test directory
- [X] I confirm I have thoroughly tested these changes and take full
responsibility for any bugs introduced

## Please put your Discord username so you can be contacted if a bug or
regression is found:

FloPinguin
This commit is contained in:
FloPinguin
2025-12-18 16:20:23 -08:00
committed by GitHub
parent f60aef65e1
commit 4d5bb7a835
26 changed files with 290 additions and 278 deletions
+13 -13
View File
@@ -38,7 +38,7 @@ export class HostLobbyModal extends LitElement {
};
@state() private selectedMap: GameMapType = GameMapType.World;
@state() private selectedDifficulty: Difficulty = Difficulty.Medium;
@state() private disableNPCs = false;
@state() private disableNations = false;
@state() private gameMode: GameMode = GameMode.FFA;
@state() private teamCount: TeamCountConfig = 2;
@state() private bots: number = 400;
@@ -358,17 +358,17 @@ export class HostLobbyModal extends LitElement {
)
? html`
<label
for="disable-npcs"
class="option-card ${this.disableNPCs
for="disable-nations"
class="option-card ${this.disableNations
? "selected"
: ""}"
>
<div class="checkbox-icon"></div>
<input
type="checkbox"
id="disable-npcs"
@change=${this.handleDisableNPCsChange}
.checked=${this.disableNPCs}
id="disable-nations"
@change=${this.handleDisableNationsChange}
.checked=${this.disableNations}
/>
<div class="option-card-title">
${translateText("host_modal.disable_nations")}
@@ -556,7 +556,7 @@ export class HostLobbyModal extends LitElement {
: translateText("host_modal.players")
}
<span style="margin: 0 8px;">•</span>
${this.disableNPCs ? 0 : this.nationCount}
${this.disableNations ? 0 : this.nationCount}
${
this.nationCount === 1
? translateText("host_modal.nation_player")
@@ -569,7 +569,7 @@ export class HostLobbyModal extends LitElement {
.clients=${this.clients}
.lobbyCreatorClientID=${this.lobbyCreatorClientID}
.teamCount=${this.teamCount}
.nationCount=${this.disableNPCs ? 0 : this.nationCount}
.nationCount=${this.disableNations ? 0 : this.nationCount}
.onKickPlayer=${(clientID: string) => this.kickPlayer(clientID)}
></lobby-team-view>
</div>
@@ -735,9 +735,9 @@ export class HostLobbyModal extends LitElement {
this.putGameConfig();
}
private async handleDisableNPCsChange(e: Event) {
this.disableNPCs = Boolean((e.target as HTMLInputElement).checked);
console.log(`updating disable npcs to ${this.disableNPCs}`);
private async handleDisableNationsChange(e: Event) {
this.disableNations = Boolean((e.target as HTMLInputElement).checked);
console.log(`updating disable nations to ${this.disableNations}`);
this.putGameConfig();
}
@@ -779,10 +779,10 @@ export class HostLobbyModal extends LitElement {
...(this.gameMode === GameMode.Team &&
this.teamCount === HumansVsNations
? {
disableNPCs: false,
disableNations: false,
}
: {
disableNPCs: this.disableNPCs,
disableNations: this.disableNations,
}),
maxTimerValue:
this.maxTimer === true ? this.maxTimerValue : undefined,