From e20cd96df4916a187741c11085c9c104095c0175 Mon Sep 17 00:00:00 2001 From: Evan Date: Sun, 27 Oct 2024 12:58:34 -0700 Subject: [PATCH] make manpower addition rate function of total manpower --- src/client/graphics/layers/ControlPanel.ts | 12 ++++++------ src/core/configuration/DefaultConfig.ts | 12 ++++++------ src/core/execution/PlayerExecution.ts | 4 +++- src/core/game/PlayerImpl.ts | 5 +---- 4 files changed, 16 insertions(+), 17 deletions(-) diff --git a/src/client/graphics/layers/ControlPanel.ts b/src/client/graphics/layers/ControlPanel.ts index b186ebb77..a82322d0b 100644 --- a/src/client/graphics/layers/ControlPanel.ts +++ b/src/client/graphics/layers/ControlPanel.ts @@ -15,7 +15,7 @@ export class ControlPanel extends LitElement implements Layer { public uiState: UIState @state() - private attackRatio: number = .2; + private targetTroopRatio = 50; @state() private _troops: number; @@ -67,7 +67,7 @@ export class ControlPanel extends LitElement implements Layer { } targetTroops(): number { - return this._maxTroops * this.attackRatio + return this._manpower * this.targetTroopRatio / 100 } @@ -134,11 +134,11 @@ export class ControlPanel extends LitElement implements Layer {
- - Troops: ${this.targetTroopRatio}% (${renderTroops(this.targetTroops()) + ", delta: " + renderTroops(this.delta())}) + { - this.attackRatio = parseInt((e.target as HTMLInputElement).value) / 10; - this.onAttackRatioChange(this.attackRatio); + this.targetTroopRatio = parseInt((e.target as HTMLInputElement).value); + this.onTroopChange(this.targetTroopRatio / 100); }}>
diff --git a/src/core/configuration/DefaultConfig.ts b/src/core/configuration/DefaultConfig.ts index c1aa881ee..a98de5541 100644 --- a/src/core/configuration/DefaultConfig.ts +++ b/src/core/configuration/DefaultConfig.ts @@ -132,19 +132,19 @@ export class DefaultConfig implements Config { maxManpower(player: Player): number { let max = Math.sqrt(player.numTilesOwned()) * 3000 + 50000 - const troops = Math.min(max, 2_000_000) + const manpower = Math.min(max, 2_000_000) if (player.type() == PlayerType.Bot) { - return troops + return manpower } - return troops * 2 + return manpower * 2 } manpowerAdditionRate(player: Player): number { let max = this.maxManpower(player) - let toAdd = 10 + (player.manpowerReserve() + Math.sqrt(player.manpowerReserve() * player.numTilesOwned())) / 100 + let toAdd = 10 + (player.totalManpower() + Math.sqrt(player.totalManpower() * player.numTilesOwned())) / 100 - const ratio = 1 - (player.manpowerReserve() / max) + const ratio = 1 - (player.totalManpower() / max) toAdd *= ratio toAdd *= .5 // console.log(`to add ${toAdd}`) @@ -158,7 +158,7 @@ export class DefaultConfig implements Config { return toAdd } goldAdditionRate(player: Player): number { - return player.numTilesOwned() / 100 + return (player.manpowerReserve() - player.troops()) / 1000 } troopAdjustmentRate(player: Player): number { const maxDiff = player.totalManpower() / 250 + this.manpowerAdditionRate(player) diff --git a/src/core/execution/PlayerExecution.ts b/src/core/execution/PlayerExecution.ts index 25221a893..8e6a3475b 100644 --- a/src/core/execution/PlayerExecution.ts +++ b/src/core/execution/PlayerExecution.ts @@ -32,7 +32,9 @@ export class PlayerExecution implements Execution { } this.player.addManpowerReserve(this.config.manpowerAdditionRate(this.player)) this.player.addGold(this.config.goldAdditionRate(this.player)) - this.player.addTroops(this.config.troopAdjustmentRate(this.player)) + const adjustRate = this.config.troopAdjustmentRate(this.player) + this.player.addTroops(adjustRate) + this.player.removeManpowerReserve(adjustRate) const alliances = Array.from(this.player.alliances()) for (const alliance of alliances) { diff --git a/src/core/game/PlayerImpl.ts b/src/core/game/PlayerImpl.ts index 61736ee05..8c6243999 100644 --- a/src/core/game/PlayerImpl.ts +++ b/src/core/game/PlayerImpl.ts @@ -48,7 +48,7 @@ export class PlayerImpl implements MutablePlayer { this._targetTroopRatio = .5 this._troops = manpower * this._targetTroopRatio; this._reserves = manpower * (1 - this._targetTroopRatio) - this._gold = manpower + this._gold = 0 } name(): string { @@ -292,9 +292,6 @@ export class PlayerImpl implements MutablePlayer { } removeGold(toRemove: Gold): void { - if (toRemove > this._gold) { - throw Error(`cannot remove ${toRemove} from ${this} because only has ${this._gold}`) - } this._gold -= toRemove }