diff --git a/src/core/execution/CityExecution.ts b/src/core/execution/CityExecution.ts index d6cbaf2c6..3b64f88eb 100644 --- a/src/core/execution/CityExecution.ts +++ b/src/core/execution/CityExecution.ts @@ -44,10 +44,10 @@ export class CityExecution implements Execution { this.active = false; return; } - } - owner(): Player { - return null; + if (this.player != this.city.owner()) { + this.player = this.city.owner(); + } } isActive(): boolean { diff --git a/src/core/execution/ConstructionExecution.ts b/src/core/execution/ConstructionExecution.ts index 0f5914f1d..cc54cdba5 100644 --- a/src/core/execution/ConstructionExecution.ts +++ b/src/core/execution/ConstructionExecution.ts @@ -76,6 +76,10 @@ export class ConstructionExecution implements Execution { return; } + if (this.player != this.construction.owner()) { + this.player = this.construction.owner(); + } + if (this.ticksUntilComplete == 0) { this.player = this.construction.owner(); this.construction.delete(false); @@ -123,10 +127,6 @@ export class ConstructionExecution implements Execution { } } - owner(): Player { - return null; - } - isActive(): boolean { return this.active; } diff --git a/src/core/execution/DefensePostExecution.ts b/src/core/execution/DefensePostExecution.ts index 74001526b..5f8811e66 100644 --- a/src/core/execution/DefensePostExecution.ts +++ b/src/core/execution/DefensePostExecution.ts @@ -45,10 +45,10 @@ export class DefensePostExecution implements Execution { this.active = false; return; } - } - owner(): Player { - return null; + if (this.player != this.post.owner()) { + this.player = this.post.owner(); + } } isActive(): boolean { diff --git a/src/core/execution/MissileSiloExecution.ts b/src/core/execution/MissileSiloExecution.ts index fb4547542..f9ae6f3d5 100644 --- a/src/core/execution/MissileSiloExecution.ts +++ b/src/core/execution/MissileSiloExecution.ts @@ -42,11 +42,11 @@ export class MissileSiloExecution implements Execution { return; } this.silo = this.player.buildUnit(UnitType.MissileSilo, 0, this.tile); - } - } - owner(): Player { - return null; + if (this.player != this.silo.owner()) { + this.player = this.silo.owner(); + } + } } isActive(): boolean { diff --git a/src/core/execution/MoveWarshipExecution.ts b/src/core/execution/MoveWarshipExecution.ts index 711c051ab..77d2fbe50 100644 --- a/src/core/execution/MoveWarshipExecution.ts +++ b/src/core/execution/MoveWarshipExecution.ts @@ -25,11 +25,6 @@ export class MoveWarshipExecution implements Execution { this.active = false; } - owner(): Player { - const warship = this.mg.units().find((u) => u.id() == this.unitId); - return warship ? warship.owner() : null; - } - isActive(): boolean { return this.active; } diff --git a/src/core/execution/PortExecution.ts b/src/core/execution/PortExecution.ts index 5aafe9cee..547a05229 100644 --- a/src/core/execution/PortExecution.ts +++ b/src/core/execution/PortExecution.ts @@ -66,6 +66,10 @@ export class PortExecution implements Execution { return; } + if (this._owner != this.port.owner().id()) { + this._owner = this.port.owner().id(); + } + const totalNbOfPorts = this.mg.units(UnitType.Port).length; if ( !this.random.chance(this.mg.config().tradeShipSpawnRate(totalNbOfPorts)) @@ -88,10 +92,6 @@ export class PortExecution implements Execution { ); } - owner(): Player { - return null; - } - isActive(): boolean { return this.active; } diff --git a/src/core/execution/SAMLauncherExecution.ts b/src/core/execution/SAMLauncherExecution.ts index be5d4cfe7..50d8e6a90 100644 --- a/src/core/execution/SAMLauncherExecution.ts +++ b/src/core/execution/SAMLauncherExecution.ts @@ -57,6 +57,10 @@ export class SAMLauncherExecution implements Execution { return; } + if (this.player != this.post.owner()) { + this.player = this.post.owner(); + } + if (!this.pseudoRandom) { this.pseudoRandom = new PseudoRandom(this.post.id()); } @@ -133,10 +137,6 @@ export class SAMLauncherExecution implements Execution { } } - owner(): Player { - return null; - } - isActive(): boolean { return this.active; } diff --git a/src/core/execution/SAMMissileExecution.ts b/src/core/execution/SAMMissileExecution.ts index 1ea88acd4..b21f41f7a 100644 --- a/src/core/execution/SAMMissileExecution.ts +++ b/src/core/execution/SAMMissileExecution.ts @@ -85,9 +85,6 @@ export class SAMMissileExecution implements Execution { } } - owner(): Player { - return null; - } isActive(): boolean { return this.active; } diff --git a/src/core/execution/ShellExecution.ts b/src/core/execution/ShellExecution.ts index 559c0efd2..544ad0efa 100644 --- a/src/core/execution/ShellExecution.ts +++ b/src/core/execution/ShellExecution.ts @@ -63,9 +63,6 @@ export class ShellExecution implements Execution { } } - owner(): Player { - return null; - } isActive(): boolean { return this.active; } diff --git a/src/core/execution/TradeShipExecution.ts b/src/core/execution/TradeShipExecution.ts index 2f18e3b9e..2c85a0d3c 100644 --- a/src/core/execution/TradeShipExecution.ts +++ b/src/core/execution/TradeShipExecution.ts @@ -151,10 +151,6 @@ export class TradeShipExecution implements Execution { return; } - owner(): Player { - return null; - } - isActive(): boolean { return this.active; } diff --git a/src/core/execution/WarshipExecution.ts b/src/core/execution/WarshipExecution.ts index 36fe7a8a9..ddaf65c02 100644 --- a/src/core/execution/WarshipExecution.ts +++ b/src/core/execution/WarshipExecution.ts @@ -11,7 +11,6 @@ import { import { PathFinder } from "../pathfinding/PathFinding"; import { PathFindResultType } from "../pathfinding/AStar"; import { PseudoRandom } from "../PseudoRandom"; -import { distSort, distSortUnit } from "../Util"; import { consolex } from "../Consolex"; import { TileRef } from "../game/GameMap"; import { ShellExecution } from "./ShellExecution"; @@ -151,7 +150,7 @@ export class WarshipExecution implements Execution { !this.alreadySentShell.has(unit) && (unit.type() !== UnitType.TradeShip || hasPort) && (unit.type() !== UnitType.TradeShip || - unit.dstPort()?.owner() !== this.owner()), + unit.dstPort()?.owner() !== this._owner), ); this.target = @@ -229,7 +228,7 @@ export class WarshipExecution implements Execution { ); switch (result.type) { case PathFindResultType.Completed: - this.owner().captureUnit(this.target); + this._owner.captureUnit(this.target); this.target = null; return; case PathFindResultType.NextTile: @@ -244,10 +243,6 @@ export class WarshipExecution implements Execution { } } - owner(): Player { - return this._owner; - } - isActive(): boolean { return this.active; } diff --git a/src/core/game/Game.ts b/src/core/game/Game.ts index 215dc8f8b..496cc3496 100644 --- a/src/core/game/Game.ts +++ b/src/core/game/Game.ts @@ -156,7 +156,6 @@ export interface Execution { activeDuringSpawnPhase(): boolean; init(mg: Game, ticks: number): void; tick(ticks: number): void; - owner(): Player; } export interface Attack { @@ -375,7 +374,6 @@ export interface Player { executeRetreat(attackID: string): void; // Misc - executions(): Execution[]; toUpdate(): PlayerUpdate; playerProfile(): PlayerProfile; canBoat(tile: TileRef): boolean; diff --git a/src/core/game/PlayerImpl.ts b/src/core/game/PlayerImpl.ts index a76c64490..1501b5e1b 100644 --- a/src/core/game/PlayerImpl.ts +++ b/src/core/game/PlayerImpl.ts @@ -285,11 +285,6 @@ export class PlayerImpl implements Player { isAlive(): boolean { return this._tiles.size > 0; } - executions(): Execution[] { - return this.mg - .executions() - .filter((exec) => exec.owner().id() == this.id()); - } incomingAllianceRequests(): AllianceRequest[] { return this.mg.allianceRequests.filter((ar) => ar.recipient() == this);