diff --git a/src/js/builders/PlanetCardBuilder.js b/src/js/builders/PlanetCardBuilder.js index ec411ec0..c6d910f0 100644 --- a/src/js/builders/PlanetCardBuilder.js +++ b/src/js/builders/PlanetCardBuilder.js @@ -5,7 +5,6 @@ import {RAID_STATUS} from "../constants/RaidStatus"; import {NewPlanetListener} from "../grass_listeners/NewPlanetListener"; import {MAP_CONTAINER_IDS} from "../constants/MapConstants"; import {PLAYER_TYPES} from "../constants/PlayerTypes"; -import {EVENTS} from "../constants/Events"; export class PlanetCardBuilder { @@ -87,25 +86,37 @@ export class PlanetCardBuilder { * @param {PlanetCardComponent} alphaBaseCard */ configureAlphaBaseCardCounterUpdateHandlers(alphaBaseCard) { - alphaBaseCard.undiscoveredOreUpdateHandler = () => { + alphaBaseCard.undiscoveredOreUpdateHandler = (event) => { + if (event.playerType !== PLAYER_TYPES.PLAYER) { + return; + } const display = document.getElementById(`${alphaBaseCard.undiscoveredOreId}-value`); if (display) { - display.innerHTML = this.gameState.planet.undiscovered_ore; + display.innerHTML = this.gameState.keyPlayers[PLAYER_TYPES.PLAYER].planet.undiscovered_ore; } }; - alphaBaseCard.alphaOreUpdateHandler = () => { + alphaBaseCard.alphaOreUpdateHandler = (event) => { + if (event.playerType !== PLAYER_TYPES.PLAYER) { + return; + } const display = document.getElementById(`${alphaBaseCard.alphaOreId}-value`); if (display) { - display.innerHTML = this.gameState.thisPlayer.ore; + display.innerHTML = this.gameState.keyPlayers[PLAYER_TYPES.PLAYER].player.ore; } }; - alphaBaseCard.shieldHealthUpdateHandler = () => { + alphaBaseCard.shieldHealthUpdateHandler = (event) => { + if (event.playerType !== PLAYER_TYPES.PLAYER) { + return; + } const display = document.getElementById(`${alphaBaseCard.shieldHealthId}-value`); if (display) { - display.innerHTML = this.gameState.planetShieldHealth; + display.innerHTML = this.gameState.keyPlayers[PLAYER_TYPES.PLAYER].planetShieldHealth; } }; - alphaBaseCard.deployedStructsUpdateHandler = () => { + alphaBaseCard.deployedStructsUpdateHandler = (event) => { + if (event.playerType !== PLAYER_TYPES.PLAYER) { + return; + } const display = document.getElementById(`${alphaBaseCard.deployedStructsId}-value`); if (display) { display.innerHTML = this.structManager.getStructCountByPlayerType(PLAYER_TYPES.PLAYER); @@ -122,12 +133,12 @@ export class PlanetCardBuilder { return; } - alphaBaseCard.planetName = this.gameState.planet.name; + alphaBaseCard.planetName = this.gameState.keyPlayers[PLAYER_TYPES.PLAYER].planet.name; alphaBaseCard.hasStatusGroup = true; - alphaBaseCard.undiscoveredOre = this.gameState.planet.undiscovered_ore; - alphaBaseCard.alphaOre = this.gameState.thisPlayer.ore; - alphaBaseCard.shieldHealth = this.gameState.planetShieldHealth; + alphaBaseCard.undiscoveredOre = this.gameState.keyPlayers[PLAYER_TYPES.PLAYER].planet.undiscovered_ore; + alphaBaseCard.alphaOre = this.gameState.keyPlayers[PLAYER_TYPES.PLAYER].player.ore; + alphaBaseCard.shieldHealth = this.gameState.keyPlayers[PLAYER_TYPES.PLAYER].planetShieldHealth; alphaBaseCard.deployedStructs = this.structManager.getStructCountByPlayerType(PLAYER_TYPES.PLAYER); this.configureAlphaBaseCardCounterUpdateHandlers(alphaBaseCard); @@ -144,12 +155,12 @@ export class PlanetCardBuilder { return; } - alphaBaseCard.planetName = this.gameState.planet.name; + alphaBaseCard.planetName = this.gameState.keyPlayers[PLAYER_TYPES.PLAYER].planet.name; alphaBaseCard.hasStatusGroup = true; - alphaBaseCard.undiscoveredOre = this.gameState.planet.undiscovered_ore; - alphaBaseCard.alphaOre = this.gameState.thisPlayer.ore; - alphaBaseCard.shieldHealth = this.gameState.planetShieldHealth; + alphaBaseCard.undiscoveredOre = this.gameState.keyPlayers[PLAYER_TYPES.PLAYER].planet.undiscovered_ore; + alphaBaseCard.alphaOre = this.gameState.keyPlayers[PLAYER_TYPES.PLAYER].player.ore; + alphaBaseCard.shieldHealth = this.gameState.keyPlayers[PLAYER_TYPES.PLAYER].planetShieldHealth; alphaBaseCard.deployedStructs = this.structManager.getStructCountByPlayerType(PLAYER_TYPES.PLAYER); this.configureAlphaBaseCardCounterUpdateHandlers(alphaBaseCard); @@ -178,7 +189,7 @@ export class PlanetCardBuilder { return; } - alphaBaseCard.planetName = this.gameState.planet.name; + alphaBaseCard.planetName = this.gameState.keyPlayers[PLAYER_TYPES.PLAYER].planet.name; alphaBaseCard.hasAlert = true; alphaBaseCard.alertMessage = 'Depart planet?'; @@ -217,11 +228,11 @@ export class PlanetCardBuilder { return; } - alphaBaseCard.planetName = this.gameState.planet.name; + alphaBaseCard.planetName = this.gameState.keyPlayers[PLAYER_TYPES.PLAYER].planet.name; alphaBaseCard.hasGeneralMessage = true; alphaBaseCard.generalMessageIconClass = 'icon-planet'; - alphaBaseCard.generalMessage = `Fleet has arrived at ${this.gameState.planet.name}.`; + alphaBaseCard.generalMessage = `Fleet has arrived at ${this.gameState.keyPlayers[PLAYER_TYPES.PLAYER].planet.name}.`; alphaBaseCard.hasPrimaryBtn = true; alphaBaseCard.primaryBtnLabel = 'View'; @@ -279,11 +290,11 @@ export class PlanetCardBuilder { return; } - raidCard.planetName = this.gameState.getRaidEnemyUsername(); + raidCard.planetName = this.gameState.keyPlayers[PLAYER_TYPES.RAID_ENEMY].getUsername(); raidCard.hasGeneralMessage = true; raidCard.generalMessageIconClass = 'icon-raid'; - raidCard.generalMessage = `Fleet has begun raid on ${this.gameState.getRaidEnemyUsername()}.`; + raidCard.generalMessage = `Fleet has begun raid on ${this.gameState.keyPlayers[PLAYER_TYPES.RAID_ENEMY].getUsername()}.`; raidCard.hasPrimaryBtn = true; raidCard.primaryBtnLabel = 'View'; @@ -307,38 +318,45 @@ export class PlanetCardBuilder { return; } - raidCard.planetName = this.gameState.getRaidEnemyUsername(); + raidCard.planetName = this.gameState.keyPlayers[PLAYER_TYPES.RAID_ENEMY].getUsername(); raidCard.hasStatusGroup = true; - raidCard.undiscoveredOre = this.gameState.raidPlanet.undiscovered_ore; - raidCard.alphaOre = this.gameState.raidEnemy.ore; - raidCard.shieldHealth = this.gameState.raidPlanetShieldHealth; + raidCard.undiscoveredOre = this.gameState.keyPlayers[PLAYER_TYPES.RAID_ENEMY].planet.undiscovered_ore; + raidCard.alphaOre = this.gameState.keyPlayers[PLAYER_TYPES.RAID_ENEMY].player.ore; + raidCard.shieldHealth = this.gameState.keyPlayers[PLAYER_TYPES.RAID_ENEMY].planetShieldHealth; raidCard.deployedStructs = this.structManager.getStructCountByPlayerType(PLAYER_TYPES.RAID_ENEMY); - raidCard.undiscoveredOreEvent = EVENTS.UNDISCOVERED_ORE_COUNT_CHANGED_RAID_PLANET; - raidCard.alphaOreEvent = EVENTS.ORE_COUNT_CHANGED_RAID_ENEMY; - raidCard.shieldHealthEvent = EVENTS.SHIELD_HEALTH_CHANGED_RAID_PLANET; - raidCard.deployedStructsEvent = EVENTS.STRUCT_COUNT_CHANGED_RAID_PLANET; - - raidCard.undiscoveredOreUpdateHandler = () => { + raidCard.undiscoveredOreUpdateHandler = (event) => { + if (event.playerType !== PLAYER_TYPES.RAID_ENEMY) { + return; + } const display = document.getElementById(`${raidCard.undiscoveredOreId}-value`); if (display) { - display.innerHTML = this.gameState.raidPlanet.undiscovered_ore; + display.innerHTML = this.gameState.keyPlayers[PLAYER_TYPES.RAID_ENEMY].planet.undiscovered_ore; } }; - raidCard.alphaOreUpdateHandler = () => { + raidCard.alphaOreUpdateHandler = (event) => { + if (event.playerType !== PLAYER_TYPES.RAID_ENEMY) { + return; + } const display = document.getElementById(`${raidCard.alphaOreId}-value`); if (display) { - display.innerHTML = this.gameState.raidEnemy.ore; + display.innerHTML = this.gameState.keyPlayers[PLAYER_TYPES.RAID_ENEMY].player.ore; } }; - raidCard.shieldHealthUpdateHandler = () => { + raidCard.shieldHealthUpdateHandler = (event) => { + if (event.playerType !== PLAYER_TYPES.RAID_ENEMY) { + return; + } const display = document.getElementById(`${raidCard.shieldHealthId}-value`); if (display) { - display.innerHTML = this.gameState.raidPlanetShieldHealth; + display.innerHTML = this.gameState.keyPlayers[PLAYER_TYPES.RAID_ENEMY].planetShieldHealth; } }; - raidCard.deployedStructsUpdateHandler = () => { + raidCard.deployedStructsUpdateHandler = (event) => { + if (event.playerType !== PLAYER_TYPES.RAID_ENEMY) { + return; + } const display = document.getElementById(`${raidCard.deployedStructsId}-value`); if (display) { display.innerHTML = this.structManager.getStructCountByPlayerType(PLAYER_TYPES.RAID_ENEMY); @@ -367,7 +385,7 @@ export class PlanetCardBuilder { return; } - raidCard.planetName = this.gameState.getRaidEnemyUsername(); + raidCard.planetName = this.gameState.keyPlayers[PLAYER_TYPES.RAID_ENEMY].getUsername(); raidCard.hasAlert = true; raidCard.alertMessage = 'Abandon raid?'; @@ -380,7 +398,7 @@ export class PlanetCardBuilder { raidCard.primaryBtnLabel = 'Confirm'; raidCard.primaryBtnHandler = () => { MenuPage.router.goto('Fleet', 'index', {raidCardType: PLANET_CARD_TYPES.RAID_LOADING}) - this.fleetManager.moveFleet(this.gameState.planet.id).then(); + this.fleetManager.moveFleet(this.gameState.keyPlayers[PLAYER_TYPES.PLAYER].planet.id).then(); } raidCard.hasSecondaryBtn = true; @@ -409,7 +427,7 @@ export class PlanetCardBuilder { type = selectedType; - } else if (this.gameState.planet.undiscovered_ore === 0) { + } else if (this.gameState.keyPlayers[PLAYER_TYPES.PLAYER].planet.undiscovered_ore === 0) { type = PLANET_CARD_TYPES.ALPHA_BASE_COMPLETED; @@ -436,20 +454,20 @@ export class PlanetCardBuilder { type = selectedType; - } else if (this.gameState.raidPlanetRaidInfo.status === RAID_STATUS.REQUESTED) { + } else if (this.gameState.keyPlayers[PLAYER_TYPES.RAID_ENEMY].planetRaidInfo.status === RAID_STATUS.REQUESTED) { type = PLANET_CARD_TYPES.RAID_LOADING; } else if ( selectedType === PLANET_CARD_TYPES.RAID_STARTED - && this.gameState.raidPlanetRaidInfo.status === RAID_STATUS.INITIATED + && this.gameState.keyPlayers[PLAYER_TYPES.RAID_ENEMY].planetRaidInfo.status === RAID_STATUS.INITIATED ) { type = PLANET_CARD_TYPES.RAID_STARTED; } else if ( - this.gameState.raidPlanetRaidInfo.status === RAID_STATUS.INITIATED - || this.gameState.raidPlanetRaidInfo.status === RAID_STATUS.ONGOING + this.gameState.keyPlayers[PLAYER_TYPES.RAID_ENEMY].planetRaidInfo.status === RAID_STATUS.INITIATED + || this.gameState.keyPlayers[PLAYER_TYPES.RAID_ENEMY].planetRaidInfo.status === RAID_STATUS.ONGOING ) { type = PLANET_CARD_TYPES.RAID_ACTIVE; diff --git a/src/js/constants/Events.js b/src/js/constants/Events.js index 93dad2cc..8d959e93 100644 --- a/src/js/constants/Events.js +++ b/src/js/constants/Events.js @@ -5,20 +5,17 @@ export const EVENTS = { CLEAR_STRUCT_TILE: 'CLEAR_STRUCT_TILE', ENERGY_USAGE_CHANGED: 'ENERGY_USAGE_CHANGED', ORE_COUNT_CHANGED: 'ORE_COUNT_CHANGED', - ORE_COUNT_CHANGED_RAID_ENEMY: 'ORE_COUNT_CHANGED_RAID_ENEMY', PENDING_BUILD_ADDED: 'PENDING_BUILD_ADDED', PLANET_RAID_STATUS_CHANGED: 'PLANET_RAID_STATUS_CHANGED', - RAID_STATUS_CHANGED: 'RAID_STATUS_CHANGED', REFRESH_ACTION_BAR: 'REFRESH_ACTION_BAR', REFRESH_ACTION_BAR_IF_SELECTED: 'REFRESH_ACTION_BAR_IF_SELECTED', RENDER_ALL_STRUCTS: 'RENDER_ALL_STRUCTS', RENDER_DEPLOYMENT_INDICATOR: 'RENDER_DEPLOYMENT_INDICATOR', RENDER_STRUCT: 'RENDER_STRUCT', UPDATE_TILE_STRUCT_ID: 'UPDATE_TILE_STRUCT_ID', + SAVE_GAME_STATE: 'SAVE_GAME_STATE', SHIELD_HEALTH_CHANGED: 'SHIELD_HEALTH_CHANGED', - SHIELD_HEALTH_CHANGED_RAID_PLANET: 'SHIELD_HEALTH_CHANGED_RAID_PLANET', STRUCT_COUNT_CHANGED: 'STRUCT_COUNT_CHANGED', - STRUCT_COUNT_CHANGED_RAID_PLANET: 'STRUCT_COUNT_CHANGED_RAID_PLANET', TASK_CMD_KILL: 'TASK_CMD_KILL', TASK_CMD_MANAGER_PAUSE: 'TASK_CMD_MANAGER_PAUSE', TASK_CMD_MANAGER_RESUME: 'TASK_CMD_MANAGER_RESUME', @@ -33,5 +30,4 @@ export const EVENTS = { TASK_MANAGER_STATUS_CHANGED: 'TASK_MANAGER_STATUS_CHANGED', TASK_WORKER_CHANGED: 'TASK_WORKER_CHANGED', UNDISCOVERED_ORE_COUNT_CHANGED: 'UNDISCOVERED_ORE_COUNT_CHANGED', - UNDISCOVERED_ORE_COUNT_CHANGED_RAID_PLANET: 'UNDISCOVERED_ORE_COUNT_CHANGED_RAID_PLANET', }; \ No newline at end of file diff --git a/src/js/controllers/AccountController.js b/src/js/controllers/AccountController.js index bf9de73d..15dd469d 100644 --- a/src/js/controllers/AccountController.js +++ b/src/js/controllers/AccountController.js @@ -17,6 +17,7 @@ import {AccountRecipientSearchViewModel} from "../view_models/account/AccountRec import {AccountRecipientSearchResults} from "../view_models/account/AccountRecipientSearchResults"; import {AccountRecipientViewModel} from "../view_models/account/AccountRecipientViewModel"; import {AccountConfirmTransfer} from "../view_models/account/AccountConfirmTransfer"; +import {PLAYER_TYPES} from "../constants/PlayerTypes"; export class AccountController extends AbstractController { @@ -55,7 +56,7 @@ export class AccountController extends AbstractController { profile(options) { const playerId = (options.hasOwnProperty('playerId') && options.playerId) ? options.playerId - : this.gameState.thisPlayerId; + : this.gameState.keyPlayers[PLAYER_TYPES.PLAYER].id; const viewModel = new AccountProfileViewModel( this.gameState, this.guildAPI, diff --git a/src/js/events/AlphaCountChangedEvent.js b/src/js/events/AlphaCountChangedEvent.js new file mode 100644 index 00000000..dccb01ad --- /dev/null +++ b/src/js/events/AlphaCountChangedEvent.js @@ -0,0 +1,12 @@ +import {EVENTS} from "../constants/Events"; + +export class AlphaCountChangedEvent extends CustomEvent { + + /** + * @param {string} playerType + */ + constructor(playerType) { + super(EVENTS.ALPHA_COUNT_CHANGED); + this.playerType = playerType; + } +} diff --git a/src/js/events/EnergyUsageChangedEvent.js b/src/js/events/EnergyUsageChangedEvent.js new file mode 100644 index 00000000..1b0534cb --- /dev/null +++ b/src/js/events/EnergyUsageChangedEvent.js @@ -0,0 +1,12 @@ +import {EVENTS} from "../constants/Events"; + +export class EnergyUsageChangedEvent extends CustomEvent { + + /** + * @param {string} playerType + */ + constructor(playerType) { + super(EVENTS.ENERGY_USAGE_CHANGED); + this.playerType = playerType; + } +} diff --git a/src/js/events/OreCountChangedEvent.js b/src/js/events/OreCountChangedEvent.js new file mode 100644 index 00000000..2e657b91 --- /dev/null +++ b/src/js/events/OreCountChangedEvent.js @@ -0,0 +1,12 @@ +import {EVENTS} from "../constants/Events"; + +export class OreCountChangedEvent extends CustomEvent { + + /** + * @param {string} playerType + */ + constructor(playerType) { + super(EVENTS.ORE_COUNT_CHANGED); + this.playerType = playerType; + } +} diff --git a/src/js/events/PlanetRaidStatusChangedEvent.js b/src/js/events/PlanetRaidStatusChangedEvent.js new file mode 100644 index 00000000..b2c77e1e --- /dev/null +++ b/src/js/events/PlanetRaidStatusChangedEvent.js @@ -0,0 +1,12 @@ +import {EVENTS} from "../constants/Events"; + +export class PlanetRaidStatusChangedEvent extends CustomEvent { + + /** + * @param {string} playerType + */ + constructor(playerType) { + super(EVENTS.PLANET_RAID_STATUS_CHANGED); + this.playerType = playerType; + } +} diff --git a/src/js/events/SaveGameStateEvent.js b/src/js/events/SaveGameStateEvent.js new file mode 100644 index 00000000..3a07c3bb --- /dev/null +++ b/src/js/events/SaveGameStateEvent.js @@ -0,0 +1,7 @@ +import {EVENTS} from "../constants/Events"; + +export class SaveGameStateEvent extends CustomEvent { + constructor() { + super(EVENTS.SAVE_GAME_STATE); + } +} diff --git a/src/js/events/ShieldHealthChangedEvent.js b/src/js/events/ShieldHealthChangedEvent.js new file mode 100644 index 00000000..d77543c4 --- /dev/null +++ b/src/js/events/ShieldHealthChangedEvent.js @@ -0,0 +1,12 @@ +import {EVENTS} from "../constants/Events"; + +export class ShieldHealthChangedEvent extends CustomEvent { + + /** + * @param {string} playerType + */ + constructor(playerType) { + super(EVENTS.SHIELD_HEALTH_CHANGED); + this.playerType = playerType; + } +} diff --git a/src/js/events/StructCountChangedEvent.js b/src/js/events/StructCountChangedEvent.js new file mode 100644 index 00000000..aa3b3849 --- /dev/null +++ b/src/js/events/StructCountChangedEvent.js @@ -0,0 +1,12 @@ +import {EVENTS} from "../constants/Events"; + +export class StructCountChangedEvent extends CustomEvent { + + /** + * @param {string} playerType + */ + constructor(playerType) { + super(EVENTS.STRUCT_COUNT_CHANGED); + this.playerType = playerType; + } +} diff --git a/src/js/events/UndiscoveredOreCountChangedEvent.js b/src/js/events/UndiscoveredOreCountChangedEvent.js new file mode 100644 index 00000000..ea985b3b --- /dev/null +++ b/src/js/events/UndiscoveredOreCountChangedEvent.js @@ -0,0 +1,12 @@ +import {EVENTS} from "../constants/Events"; + +export class UndiscoveredOreCountChangedEvent extends CustomEvent { + + /** + * @param {string} playerType + */ + constructor(playerType) { + super(EVENTS.UNDISCOVERED_ORE_COUNT_CHANGED); + this.playerType = playerType; + } +} diff --git a/src/js/grass_listeners/AlphaChangeListener.js b/src/js/grass_listeners/AlphaChangeListener.js index 002ddd47..5349b6fe 100644 --- a/src/js/grass_listeners/AlphaChangeListener.js +++ b/src/js/grass_listeners/AlphaChangeListener.js @@ -1,4 +1,5 @@ import {AbstractGrassListener} from "../framework/AbstractGrassListener"; +import {PLAYER_TYPES} from "../constants/PlayerTypes"; export class AlphaChangeListener extends AbstractGrassListener { @@ -14,9 +15,9 @@ export class AlphaChangeListener extends AbstractGrassListener { handler(messageData) { if ( - this.gameState.thisPlayerId + this.gameState.keyPlayers[PLAYER_TYPES.PLAYER].id && ['sent','received'].includes(messageData.category) - && messageData.subject.startsWith(`structs.inventory.ualpha.${this.gameState.thisGuild.id}.${this.gameState.thisPlayerId}`) + && messageData.subject.startsWith(`structs.inventory.ualpha.${this.gameState.thisGuild.id}.${this.gameState.keyPlayers[PLAYER_TYPES.PLAYER].id}`) ) { let amount = parseInt(messageData.amount); @@ -24,7 +25,7 @@ export class AlphaChangeListener extends AbstractGrassListener { amount = -1 * amount; } - this.gameState.setThisPlayerAlpha(parseInt(this.gameState.thisPlayer.alpha) + amount); + this.gameState.keyPlayers[PLAYER_TYPES.PLAYER].setAlpha(this.gameState.keyPlayers[PLAYER_TYPES.PLAYER].player.alpha + amount); } } } \ No newline at end of file diff --git a/src/js/grass_listeners/AlphaInfusedChangeListener.js b/src/js/grass_listeners/AlphaInfusedChangeListener.js index 6b75c8f2..00807934 100644 --- a/src/js/grass_listeners/AlphaInfusedChangeListener.js +++ b/src/js/grass_listeners/AlphaInfusedChangeListener.js @@ -1,5 +1,6 @@ import {AbstractGrassListener} from "../framework/AbstractGrassListener"; import {MenuPage} from "../framework/MenuPage"; +import {PLAYER_TYPES} from "../constants/PlayerTypes"; export class AlphaInfusedChangeListener extends AbstractGrassListener { @@ -18,14 +19,14 @@ export class AlphaInfusedChangeListener extends AbstractGrassListener { handler(messageData) { if ( messageData.category === this.category - && (messageData.subject.startsWith(`structs.inventory.ualpha.infused.${this.gameState.thisGuild.id}.${this.gameState.thisPlayerId}`) - || messageData.subject.startsWith(`structs.inventory.ualpha.defusing.${this.gameState.thisGuild.id}.${this.gameState.thisPlayerId}`) + && (messageData.subject.startsWith(`structs.inventory.ualpha.infused.${this.gameState.thisGuild.id}.${this.gameState.keyPlayers[PLAYER_TYPES.PLAYER].id}`) + || messageData.subject.startsWith(`structs.inventory.ualpha.defusing.${this.gameState.thisGuild.id}.${this.gameState.keyPlayers[PLAYER_TYPES.PLAYER].id}`) ) ) { this.shouldUnregister = () => true; - this.guildAPI.getPlayer(this.gameState.thisPlayerId).then(player => { - this.gameState.setThisPlayer(player); // Refresh alpha count + this.guildAPI.getPlayer(this.gameState.keyPlayers[PLAYER_TYPES.PLAYER].id).then(player => { + this.gameState.keyPlayers[PLAYER_TYPES.PLAYER].setPlayer(player); // Refresh alpha count MenuPage.router.goto('Guild', 'reactor'); // Infusion gets reloaded from Guild controller }); diff --git a/src/js/grass_listeners/ConnectionCapacityListener.js b/src/js/grass_listeners/ConnectionCapacityListener.js index a0fa5f01..273e75d5 100644 --- a/src/js/grass_listeners/ConnectionCapacityListener.js +++ b/src/js/grass_listeners/ConnectionCapacityListener.js @@ -1,4 +1,5 @@ import {AbstractGrassListener} from "../framework/AbstractGrassListener"; +import {PLAYER_TYPES} from "../constants/PlayerTypes"; export class ConnectionCapacityListener extends AbstractGrassListener { /** @@ -12,9 +13,9 @@ export class ConnectionCapacityListener extends AbstractGrassListener { handler(messageData) { if ( messageData.category === 'connectionCapacity' - && messageData.subject === `structs.grid.substation.${this.gameState.thisPlayer.substation_id}` + && messageData.subject === `structs.grid.substation.${this.gameState.keyPlayers[PLAYER_TYPES.PLAYER].player.substation_id}` ) { - this.gameState.setConnectionCapacity(messageData.value); + this.gameState.keyPlayers[PLAYER_TYPES.PLAYER].setConnectionCapacity(messageData.value); } } } diff --git a/src/js/grass_listeners/LastActionListener.js b/src/js/grass_listeners/LastActionListener.js index 4a296387..933e7f01 100644 --- a/src/js/grass_listeners/LastActionListener.js +++ b/src/js/grass_listeners/LastActionListener.js @@ -1,4 +1,5 @@ import {AbstractGrassListener} from "../framework/AbstractGrassListener"; +import {PLAYER_TYPES} from "../constants/PlayerTypes"; export class LastActionListener extends AbstractGrassListener { /** @@ -12,9 +13,9 @@ export class LastActionListener extends AbstractGrassListener { handler(messageData) { if ( messageData.category === 'lastAction' - && messageData.subject === `structs.grid.player.${this.gameState.thisPlayerId}` + && messageData.subject === `structs.grid.player.${this.gameState.keyPlayers[PLAYER_TYPES.PLAYER].id}` ) { - this.gameState.setLastActionBlockHeight(messageData.value); + this.gameState.keyPlayers[PLAYER_TYPES.PLAYER].setLastActionBlockHeight(this.gameState.currentBlockHeight, messageData.value); } } } \ No newline at end of file diff --git a/src/js/grass_listeners/NewPlanetListener.js b/src/js/grass_listeners/NewPlanetListener.js index f99afe73..f2e04935 100644 --- a/src/js/grass_listeners/NewPlanetListener.js +++ b/src/js/grass_listeners/NewPlanetListener.js @@ -2,6 +2,7 @@ import {AbstractGrassListener} from "../framework/AbstractGrassListener"; import {MenuPage} from "../framework/MenuPage"; import {PLANET_CARD_TYPES} from "../constants/PlanetCardTypes"; import {PlanetRaidStatusListener} from "./PlanetRaidStatusListener"; +import {PLAYER_TYPES} from "../constants/PlayerTypes"; export class NewPlanetListener extends AbstractGrassListener { @@ -32,17 +33,17 @@ export class NewPlanetListener extends AbstractGrassListener { handler(messageData) { if ( - this.gameState.thisPlayer + this.gameState.keyPlayers[PLAYER_TYPES.PLAYER].player && messageData.category === 'player_consensus' - && messageData.subject === `structs.player.${this.gameState.thisGuild.id}.${this.gameState.thisPlayerId}` + && messageData.subject === `structs.player.${this.gameState.thisGuild.id}.${this.gameState.keyPlayers[PLAYER_TYPES.PLAYER].id}` && messageData.planet_id ) { this.shouldUnregister = () => true; - this.gameState.thisPlayer.planet_id = messageData.planet_id; + this.gameState.keyPlayers[PLAYER_TYPES.PLAYER].player.planet_id = messageData.planet_id; this.guildAPI.getPlanet(messageData.planet_id).then((planet) => { - this.gameState.setPlanet(planet); - this.gameState.setPlanetShieldHealth(100); + this.gameState.keyPlayers[PLAYER_TYPES.PLAYER].setPlanet(planet); + this.gameState.keyPlayers[PLAYER_TYPES.PLAYER].setPlanetShieldHealth(this.gameState.currentBlockHeight); this.grassManager.registerListener(new PlanetRaidStatusListener( this.gameState, this.guildAPI, diff --git a/src/js/grass_listeners/PlanetRaidStatusListener.js b/src/js/grass_listeners/PlanetRaidStatusListener.js index d8253ae7..0bd96635 100644 --- a/src/js/grass_listeners/PlanetRaidStatusListener.js +++ b/src/js/grass_listeners/PlanetRaidStatusListener.js @@ -1,6 +1,7 @@ import {AbstractGrassListener} from "../framework/AbstractGrassListener"; import {RAID_STATUS} from "../constants/RaidStatus"; import {RaidStatusUtil} from "../util/RaidStatusUtil"; +import {PLAYER_TYPES} from "../constants/PlayerTypes"; export class PlanetRaidStatusListener extends AbstractGrassListener { /** @@ -26,7 +27,7 @@ export class PlanetRaidStatusListener extends AbstractGrassListener { handler(messageData) { if ( messageData.category === 'raid_status' - && messageData.subject === `structs.planet.${this.gameState.planet.id}` + && messageData.subject === `structs.planet.${this.gameState.keyPlayers[PLAYER_TYPES.PLAYER].planet.id}` ) { console.log('PLANET RAID STATUS LISTENER', messageData); @@ -34,7 +35,7 @@ export class PlanetRaidStatusListener extends AbstractGrassListener { console.log('PLANET RAID INITIATED HANDLER'); - this.guildAPI.getActivePlanetRaidByPlanetId(this.gameState.planet.id).then(raidInfo => { + this.guildAPI.getActivePlanetRaidByPlanetId(this.gameState.keyPlayers[PLAYER_TYPES.PLAYER].planet.id).then(raidInfo => { this.gameState.setPlanetPlanetRaidInfo(raidInfo, false); this.raidManager.initPlanetRaider().then(() => { @@ -49,7 +50,7 @@ export class PlanetRaidStatusListener extends AbstractGrassListener { console.log('PLANET RAID ONGOING HANDLER'); - this.gameState.setPlanetPlanetRaidStatus(messageData.detail.status); + this.gameState.keyPlayers[PLAYER_TYPES.PLAYER].setPlanetRaidStatus(messageData.detail.status); } else if (this.raidStatusUtil.hasRaidEnded(messageData.detail.status)) { diff --git a/src/js/grass_listeners/PlanetRaiderLastActionListener.js b/src/js/grass_listeners/PlanetRaiderLastActionListener.js index 1dd2ec39..1053abde 100644 --- a/src/js/grass_listeners/PlanetRaiderLastActionListener.js +++ b/src/js/grass_listeners/PlanetRaiderLastActionListener.js @@ -1,5 +1,6 @@ import {AbstractGrassListener} from "../framework/AbstractGrassListener"; import {RaidStatusUtil} from "../util/RaidStatusUtil"; +import {PLAYER_TYPES} from "../constants/PlayerTypes"; export class PlanetRaiderLastActionListener extends AbstractGrassListener { /** @@ -14,14 +15,14 @@ export class PlanetRaiderLastActionListener extends AbstractGrassListener { handler(messageData) { if ( messageData.category === 'lastAction' - && messageData.subject === `structs.grid.player.${this.gameState.planetPlanetRaidInfo.fleet_owner}` + && messageData.subject === `structs.grid.player.${this.gameState.keyPlayers[PLAYER_TYPES.PLANET_RAIDER].id}` ) { - this.gameState.setPlanetRaiderLastActionBlockHeight(messageData.value); + this.gameState.keyPlayers[PLAYER_TYPES.PLANET_RAIDER].setLastActionBlockHeight(this.gameState.currentBlockHeight, messageData.value); } if ( messageData.category === 'raid_status' - && messageData.subject === `structs.planet.${this.gameState.thisPlayer.planetId}` + && messageData.subject === `structs.planet.${this.gameState.keyPlayers[PLAYER_TYPES.PLAYER].player.planetId}` && this.raidStatusUtil.hasRaidEnded(messageData.detail.status) ) { this.shouldUnregister = () => true; diff --git a/src/js/grass_listeners/PlayerAddressApprovedListener.js b/src/js/grass_listeners/PlayerAddressApprovedListener.js index 0f6bb3ac..ed38b588 100644 --- a/src/js/grass_listeners/PlayerAddressApprovedListener.js +++ b/src/js/grass_listeners/PlayerAddressApprovedListener.js @@ -1,5 +1,6 @@ import {AbstractGrassListener} from "../framework/AbstractGrassListener"; import {MenuPage} from "../framework/MenuPage"; +import {PLAYER_TYPES} from "../constants/PlayerTypes"; export class PlayerAddressApprovedListener extends AbstractGrassListener { @@ -22,14 +23,14 @@ export class PlayerAddressApprovedListener extends AbstractGrassListener { handler(messageData) { if ( messageData.category === 'player_address' - && messageData.subject === `structs.player.${this.gameState.thisGuild.id}.${this.gameState.thisPlayerId}` + && messageData.subject === `structs.player.${this.gameState.thisGuild.id}.${this.gameState.keyPlayers[PLAYER_TYPES.PLAYER].id}` && messageData.status === 'approved' && messageData.address === this.playerAddressPending.address ) { this.shouldUnregister = () => true; // Refresh device count cache - this.guildAPI.getPlayerAddressCount(this.gameState.thisPlayerId, true).then(); + this.guildAPI.getPlayerAddressCount(this.gameState.keyPlayers[PLAYER_TYPES.PLAYER].id, true).then(); MenuPage.router.goto('Account', 'deviceActivationComplete'); } diff --git a/src/js/grass_listeners/PlayerAddressRevokedListener.js b/src/js/grass_listeners/PlayerAddressRevokedListener.js index b0f4195b..05dd5333 100644 --- a/src/js/grass_listeners/PlayerAddressRevokedListener.js +++ b/src/js/grass_listeners/PlayerAddressRevokedListener.js @@ -1,5 +1,6 @@ import {AbstractGrassListener} from "../framework/AbstractGrassListener"; import {MenuPage} from "../framework/MenuPage"; +import {PLAYER_TYPES} from "../constants/PlayerTypes"; export class PlayerAddressRevokedListener extends AbstractGrassListener { @@ -22,7 +23,7 @@ export class PlayerAddressRevokedListener extends AbstractGrassListener { handler(messageData) { if ( messageData.category === 'player_address' - && messageData.subject === `structs.player.${this.gameState.thisGuild.id}.${this.gameState.thisPlayerId}` + && messageData.subject === `structs.player.${this.gameState.thisGuild.id}.${this.gameState.keyPlayers[PLAYER_TYPES.PLAYER].id}` && messageData.status === 'revoked' && messageData.address === this.addressToWatch ) { @@ -31,7 +32,7 @@ export class PlayerAddressRevokedListener extends AbstractGrassListener { if (this.gameState.signingAccount.address === this.addressToWatch) { MenuPage.router.goto('Auth', 'logout'); } else { - this.guildAPI.getPlayerAddressCount(this.gameState.thisPlayerId, true).then(() => { + this.guildAPI.getPlayerAddressCount(this.gameState.keyPlayers[PLAYER_TYPES.PLAYER].id, true).then(() => { MenuPage.router.goto('Account', 'devices'); }); } diff --git a/src/js/grass_listeners/PlayerAlphaListener.js b/src/js/grass_listeners/PlayerAlphaListener.js index 9cf64d62..c5c120c7 100644 --- a/src/js/grass_listeners/PlayerAlphaListener.js +++ b/src/js/grass_listeners/PlayerAlphaListener.js @@ -1,4 +1,5 @@ import {AbstractGrassListener} from "../framework/AbstractGrassListener"; +import {PLAYER_TYPES} from "../constants/PlayerTypes"; export class PlayerAlphaListener extends AbstractGrassListener { /** @@ -12,9 +13,9 @@ export class PlayerAlphaListener extends AbstractGrassListener { handler(messageData) { if ( messageData.category === 'alpha' - && messageData.subject === `structs.grid.player.${this.gameState.thisPlayerId}` + && messageData.subject === `structs.grid.player.${this.gameState.keyPlayers[PLAYER_TYPES.PLAYER].id}` ) { - this.gameState.setThisPlayerAlpha(messageData.value); + this.gameState.keyPlayers[PLAYER_TYPES.PLAYER].setAlpha(messageData.value); } } } diff --git a/src/js/grass_listeners/PlayerCapacityListener.js b/src/js/grass_listeners/PlayerCapacityListener.js index 57c4ded5..0e92b672 100644 --- a/src/js/grass_listeners/PlayerCapacityListener.js +++ b/src/js/grass_listeners/PlayerCapacityListener.js @@ -1,4 +1,5 @@ import {AbstractGrassListener} from "../framework/AbstractGrassListener"; +import {PLAYER_TYPES} from "../constants/PlayerTypes"; export class PlayerCapacityListener extends AbstractGrassListener { /** @@ -12,9 +13,9 @@ export class PlayerCapacityListener extends AbstractGrassListener { handler(messageData) { if ( messageData.category === 'capacity' - && messageData.subject === `structs.grid.player.${this.gameState.thisPlayerId}` + && messageData.subject === `structs.grid.player.${this.gameState.keyPlayers[PLAYER_TYPES.PLAYER].id}` ) { - this.gameState.setThisPlayerCapacity(messageData.value); + this.gameState.keyPlayers[PLAYER_TYPES.PLAYER].setPlayerCapacity(messageData.value); } } } diff --git a/src/js/grass_listeners/PlayerLoadListener.js b/src/js/grass_listeners/PlayerLoadListener.js index aeaf38ad..cfc923d4 100644 --- a/src/js/grass_listeners/PlayerLoadListener.js +++ b/src/js/grass_listeners/PlayerLoadListener.js @@ -1,4 +1,5 @@ import {AbstractGrassListener} from "../framework/AbstractGrassListener"; +import {PLAYER_TYPES} from "../constants/PlayerTypes"; export class PlayerLoadListener extends AbstractGrassListener { /** @@ -12,9 +13,9 @@ export class PlayerLoadListener extends AbstractGrassListener { handler(messageData) { if ( messageData.category === 'load' - && messageData.subject === `structs.grid.player.${this.gameState.thisPlayerId}` + && messageData.subject === `structs.grid.player.${this.gameState.keyPlayers[PLAYER_TYPES.PLAYER].id}` ) { - this.gameState.setThisPlayerLoad(messageData.value); + this.gameState.keyPlayers[PLAYER_TYPES.PLAYER].setLoad(messageData.value); } } } diff --git a/src/js/grass_listeners/PlayerOreListener.js b/src/js/grass_listeners/PlayerOreListener.js index 8369a56c..b58185c1 100644 --- a/src/js/grass_listeners/PlayerOreListener.js +++ b/src/js/grass_listeners/PlayerOreListener.js @@ -1,4 +1,5 @@ import {AbstractGrassListener} from "../framework/AbstractGrassListener"; +import {PLAYER_TYPES} from "../constants/PlayerTypes"; export class PlayerOreListener extends AbstractGrassListener { /** @@ -14,13 +15,13 @@ export class PlayerOreListener extends AbstractGrassListener { handler(messageData) { if ( messageData.category === 'ore' - && messageData.subject === `structs.grid.player.${this.gameState.thisPlayerId}` + && messageData.subject === `structs.grid.player.${this.gameState.keyPlayers[PLAYER_TYPES.PLAYER].id}` ) { - this.gameState.setThisPlayerOre(messageData.value); + this.gameState.keyPlayers[PLAYER_TYPES.PLAYER].setOre(messageData.value); // Update undiscovered ore count too - this.guildAPI.getPlanet(this.gameState.planet.id).then(planet => { - this.gameState.setPlanet(planet); + this.guildAPI.getPlanet(this.gameState.keyPlayers[PLAYER_TYPES.PLAYER].planet.id).then(planet => { + this.gameState.keyPlayers[PLAYER_TYPES.PLAYER].setPlanet(planet); }); } } diff --git a/src/js/grass_listeners/PlayerStructsLoadListener.js b/src/js/grass_listeners/PlayerStructsLoadListener.js index 00fc1c29..717fe0e8 100644 --- a/src/js/grass_listeners/PlayerStructsLoadListener.js +++ b/src/js/grass_listeners/PlayerStructsLoadListener.js @@ -1,4 +1,5 @@ import {AbstractGrassListener} from "../framework/AbstractGrassListener"; +import {PLAYER_TYPES} from "../constants/PlayerTypes"; export class PlayerStructsLoadListener extends AbstractGrassListener { /** @@ -12,9 +13,9 @@ export class PlayerStructsLoadListener extends AbstractGrassListener { handler(messageData) { if ( messageData.category === 'structsLoad' - && messageData.subject === `structs.grid.player.${this.gameState.thisPlayerId}` + && messageData.subject === `structs.grid.player.${this.gameState.keyPlayers[PLAYER_TYPES.PLAYER].id}` ) { - this.gameState.setThisPlayerStructsLoad(messageData.value); + this.gameState.keyPlayers[PLAYER_TYPES.PLAYER].setStructsLoad(messageData.value); } } } diff --git a/src/js/grass_listeners/RaidEnemyLastActionListener.js b/src/js/grass_listeners/RaidEnemyLastActionListener.js index 995e5c58..1da24caa 100644 --- a/src/js/grass_listeners/RaidEnemyLastActionListener.js +++ b/src/js/grass_listeners/RaidEnemyLastActionListener.js @@ -1,5 +1,6 @@ import {AbstractGrassListener} from "../framework/AbstractGrassListener"; import {RaidStatusUtil} from "../util/RaidStatusUtil"; +import {PLAYER_TYPES} from "../constants/PlayerTypes"; export class RaidEnemyLastActionListener extends AbstractGrassListener { /** @@ -14,14 +15,14 @@ export class RaidEnemyLastActionListener extends AbstractGrassListener { handler(messageData) { if ( messageData.category === 'lastAction' - && messageData.subject === `structs.grid.player.${this.gameState.getRaidEnemyId()}` + && messageData.subject === `structs.grid.player.${this.gameState.keyPlayers[PLAYER_TYPES.RAID_ENEMY].id}` ) { - this.gameState.setRaidEnemyLastActionBlockHeight(messageData.value); + this.gameState.keyPlayers[PLAYER_TYPES.RAID_ENEMY].setLastActionBlockHeight(this.gameState.currentBlockHeight, messageData.value); } if ( messageData.category === 'raid_status' - && messageData.subject === `structs.planet.${this.gameState.raidPlanetRaidInfo.planet_id}` + && messageData.subject === `structs.planet.${this.gameState.keyPlayers[PLAYER_TYPES.RAID_ENEMY].planetRaidInfo.planet_id}` && this.raidStatusUtil.hasRaidEnded(messageData.detail.status) ) { this.shouldUnregister = () => true; diff --git a/src/js/grass_listeners/RaidEnemyOreListener.js b/src/js/grass_listeners/RaidEnemyOreListener.js index cfc2d607..8441c6b9 100644 --- a/src/js/grass_listeners/RaidEnemyOreListener.js +++ b/src/js/grass_listeners/RaidEnemyOreListener.js @@ -1,5 +1,6 @@ import {AbstractGrassListener} from "../framework/AbstractGrassListener"; import {RaidStatusUtil} from "../util/RaidStatusUtil"; +import {PLAYER_TYPES} from "../constants/PlayerTypes"; export class RaidEnemyOreListener extends AbstractGrassListener { /** @@ -16,19 +17,19 @@ export class RaidEnemyOreListener extends AbstractGrassListener { handler(messageData) { if ( messageData.category === 'ore' - && messageData.subject === `structs.grid.player.${this.gameState.raidPlanetRaidInfo.planet_id}` + && messageData.subject === `structs.grid.player.${this.gameState.keyPlayers[PLAYER_TYPES.RAID_ENEMY].planetRaidInfo.planet_id}` ) { - this.gameState.setRaidEnemyOre(messageData.value); + this.gameState.keyPlayers[PLAYER_TYPES.RAID_ENEMY].setOre(messageData.value); // Update undiscovered ore count too - this.guildAPI.getPlanet(this.gameState.raidPlanetRaidInfo.planet_id).then(planet => { - this.gameState.setRaidPlanet(planet); + this.guildAPI.getPlanet(this.gameState.keyPlayers[PLAYER_TYPES.RAID_ENEMY].planetRaidInfo.planet_id).then(planet => { + this.gameState.keyPlayers[PLAYER_TYPES.RAID_ENEMY].setPlanet(planet); }); } if ( messageData.category === 'raid_status' - && messageData.subject === `structs.planet.${this.gameState.raidPlanetRaidInfo.planet_id}` + && messageData.subject === `structs.planet.${this.gameState.keyPlayers[PLAYER_TYPES.RAID_ENEMY].planetRaidInfo.planet_id}` && this.raidStatusUtil.hasRaidEnded(messageData.detail.status) ) { this.shouldUnregister = () => true; diff --git a/src/js/grass_listeners/RaidStatusListener.js b/src/js/grass_listeners/RaidStatusListener.js index 64aab153..4f52adfb 100644 --- a/src/js/grass_listeners/RaidStatusListener.js +++ b/src/js/grass_listeners/RaidStatusListener.js @@ -6,6 +6,7 @@ import {PLANET_CARD_TYPES} from "../constants/PlanetCardTypes"; import {TaskStateFactory} from "../factories/TaskStateFactory"; import {TaskCmdKillEvent} from "../events/TaskCmdKillEvent"; import {TaskCmdSpawnEvent} from "../events/TaskCmdSpawnEvent"; +import {PLAYER_TYPES} from "../constants/PlayerTypes"; export class RaidStatusListener extends AbstractGrassListener { /** @@ -28,7 +29,7 @@ export class RaidStatusListener extends AbstractGrassListener { handler(messageData) { if ( messageData.category === 'raid_status' - && messageData.subject === `structs.planet.${this.gameState.raidPlanetRaidInfo.planet_id}` + && messageData.subject === `structs.planet.${this.gameState.keyPlayers[PLAYER_TYPES.RAID_ENEMY].planetRaidInfo.planet_id}` ) { console.log('RAID STATUS LISTENER', messageData); @@ -37,12 +38,12 @@ export class RaidStatusListener extends AbstractGrassListener { console.log('RAID INITIATED HANDLER'); // Don't dispatch as we need to wait for the raid enemy info - this.gameState.setRaidPlanetRaidStatus(messageData.detail.status, false); + this.gameState.keyPlayers[PLAYER_TYPES.RAID_ENEMY].setPlanetRaidStatus(messageData.detail.status, false); this.raidManager.initRaidEnemy().then(() => { console.log('RAID ENEMY INITIATED DONE'); - window.dispatchEvent(new TaskCmdSpawnEvent(new TaskStateFactory().initRaidTask(messageData.detail.fleet_id, messageData.detail.planet_id, this.gameState.raidPlanetShieldInfo.block_start_raid, this.gameState.raidPlanetShieldInfo.planetary_shield ))); + window.dispatchEvent(new TaskCmdSpawnEvent(new TaskStateFactory().initRaidTask(messageData.detail.fleet_id, messageData.detail.planet_id, this.gameState.keyPlayers[PLAYER_TYPES.RAID_ENEMY].planetShieldInfo.block_start_raid, this.gameState.keyPlayers[PLAYER_TYPES.RAID_ENEMY].planetShieldInfo.planetary_shield ))); this.mapManager.configureRaidMap(); this.gameState.raidMap.render(); @@ -54,9 +55,9 @@ export class RaidStatusListener extends AbstractGrassListener { console.log('RAID ONGOING HANDLER'); - this.gameState.setRaidPlanetRaidStatus(messageData.detail.status); + this.gameState.keyPlayers[PLAYER_TYPES.RAID_ENEMY].setPlanetRaidStatus(messageData.detail.status); - window.dispatchEvent(new TaskCmdSpawnEvent(new TaskStateFactory().initRaidTask(messageData.detail.fleet_id, messageData.detail.planet_id, this.gameState.raidPlanetShieldInfo.block_start_raid, this.gameState.raidPlanetShieldInfo.planetary_shield ))); + window.dispatchEvent(new TaskCmdSpawnEvent(new TaskStateFactory().initRaidTask(messageData.detail.fleet_id, messageData.detail.planet_id, this.gameState.keyPlayers[PLAYER_TYPES.RAID_ENEMY].planetShieldInfo.block_start_raid, this.gameState.keyPlayers[PLAYER_TYPES.RAID_ENEMY].planetShieldInfo.planetary_shield ))); } else if (this.raidStatusUtil.hasRaidEnded(messageData.detail.status)) { diff --git a/src/js/grass_listeners/StructMineStatusListener.js b/src/js/grass_listeners/StructMineStatusListener.js index f8ca9cc9..fbcca858 100644 --- a/src/js/grass_listeners/StructMineStatusListener.js +++ b/src/js/grass_listeners/StructMineStatusListener.js @@ -3,6 +3,7 @@ import {TaskStateFactory} from "../factories/TaskStateFactory"; import {TASK_TYPES} from "../constants/TaskTypes"; import {TaskCmdKillEvent} from "../events/TaskCmdKillEvent"; import {TaskCmdSpawnEvent} from "../events/TaskCmdSpawnEvent"; +import {PLAYER_TYPES} from "../constants/PlayerTypes"; export class StructMineStatusListener extends AbstractGrassListener { /** @@ -16,13 +17,13 @@ export class StructMineStatusListener extends AbstractGrassListener { handler(messageData) { if ( messageData.category === 'struct_block_ore_mine_start' - && messageData.subject === `structs.planet.${this.gameState.thisPlayer.planet_id}` + && messageData.subject === `structs.planet.${this.gameState.keyPlayers[PLAYER_TYPES.PLAYER].player.planet_id}` ) { if (messageData.detail.block === 0) { window.dispatchEvent(new TaskCmdKillEvent(messageData.detail.struct_id)); } else { const structId = messageData.detail.struct_id; - const structTypeId = this.gameState.thisPlayerStructs[structId].type; + const structTypeId = this.gameState.keyPlayers[PLAYER_TYPES.PLAYER].structs[structId].type; const oreMineDifficulty = this.gameState.structTypes.getStructTypeById(structTypeId).ore_mining_difficulty; window.dispatchEvent(new TaskCmdSpawnEvent(new TaskStateFactory().initStructTask(messageData.detail.struct_id, TASK_TYPES.MINE, messageData.detail.block, oreMineDifficulty))); diff --git a/src/js/grass_listeners/StructRefineStatusListener.js b/src/js/grass_listeners/StructRefineStatusListener.js index fec2160b..2457b6e5 100644 --- a/src/js/grass_listeners/StructRefineStatusListener.js +++ b/src/js/grass_listeners/StructRefineStatusListener.js @@ -3,6 +3,7 @@ import {TaskStateFactory} from "../factories/TaskStateFactory"; import {TASK_TYPES} from "../constants/TaskTypes"; import {TaskCmdKillEvent} from "../events/TaskCmdKillEvent"; import {TaskCmdSpawnEvent} from "../events/TaskCmdSpawnEvent"; +import {PLAYER_TYPES} from "../constants/PlayerTypes"; export class StructRefineStatusListener extends AbstractGrassListener { @@ -17,13 +18,13 @@ export class StructRefineStatusListener extends AbstractGrassListener { handler(messageData) { if ( messageData.category === 'struct_block_ore_refine_start' - && messageData.subject === `structs.planet.${this.gameState.thisPlayer.planet_id}` + && messageData.subject === `structs.planet.${this.gameState.keyPlayers[PLAYER_TYPES.PLAYER].player.planet_id}` ) { if (messageData.detail.block === 0) { window.dispatchEvent(new TaskCmdKillEvent(messageData.detail.struct_id)); } else { const structId = messageData.detail.struct_id; - const structTypeId = this.gameState.thisPlayerStructs[structId].type; + const structTypeId = this.gameState.keyPlayers[PLAYER_TYPES.PLAYER].structs[structId].type; const oreRefineDifficulty = this.gameState.structTypes.getStructTypeById(structTypeId).ore_refining_difficulty; window.dispatchEvent(new TaskCmdSpawnEvent(new TaskStateFactory().initStructTask(messageData.detail.struct_id, TASK_TYPES.REFINE, messageData.detail.block, oreRefineDifficulty))); diff --git a/src/js/grass_listeners/StructStatusListener.js b/src/js/grass_listeners/StructStatusListener.js index 909ec931..458b1fa0 100644 --- a/src/js/grass_listeners/StructStatusListener.js +++ b/src/js/grass_listeners/StructStatusListener.js @@ -8,6 +8,7 @@ import {UpdateTileStructIdEvent} from "../events/UpdateTileStructIdEvent"; import {RefreshActionBarIfSelectedEvent} from "../events/RefreshActionBarIfSelectedEvent"; import {Struct} from "../models/Struct"; import {STRUCT_STATUS_FLAGS} from "../constants/StructConstants"; +import {PLAYER_TYPES} from "../constants/PlayerTypes"; export class StructStatusListener extends AbstractGrassListener { @@ -75,12 +76,12 @@ export class StructStatusListener extends AbstractGrassListener { handler(messageData) { if ( messageData.category === 'struct_block_build_start' - && messageData.subject === `structs.planet.${this.gameState.thisPlayer.planet_id}` + && messageData.subject === `structs.planet.${this.gameState.keyPlayers[PLAYER_TYPES.PLAYER].player.planet_id}` && messageData.detail.block > 0 ) { this.refreshStruct(messageData.detail.struct_id).then(() => { const structId = messageData.detail.struct_id; - const structTypeId = this.gameState.thisPlayerStructs[structId].type; + const structTypeId = this.gameState.keyPlayers[PLAYER_TYPES.PLAYER].structs[structId].type; const buildDifficulty = this.gameState.structTypes.getStructTypeById(structTypeId).build_difficulty; window.dispatchEvent(new TaskCmdSpawnEvent(new TaskStateFactory().initStructTask(structId, TASK_TYPES.BUILD, messageData.detail.block, buildDifficulty))); @@ -89,7 +90,7 @@ export class StructStatusListener extends AbstractGrassListener { } else if ( messageData.category === 'struct_status' - && messageData.subject === `structs.planet.${this.gameState.thisPlayer.planet_id}` + && messageData.subject === `structs.planet.${this.gameState.keyPlayers[PLAYER_TYPES.PLAYER].player.planet_id}` ) { // Check to see if the status has changed to Built (feature flag 2) const removePendingBuild = ( diff --git a/src/js/grass_listeners/TransferSentListener.js b/src/js/grass_listeners/TransferSentListener.js index 77e3baa8..83d01d7a 100644 --- a/src/js/grass_listeners/TransferSentListener.js +++ b/src/js/grass_listeners/TransferSentListener.js @@ -1,5 +1,6 @@ import {AbstractGrassListener} from "../framework/AbstractGrassListener"; import {MenuPage} from "../framework/MenuPage"; +import {PLAYER_TYPES} from "../constants/PlayerTypes"; export class TransferSentListener extends AbstractGrassListener { @@ -20,9 +21,9 @@ export class TransferSentListener extends AbstractGrassListener { handler(messageData) { if ( this.gameState.thisGuild.id - && this.gameState.thisPlayerId + && this.gameState.keyPlayers[PLAYER_TYPES.PLAYER].id && messageData.category === 'sent' - && messageData.subject === `structs.inventory.ualpha.${this.gameState.thisGuild.id}.${this.gameState.thisPlayerId}.${this.fromAddress}` + && messageData.subject === `structs.inventory.ualpha.${this.gameState.thisGuild.id}.${this.gameState.keyPlayers[PLAYER_TYPES.PLAYER].id}.${this.fromAddress}` && messageData.address === this.fromAddress && messageData.counterparty === this.toAddress && Math.abs(messageData.amount) === this.alphaAmount diff --git a/src/js/index.js b/src/js/index.js index dbdd0972..8cad65c3 100644 --- a/src/js/index.js +++ b/src/js/index.js @@ -28,6 +28,7 @@ import {TaskManager} from "./managers/TaskManager"; import {TaskStateFactory} from "./factories/TaskStateFactory"; import {EVENTS} from "./constants/Events"; import {TASK} from "./constants/TaskConstants"; +import {PLAYER_TYPES} from "./constants/PlayerTypes"; // TODO Remove eventually... // Or formalize a migration system (MigrationManager?) @@ -179,12 +180,12 @@ HUDViewModel.initPageCode(); MenuPage.sui.autoInitAll(); -if (!gameState.thisPlayerId) { +if (!gameState.keyPlayers[PLAYER_TYPES.PLAYER].id) { MenuPage.router.goto('Auth', 'index'); MenuPage.hideLoadingScreen(); } else { - authManager.login(gameState.thisPlayerId).then(() => { + authManager.login(gameState.keyPlayers[PLAYER_TYPES.PLAYER].id).then(() => { playerAddressManager.addPlayerAddressMeta().then(() => { MenuPage.close(); MenuPage.router.restore('Fleet', 'index'); diff --git a/src/js/managers/AlphaManager.js b/src/js/managers/AlphaManager.js index f1b83a96..05508fec 100644 --- a/src/js/managers/AlphaManager.js +++ b/src/js/managers/AlphaManager.js @@ -1,3 +1,4 @@ +import {PLAYER_TYPES} from "../constants/PlayerTypes"; export class AlphaManager { @@ -24,8 +25,8 @@ export class AlphaManager { */ async transferAlpha(recipientAddress, alphaAmount) { await this.signingClientManager.queueMsgPlayerSend( - this.gameState.thisPlayerId, - this.gameState.thisPlayer.primary_address, + this.gameState.keyPlayers[PLAYER_TYPES.PLAYER].id, + this.gameState.keyPlayers[PLAYER_TYPES.PLAYER].player.primary_address, recipientAddress, [{ denom: "ualpha", @@ -39,7 +40,7 @@ export class AlphaManager { */ async infuse(alphaAmount) { await this.signingClientManager.queueMsgReactorInfuse( - this.gameState.thisPlayer.primary_address, + this.gameState.keyPlayers[PLAYER_TYPES.PLAYER].player.primary_address, this.gameState.thisGuild.validator, { denom: "ualpha", @@ -53,7 +54,7 @@ export class AlphaManager { */ async defuse(alphaAmount) { await this.signingClientManager.queueMsgReactorDefuse( - this.gameState.thisPlayer.primary_address, + this.gameState.keyPlayers[PLAYER_TYPES.PLAYER].player.primary_address, this.gameState.thisGuild.validator, { denom: "ualpha", diff --git a/src/js/managers/AuthManager.js b/src/js/managers/AuthManager.js index dd8ad7db..1163f60d 100644 --- a/src/js/managers/AuthManager.js +++ b/src/js/managers/AuthManager.js @@ -22,6 +22,7 @@ import {PlanetRaidStatusListener} from "../grass_listeners/PlanetRaidStatusListe import {StructStatusListener} from "../grass_listeners/StructStatusListener"; import {StructMineStatusListener} from "../grass_listeners/StructMineStatusListener"; import {StructRefineStatusListener} from "../grass_listeners/StructRefineStatusListener"; +import {PLAYER_TYPES} from "../constants/PlayerTypes"; export class AuthManager { @@ -159,7 +160,7 @@ export class AuthManager { console.log('Login response status:', response); if (response.success) { - this.gameState.setThisPlayerId(playerId); // Must be set before registering many GRASS listeners + this.gameState.keyPlayers[PLAYER_TYPES.PLAYER].setId(playerId); // Must be set before registering many GRASS listeners this.grassManager.registerListener(new LastActionListener(this.gameState)); this.grassManager.registerListener(new PlayerAlphaListener(this.gameState)); @@ -197,13 +198,13 @@ export class AuthManager { this.guildAPI.getStructsByPlayerId(playerId) ]); - this.gameState.setThisPlayer(player); - this.gameState.setLastActionBlockHeight(height); + this.gameState.keyPlayers[PLAYER_TYPES.PLAYER].setPlayer(player); + this.gameState.keyPlayers[PLAYER_TYPES.PLAYER].setLastActionBlockHeight(this.gameState.currentBlockHeight, height); this.gameState.setStructTypes(structTypes); - this.gameState.setThisPlayerFleet(fleet); - this.gameState.setThisPlayerStructs(structs); + this.gameState.keyPlayers[PLAYER_TYPES.PLAYER].fleet = fleet; + this.gameState.keyPlayers[PLAYER_TYPES.PLAYER].setStructs(structs); - if (this.gameState.thisPlayer.planet_id) { + if (this.gameState.keyPlayers[PLAYER_TYPES.PLAYER].player.planet_id) { const [ planet, @@ -211,14 +212,14 @@ export class AuthManager { planetPlanetRaidInfo, raidPlanetRaidInfo ] = await Promise.all([ - this.guildAPI.getPlanet(this.gameState.thisPlayer.planet_id), - this.guildAPI.getPlanetaryShieldInfo(this.gameState.thisPlayer.planet_id), - this.guildAPI.getActivePlanetRaidByPlanetId(this.gameState.thisPlayer.planet_id), - this.guildAPI.getActivePlanetRaidByFleetId(this.gameState.thisPlayer.fleet_id) + this.guildAPI.getPlanet(this.gameState.keyPlayers[PLAYER_TYPES.PLAYER].player.planet_id), + this.guildAPI.getPlanetaryShieldInfo(this.gameState.keyPlayers[PLAYER_TYPES.PLAYER].player.planet_id), + this.guildAPI.getActivePlanetRaidByPlanetId(this.gameState.keyPlayers[PLAYER_TYPES.PLAYER].player.planet_id), + this.guildAPI.getActivePlanetRaidByFleetId(this.gameState.keyPlayers[PLAYER_TYPES.PLAYER].player.fleet_id) ]); - this.gameState.setPlanet(planet); - this.gameState.setPlanetShieldInfo(shieldInfo); + this.gameState.keyPlayers[PLAYER_TYPES.PLAYER].setPlanet(planet); + this.gameState.keyPlayers[PLAYER_TYPES.PLAYER].setPlanetShieldInfo(shieldInfo, this.gameState.currentBlockHeight); this.gameState.setPlanetPlanetRaidInfo(planetPlanetRaidInfo); this.gameState.setRaidPlanetRaidInfo(raidPlanetRaidInfo); @@ -379,7 +380,7 @@ export class AuthManager { this.grassManager.registerListener(playerAddressApprovedListener); await this.signingClientManager.queueMsgAddressRegister( - this.gameState.thisPlayerId, + this.gameState.keyPlayers[PLAYER_TYPES.PLAYER].id, playerAddressPending.address, playerAddressPending.pubkey, playerAddressPending.signature, diff --git a/src/js/managers/FleetManager.js b/src/js/managers/FleetManager.js index e2e1c06f..a8c14380 100644 --- a/src/js/managers/FleetManager.js +++ b/src/js/managers/FleetManager.js @@ -1,4 +1,6 @@ +import {PLAYER_TYPES} from "../constants/PlayerTypes"; + export class FleetManager { /** @@ -15,7 +17,7 @@ export class FleetManager { */ async moveFleet(destinationLocationId) { await this.signingClientManager.queueMsgFleetMove( - this.gameState.thisPlayer.fleet_id, + this.gameState.keyPlayers[PLAYER_TYPES.PLAYER].player.fleet_id, destinationLocationId ); } diff --git a/src/js/managers/MapMananger.js b/src/js/managers/MapMananger.js index 6333126e..4ea78a73 100644 --- a/src/js/managers/MapMananger.js +++ b/src/js/managers/MapMananger.js @@ -1,6 +1,7 @@ import {PLAYER_MAP_ROLES} from "../constants/PlayerMapRoles"; import {MAP_CONTAINER_IDS} from "../constants/MapConstants"; import {HUD_IDS} from "../constants/HUDConstants"; +import {PLAYER_TYPES} from "../constants/PlayerTypes"; export class MapManager { @@ -12,16 +13,16 @@ export class MapManager { } configureAlphaBaseMap() { - this.gameState.alphaBaseMap.setPlanet(this.gameState.planet); - this.gameState.alphaBaseMap.setDefender(this.gameState.thisPlayer); - this.gameState.alphaBaseMap.setAttacker(this.gameState.planetRaider); + this.gameState.alphaBaseMap.setPlanet(this.gameState.keyPlayers[PLAYER_TYPES.PLAYER].planet); + this.gameState.alphaBaseMap.setDefender(this.gameState.keyPlayers[PLAYER_TYPES.PLAYER].player); + this.gameState.alphaBaseMap.setAttacker(this.gameState.keyPlayers[PLAYER_TYPES.PLANET_RAIDER].player); this.gameState.alphaBaseMap.setPlayerMapRole(PLAYER_MAP_ROLES.DEFENDER); } configureRaidMap() { - this.gameState.raidMap.setPlanet(this.gameState.raidPlanet); - this.gameState.raidMap.setDefender(this.gameState.raidEnemy); - this.gameState.raidMap.setAttacker(this.gameState.thisPlayer); + this.gameState.raidMap.setPlanet(this.gameState.keyPlayers[PLAYER_TYPES.RAID_ENEMY].planet); + this.gameState.raidMap.setDefender(this.gameState.keyPlayers[PLAYER_TYPES.RAID_ENEMY].player); + this.gameState.raidMap.setAttacker(this.gameState.keyPlayers[PLAYER_TYPES.PLAYER].player); this.gameState.raidMap.setPlayerMapRole(PLAYER_MAP_ROLES.ATTACKER); } @@ -51,7 +52,7 @@ export class MapManager { document.getElementById(HUD_IDS.ACTION_BAR_RAID_ENEMY).classList.remove('hidden'); } else if (mapContainerId === MAP_CONTAINER_IDS.ALPHA_BASE) { document.getElementById(HUD_IDS.STATUS_BAR_TOP_RIGHT_ALPHA_BASE).classList.remove('hidden'); - if (this.gameState.planetRaider) { + if (this.gameState.keyPlayers[PLAYER_TYPES.PLANET_RAIDER].player) { document.getElementById(HUD_IDS.ACTION_BAR_ALPHA_BASE_ENEMY).classList.remove('hidden'); } } diff --git a/src/js/managers/PlanetManager.js b/src/js/managers/PlanetManager.js index 95fa427d..aa426a78 100644 --- a/src/js/managers/PlanetManager.js +++ b/src/js/managers/PlanetManager.js @@ -1,4 +1,4 @@ -//TODO: Awaiting working stargate ts client +import {PLAYER_TYPES} from "../constants/PlayerTypes"; export class PlanetManager { @@ -13,7 +13,7 @@ export class PlanetManager { async findNewPlanet() { await this.signingClientManager.queueMsgPlanetExplore( - this.gameState.thisPlayerId + this.gameState.keyPlayers[PLAYER_TYPES.PLAYER].id ); } } \ No newline at end of file diff --git a/src/js/managers/RaidManager.js b/src/js/managers/RaidManager.js index 56bb18fb..5b0ea53e 100644 --- a/src/js/managers/RaidManager.js +++ b/src/js/managers/RaidManager.js @@ -2,6 +2,7 @@ import {RaidEnemyLastActionListener} from "../grass_listeners/RaidEnemyLastActio import {RaidEnemyOreListener} from "../grass_listeners/RaidEnemyOreListener"; import {PlanetRaiderLastActionListener} from "../grass_listeners/PlanetRaiderLastActionListener"; import {RaidStatusListener} from "../grass_listeners/RaidStatusListener"; +import {PLAYER_TYPES} from "../constants/PlayerTypes"; export class RaidManager { @@ -27,7 +28,7 @@ export class RaidManager { * @return {Promise} */ async initRaidEnemy() { - if (!this.gameState.raidPlanetRaidInfo.isRaidActive()) { + if (!this.gameState.keyPlayers[PLAYER_TYPES.RAID_ENEMY].planetRaidInfo.isRaidActive()) { return; } @@ -43,27 +44,27 @@ export class RaidManager { fleet, structs, ] = await Promise.all([ - this.guildAPI.getPlayer(this.gameState.raidPlanetRaidInfo.planet_owner), - this.guildAPI.getPlayerLastActionBlockHeight(this.gameState.raidPlanetRaidInfo.planet_owner), - this.guildAPI.getPlanet(this.gameState.raidPlanetRaidInfo.planet_id), - this.guildAPI.getPlanetaryShieldInfo(this.gameState.raidPlanetRaidInfo.planet_id), - this.guildAPI.getFleetByPlayerId(this.gameState.raidPlanetRaidInfo.planet_owner), - this.guildAPI.getStructsByPlayerId(this.gameState.raidPlanetRaidInfo.planet_owner) + this.guildAPI.getPlayer(this.gameState.keyPlayers[PLAYER_TYPES.RAID_ENEMY].id), + this.guildAPI.getPlayerLastActionBlockHeight(this.gameState.keyPlayers[PLAYER_TYPES.RAID_ENEMY].id), + this.guildAPI.getPlanet(this.gameState.keyPlayers[PLAYER_TYPES.RAID_ENEMY].planetRaidInfo.planet_id), + this.guildAPI.getPlanetaryShieldInfo(this.gameState.keyPlayers[PLAYER_TYPES.RAID_ENEMY].planetRaidInfo.planet_id), + this.guildAPI.getFleetByPlayerId(this.gameState.keyPlayers[PLAYER_TYPES.RAID_ENEMY].id), + this.guildAPI.getStructsByPlayerId(this.gameState.keyPlayers[PLAYER_TYPES.RAID_ENEMY].id) ]); - this.gameState.setRaidEnemy(player); - this.gameState.setRaidEnemyLastActionBlockHeight(height); - this.gameState.setRaidPlanet(planet); - this.gameState.setRaidPlanetShieldInfo(shieldInfo); - this.gameState.setRaidEnemyFleet(fleet); - this.gameState.setRaidEnemyStructs(structs); + this.gameState.keyPlayers[PLAYER_TYPES.RAID_ENEMY].setPlayer(player); + this.gameState.keyPlayers[PLAYER_TYPES.RAID_ENEMY].setLastActionBlockHeight(this.gameState.currentBlockHeight, height); + this.gameState.keyPlayers[PLAYER_TYPES.RAID_ENEMY].setPlanet(planet); + this.gameState.keyPlayers[PLAYER_TYPES.RAID_ENEMY].setPlanetShieldInfo(shieldInfo, this.gameState.currentBlockHeight); + this.gameState.keyPlayers[PLAYER_TYPES.RAID_ENEMY].fleet = fleet; + this.gameState.keyPlayers[PLAYER_TYPES.RAID_ENEMY].setStructs(structs); } /** * @return {Promise} */ async initPlanetRaider() { - if (!this.gameState.planetPlanetRaidInfo.isRaidActive()) { + if (!this.gameState.keyPlayers[PLAYER_TYPES.PLAYER].planetRaidInfo.isRaidActive()) { return; } @@ -75,15 +76,15 @@ export class RaidManager { fleet, structs ] = await Promise.all([ - this.guildAPI.getPlayer(this.gameState.planetPlanetRaidInfo.fleet_owner), - this.guildAPI.getPlayerLastActionBlockHeight(this.gameState.planetPlanetRaidInfo.fleet_owner), - this.guildAPI.getFleetByPlayerId(this.gameState.planetPlanetRaidInfo.fleet_owner), - this.guildAPI.getStructsByPlayerId(this.gameState.planetPlanetRaidInfo.fleet_owner) + this.guildAPI.getPlayer(this.gameState.keyPlayers[PLAYER_TYPES.PLANET_RAIDER].id), + this.guildAPI.getPlayerLastActionBlockHeight(this.gameState.keyPlayers[PLAYER_TYPES.PLANET_RAIDER].id), + this.guildAPI.getFleetByPlayerId(this.gameState.keyPlayers[PLAYER_TYPES.PLANET_RAIDER].id), + this.guildAPI.getStructsByPlayerId(this.gameState.keyPlayers[PLAYER_TYPES.PLANET_RAIDER].id) ]); - this.gameState.setPlanetRaider(player); - this.gameState.setPlanetRaiderLastActionBlockHeight(height); - this.gameState.setPlanetRaiderFleet(fleet); - this.gameState.setPlanetRaiderStructs(structs); + this.gameState.keyPlayers[PLAYER_TYPES.PLANET_RAIDER].setPlayer(player); + this.gameState.keyPlayers[PLAYER_TYPES.PLANET_RAIDER].setLastActionBlockHeight(this.gameState.currentBlockHeight, height); + this.gameState.keyPlayers[PLAYER_TYPES.PLANET_RAIDER].fleet = fleet; + this.gameState.keyPlayers[PLAYER_TYPES.PLANET_RAIDER].setStructs(structs); } } \ No newline at end of file diff --git a/src/js/managers/SigningClientManager.js b/src/js/managers/SigningClientManager.js index 888beb8a..0ac8184e 100644 --- a/src/js/managers/SigningClientManager.js +++ b/src/js/managers/SigningClientManager.js @@ -80,6 +80,7 @@ import {EVENTS} from "../constants/Events"; import {FEE} from "../constants/Fee"; import {AMBIT_ENUM} from "../constants/Ambits"; import {TASK} from "../constants/TaskConstants"; +import {PLAYER_TYPES} from "../constants/PlayerTypes"; export class SigningClientManager { @@ -191,7 +192,7 @@ export class SigningClientManager { * @param {string} playerId */ async queueMsgPlanetExplore(playerId) { - this.gameState.setLastActionBlockHeight(this.gameState.currentBlockHeight + 1); + this.gameState.keyPlayers[PLAYER_TYPES.PLAYER].setLastActionBlockHeight(this.gameState.currentBlockHeight, this.gameState.currentBlockHeight + 1); this.queue({ typeUrl: '/structs.structs.MsgPlanetExplore', value: MsgPlanetExplore.fromPartial({ @@ -240,7 +241,7 @@ export class SigningClientManager { * @param {string} destinationLocationId */ async queueMsgFleetMove(fleetId, destinationLocationId) { - this.gameState.setLastActionBlockHeight(this.gameState.currentBlockHeight + 1); + this.gameState.keyPlayers[PLAYER_TYPES.PLAYER].setLastActionBlockHeight(this.gameState.currentBlockHeight, this.gameState.currentBlockHeight + 1); this.queue({ typeUrl: '/structs.structs.MsgFleetMove', value: MsgFleetMove.fromPartial({ @@ -729,7 +730,7 @@ export class SigningClientManager { * @param {string} structId */ async queueMsgStructActivate(structId) { - this.gameState.setLastActionBlockHeight(this.gameState.currentBlockHeight + 1); + this.gameState.keyPlayers[PLAYER_TYPES.PLAYER].setLastActionBlockHeight(this.gameState.currentBlockHeight, this.gameState.currentBlockHeight + 1); this.queue({ typeUrl: '/structs.structs.MsgStructActivate', value: MsgStructActivate.fromPartial({ @@ -759,7 +760,7 @@ export class SigningClientManager { * @param {number} slot */ async queueMsgStructBuildInitiate(playerId, structTypeId, operatingAmbit, slot) { - this.gameState.setLastActionBlockHeight(this.gameState.currentBlockHeight + 1); + this.gameState.keyPlayers[PLAYER_TYPES.PLAYER].setLastActionBlockHeight(this.gameState.currentBlockHeight, this.gameState.currentBlockHeight + 1); const ambitNumber = AMBIT_ENUM[operatingAmbit.toUpperCase()]; this.queue({ typeUrl: '/structs.structs.MsgStructBuildInitiate', @@ -791,7 +792,7 @@ export class SigningClientManager { * @param {string} protectedStructId */ async queueMsgStructDefenseSet(defenderStructId, protectedStructId) { - this.gameState.setLastActionBlockHeight(this.gameState.currentBlockHeight + 1); + this.gameState.keyPlayers[PLAYER_TYPES.PLAYER].setLastActionBlockHeight(this.gameState.currentBlockHeight, this.gameState.currentBlockHeight + 1); this.queue({ typeUrl: '/structs.structs.MsgStructDefenseSet', value: MsgStructDefenseSet.fromPartial({ @@ -822,7 +823,7 @@ export class SigningClientManager { * @param {number} slot */ async queueMsgStructMove(structId, locationType, ambit, slot) { - this.gameState.setLastActionBlockHeight(this.gameState.currentBlockHeight + 1); + this.gameState.keyPlayers[PLAYER_TYPES.PLAYER].setLastActionBlockHeight(this.gameState.currentBlockHeight, this.gameState.currentBlockHeight + 1); const ambitNumber = AMBIT_ENUM[ambit.toUpperCase()]; this.queue({ typeUrl: '/structs.structs.MsgStructMove', @@ -842,7 +843,7 @@ export class SigningClientManager { * @param {string} weaponSystem */ async queueMsgStructAttack(operatingStructId, targetStructId, weaponSystem) { - this.gameState.setLastActionBlockHeight(this.gameState.currentBlockHeight + 1); + this.gameState.keyPlayers[PLAYER_TYPES.PLAYER].setLastActionBlockHeight(this.gameState.currentBlockHeight, this.gameState.currentBlockHeight + 1); this.queue({ typeUrl: '/structs.structs.MsgStructAttack', value: MsgStructAttack.fromPartial({ @@ -858,7 +859,7 @@ export class SigningClientManager { * @param {string} structId */ async queueMsgStructStealthActivate(structId) { - this.gameState.setLastActionBlockHeight(this.gameState.currentBlockHeight + 1); + this.gameState.keyPlayers[PLAYER_TYPES.PLAYER].setLastActionBlockHeight(this.gameState.currentBlockHeight, this.gameState.currentBlockHeight + 1); this.queue({ typeUrl: '/structs.structs.MsgStructStealthActivate', value: MsgStructStealthActivate.fromPartial({ @@ -872,7 +873,7 @@ export class SigningClientManager { * @param {string} structId */ async queueMsgStructStealthDeactivate(structId) { - this.gameState.setLastActionBlockHeight(this.gameState.currentBlockHeight + 1); + this.gameState.keyPlayers[PLAYER_TYPES.PLAYER].setLastActionBlockHeight(this.gameState.currentBlockHeight, this.gameState.currentBlockHeight + 1); this.queue({ typeUrl: '/structs.structs.MsgStructStealthDeactivate', value: MsgStructStealthDeactivate.fromPartial({ diff --git a/src/js/managers/StructManager.js b/src/js/managers/StructManager.js index 7f605df3..5f0e04c1 100644 --- a/src/js/managers/StructManager.js +++ b/src/js/managers/StructManager.js @@ -54,9 +54,9 @@ export class StructManager { * @type {Struct[]} */ const allStructs = [ - ...Object.values(this.gameState.thisPlayerStructs), - ...Object.values(this.gameState.planetRaiderStructs), - ...Object.values(this.gameState.raidEnemyStructs), + ...Object.values(this.gameState.keyPlayers[PLAYER_TYPES.PLAYER].structs), + ...Object.values(this.gameState.keyPlayers[PLAYER_TYPES.PLANET_RAIDER].structs), + ...Object.values(this.gameState.keyPlayers[PLAYER_TYPES.RAID_ENEMY].structs), ...Object.values(this.gameState.previewDefenderStructs), ...Object.values(this.gameState.previewAttackerStructs) ]; @@ -103,7 +103,7 @@ export class StructManager { */ getDeploymentBlockerBuildLimitReached(structType) { if (structType.build_limit > 0) { - const structTypeCount = Object.values(this.gameState.thisPlayerStructs).filter(struct => + const structTypeCount = Object.values(this.gameState.keyPlayers[PLAYER_TYPES.PLAYER].structs).filter(struct => struct.type === structType.id ).length; @@ -120,7 +120,8 @@ export class StructManager { * @return {string} */ getDeploymentBlockerInsufficientCharge(structType) { - return this.gameState.getThisPlayerCharge() < structType.build_charge + const playerCharge = this.gameState.keyPlayers[PLAYER_TYPES.PLAYER].getCharge(this.gameState.currentBlockHeight); + return playerCharge < structType.build_charge ? 'Insufficient battery' : ''; } @@ -129,8 +130,8 @@ export class StructManager { * @return {number} */ getEnergySupply() { - let totalLoad = this.gameState.thisPlayer.load + this.gameState.thisPlayer.structs_load; - let totalCapacity = this.gameState.thisPlayer.capacity + this.gameState.thisPlayer.connection_capacity; + let totalLoad = this.gameState.keyPlayers[PLAYER_TYPES.PLAYER].player.load + this.gameState.keyPlayers[PLAYER_TYPES.PLAYER].player.structs_load; + let totalCapacity = this.gameState.keyPlayers[PLAYER_TYPES.PLAYER].player.capacity + this.gameState.keyPlayers[PLAYER_TYPES.PLAYER].player.connection_capacity; return totalCapacity - totalLoad; } @@ -155,7 +156,7 @@ export class StructManager { return ''; } - return !this.gameState.thisPlayerFleet.command_struct + return !this.gameState.keyPlayers[PLAYER_TYPES.PLAYER].fleet.command_struct ? 'Requires command ship' : ''; } @@ -169,7 +170,7 @@ export class StructManager { return ''; } - return this.gameState.thisPlayerFleet.status === 'away' + return this.gameState.keyPlayers[PLAYER_TYPES.PLAYER].fleet.status === 'away' ? 'Command ship is away' : ''; } @@ -199,9 +200,9 @@ export class StructManager { return null; } - return this.gameState.thisPlayerStructs[structId] - || this.gameState.planetRaiderStructs[structId] - || this.gameState.raidEnemyStructs[structId] + return this.gameState.keyPlayers[PLAYER_TYPES.PLAYER].structs[structId] + || this.gameState.keyPlayers[PLAYER_TYPES.PLANET_RAIDER].structs[structId] + || this.gameState.keyPlayers[PLAYER_TYPES.RAID_ENEMY].structs[structId] || this.gameState.previewDefenderStructs[structId] || this.gameState.previewAttackerStructs[structId] || null; @@ -285,11 +286,11 @@ export class StructManager { getStructsByPlayerType(playerType) { switch (playerType) { case PLAYER_TYPES.PLAYER: - return this.gameState.thisPlayerStructs; + return this.gameState.keyPlayers[PLAYER_TYPES.PLAYER].structs; case PLAYER_TYPES.PLANET_RAIDER: - return this.gameState.planetRaiderStructs; + return this.gameState.keyPlayers[PLAYER_TYPES.PLANET_RAIDER].structs; case PLAYER_TYPES.RAID_ENEMY: - return this.gameState.raidEnemyStructs; + return this.gameState.keyPlayers[PLAYER_TYPES.RAID_ENEMY].structs; default: throw new Error(`No such player type ${playerType}`); } diff --git a/src/js/managers/TaskManager.js b/src/js/managers/TaskManager.js index 244a6f42..cdb69a31 100644 --- a/src/js/managers/TaskManager.js +++ b/src/js/managers/TaskManager.js @@ -8,6 +8,7 @@ import {TaskCompletedEvent} from "../events/TaskCompletedEvent"; import {TaskManagerStatusChangedEvent} from "../events/TaskManagerStatusChangedEvent"; import {TASK_STATUS} from "../constants/TaskStatus"; import {OBJECT_TYPES} from "../constants/ObjectTypes"; +import {PLAYER_TYPES} from "../constants/PlayerTypes"; /* @@ -566,7 +567,7 @@ export class TaskManager { return; } - const work = await this.guildAPI.getWorkByPlayerId(this.gameState.thisPlayerId); + const work = await this.guildAPI.getWorkByPlayerId(this.gameState.keyPlayers[PLAYER_TYPES.PLAYER].id); work.forEach((workTask) => { const task = this.taskStateFactory.initTaskFromWork(workTask); this.spawn(task); diff --git a/src/js/models/GameState.js b/src/js/models/GameState.js index cce17cf3..c5b459b3 100644 --- a/src/js/models/GameState.js +++ b/src/js/models/GameState.js @@ -5,15 +5,14 @@ import {ChargeLevelChangedEvent} from "../events/ChargeLevelChangedEvent"; import {PLAYER_TYPES} from "../constants/PlayerTypes"; import {WalletManager} from "../managers/WalletManager"; import {GuildAPI} from "../api/GuildAPI"; -import {ShieldHealthCalculator} from "../util/ShieldHealthCalculator"; -import {PlanetaryShieldInfoDTO} from "../dtos/PlanetaryShieldInfoDTO"; import {PlanetRaid} from "./PlanetRaid"; import {MAP_CONTAINER_IDS} from "../constants/MapConstants"; import {StructTypeCollection} from "./StructTypeCollection"; import {Struct} from "./Struct"; -import {Player} from "./Player"; -import {Fleet} from "./Fleet"; import {StructType} from "./StructType"; +import {KeyPlayer} from "./KeyPlayer"; +import {StructCountChangedEvent} from "../events/StructCountChangedEvent"; +import {PlanetRaidStatusChangedEvent} from "../events/PlanetRaidStatusChangedEvent"; export class GameState { @@ -21,7 +20,6 @@ export class GameState { this.chargeCalculator = new ChargeCalculator(); this.walletManager = new WalletManager(); this.guildAPI = new GuildAPI(); - this.shieldHealthCalculator = new ShieldHealthCalculator(); /* Multistep Request Data */ this.signupRequest = new SignupRequestDTO(); @@ -30,14 +28,7 @@ export class GameState { /* Persistent Data */ this.mnemonic = null; this.pubkey = null; - this.thisPlayerId = null; this.lastSaveBlockHeight = 0; - this.lastActionBlockHeight = 0; - this.planetRaiderLastActionBlockHeight = 0; - this.raidEnemyLastActionBlockHeight = 0; - this.chargeLevel = 0; - this.planetRaiderChargeLevel = 0; - this.raidEnemyChargeLevel = 0; this.activeMapContainerId = MAP_CONTAINER_IDS.ALPHA_BASE; /* Must Be Re-instantiated On Load */ @@ -59,50 +50,14 @@ export class GameState { /** @type {Guild} */ this.thisGuild = null; - /** @type {Player} */ - this.thisPlayer = null; - - /** @type {Planet} */ - this.planet = null; - - this.planetShieldHealth = 100; - - this.planetShieldInfo = new PlanetaryShieldInfoDTO(); - - this.planetPlanetRaidInfo = new PlanetRaid(); - - /** @type {Fleet} */ - this.thisPlayerFleet = null; - - /** @type {Object} */ - this.thisPlayerStructs = {}; - - /** @type {Player} */ - this.planetRaider = null; - - /** @type {Fleet} */ - this.planetRaiderFleet = null; - - /** @type {Object} */ - this.planetRaiderStructs = {}; - - this.raidPlanetRaidInfo = new PlanetRaid(); - - /** @type {Player} */ - this.raidEnemy = null; - - /** @type {Planet} */ - this.raidPlanet = null; - - this.raidPlanetShieldHealth = 100; - - this.raidPlanetShieldInfo = new PlanetaryShieldInfoDTO(); - - /** @type {Fleet} */ - this.raidEnemyFleet = null; - - /** @type {Object} */ - this.raidEnemyStructs = {}; + /** + * @type {{player: KeyPlayer, raid_enemy: KeyPlayer, planet_raider: KeyPlayer}} + */ + this.keyPlayers = { + [PLAYER_TYPES.PLAYER]: new KeyPlayer(PLAYER_TYPES.PLAYER), + [PLAYER_TYPES.RAID_ENEMY]: new KeyPlayer(PLAYER_TYPES.RAID_ENEMY), + [PLAYER_TYPES.PLANET_RAIDER]: new KeyPlayer(PLAYER_TYPES.PLANET_RAIDER, false) + }; this.structTypes = new StructTypeCollection(); @@ -125,26 +80,25 @@ export class GameState { * @type {Map} */ this.pendingBuilds = new Map(); + + /* Allow saving from other classes without cyclical references. */ + window.addEventListener(EVENTS.SAVE_GAME_STATE, this.save.bind(this)); } save() { this.lastSaveBlockHeight = this.currentBlockHeight; - if (!this.mnemonic) { - console.error('Nullifying mnemonic!', this); - } - localStorage.setItem('gameState', JSON.stringify({ mnemonic: this.mnemonic, pubkey: this.pubkey, - thisPlayerId: this.thisPlayerId, + thisPlayerId: this.keyPlayers[PLAYER_TYPES.PLAYER].id, lastSaveBlockHeight: this.lastSaveBlockHeight, - lastActionBlockHeight: this.lastActionBlockHeight, - planetRaiderLastActionBlockHeight: this.planetRaiderLastActionBlockHeight, - raidEnemyLastActionBlockHeight: this.raidEnemyLastActionBlockHeight, - chargeLevel: this.chargeLevel, - planetRaiderChargeLevel: this.planetRaiderChargeLevel, - raidEnemyChargeLevel: this.raidEnemyChargeLevel, + lastActionBlockHeight: this.keyPlayers[PLAYER_TYPES.PLAYER].lastActionBlockHeight, + planetRaiderLastActionBlockHeight: this.keyPlayers[PLAYER_TYPES.PLANET_RAIDER].lastActionBlockHeight, + raidEnemyLastActionBlockHeight: this.keyPlayers[PLAYER_TYPES.RAID_ENEMY].lastActionBlockHeight, + chargeLevel: this.keyPlayers[PLAYER_TYPES.PLAYER].chargeLevel, + planetRaiderChargeLevel: this.keyPlayers[PLAYER_TYPES.PLANET_RAIDER].chargeLevel, + raidEnemyChargeLevel: this.keyPlayers[PLAYER_TYPES.RAID_ENEMY].chargeLevel, transferAmount: this.transferAmount, activeMapContainerId: this.activeMapContainerId })); @@ -157,7 +111,20 @@ export class GameState { return; } - Object.assign(this, JSON.parse(gameState)); + const gameStateParsed = JSON.parse(gameState); + + this.mnemonic = gameStateParsed.mnemonic; + this.pubkey = gameStateParsed.pubkey; + this.keyPlayers[PLAYER_TYPES.PLAYER].id = gameStateParsed.thisPlayerId; + this.lastSaveBlockHeight = gameStateParsed.lastSaveBlockHeight; + this.keyPlayers[PLAYER_TYPES.PLAYER].lastActionBlockHeight = gameStateParsed.lastActionBlockHeight; + this.keyPlayers[PLAYER_TYPES.PLANET_RAIDER].lastActionBlockHeight = gameStateParsed.planetRaiderLastActionBlockHeight; + this.keyPlayers[PLAYER_TYPES.RAID_ENEMY].lastActionBlockHeight = gameStateParsed.raidEnemyLastActionBlockHeight; + this.keyPlayers[PLAYER_TYPES.PLAYER].chargeLevel = gameStateParsed.chargeLevel; + this.keyPlayers[PLAYER_TYPES.PLANET_RAIDER].chargeLevel = gameStateParsed.planetRaiderChargeLevel; + this.keyPlayers[PLAYER_TYPES.RAID_ENEMY].chargeLevel = gameStateParsed.raidEnemyChargeLevel; + this.transferAmount = gameStateParsed.transferAmount; + this.activeMapContainerId = gameStateParsed.activeMapContainerId; // Properties to re-instantiate this.wallet = await this.walletManager.createWallet(this.mnemonic); @@ -165,247 +132,26 @@ export class GameState { this.signingAccount = accounts[0]; } - /** - * @param {string} id - */ - setThisPlayerId(id) { - this.thisPlayerId = id; - - this.save(); - } - /** * @param {number} height */ setCurrentBlockHeight(height) { this.currentBlockHeight = height; - this.chargeLevel = this.chargeCalculator.calc(this.currentBlockHeight, this.lastActionBlockHeight); - this.setPlanetShieldHealth(); - if (this.planetPlanetRaidInfo.isRaidActive()) { - this.planetRaiderChargeLevel = this.chargeCalculator.calc(this.currentBlockHeight, this.planetRaiderLastActionBlockHeight); + Object.values(PLAYER_TYPES).forEach(playerType => { + if (this.keyPlayers[playerType].player) { + this.keyPlayers[playerType].chargeLevel = this.chargeCalculator.calc(this.currentBlockHeight, this.keyPlayers[playerType].lastActionBlockHeight); - window.dispatchEvent(new ChargeLevelChangedEvent(this.getPlanetRaiderId(), this.planetRaiderChargeLevel)); - } - - if (this.raidPlanetRaidInfo.isRaidActive()) { - this.raidEnemyChargeLevel = this.chargeCalculator.calc(this.currentBlockHeight, this.raidEnemyLastActionBlockHeight); - this.setRaidPlanetShieldHealth(); - - window.dispatchEvent(new ChargeLevelChangedEvent(this.getRaidEnemyId(), this.raidEnemyChargeLevel)); - } + window.dispatchEvent(new ChargeLevelChangedEvent(this.keyPlayers[playerType].id, this.keyPlayers[playerType].chargeLevel)); + } + if (this.keyPlayers[playerType].planetUsedForMap && this.keyPlayers[playerType].planetRaidInfo.isRaidActive()) { + this.keyPlayers[playerType].setPlanetShieldHealth(height); + } + }); this.save(); console.log(`New Block ${height}`); - window.dispatchEvent(new ChargeLevelChangedEvent(this.thisPlayerId, this.chargeLevel)); - } - - /** - * @param {number} height - */ - setLastActionBlockHeight(height) { - this.lastActionBlockHeight = height; - this.chargeLevel = this.chargeCalculator.calc(this.currentBlockHeight, this.lastActionBlockHeight); - this.save(); - - window.dispatchEvent(new ChargeLevelChangedEvent(this.thisPlayerId, this.chargeLevel)); - } - - /** - * @param {number} height - */ - setPlanetRaiderLastActionBlockHeight(height) { - this.planetRaiderLastActionBlockHeight = height; - this.planetRaiderChargeLevel = this.chargeCalculator.calc(this.currentBlockHeight, this.planetRaiderLastActionBlockHeight); - this.save(); - - window.dispatchEvent(new ChargeLevelChangedEvent(this.getPlanetRaiderId(), this.planetRaiderChargeLevel)); - } - - setRaidEnemyLastActionBlockHeight(height) { - this.raidEnemyLastActionBlockHeight = height; - this.raidEnemyChargeLevel = this.chargeCalculator.calc(this.currentBlockHeight, this.raidEnemyLastActionBlockHeight); - this.save(); - - window.dispatchEvent(new ChargeLevelChangedEvent(this.getRaidEnemyId(), this.raidEnemyChargeLevel)); - } - - /** - * @param {Player} player - */ - setThisPlayer(player) { - this.thisPlayer = player; - - window.dispatchEvent(new CustomEvent(EVENTS.ALPHA_COUNT_CHANGED)); - window.dispatchEvent(new CustomEvent(EVENTS.ENERGY_USAGE_CHANGED)); - window.dispatchEvent(new CustomEvent(EVENTS.ORE_COUNT_CHANGED)); - } - - /** - * @param {Player} player - */ - setPlanetRaider(player) { - this.planetRaider = player; - } - - /** - * @param {Player} player - */ - setRaidEnemy(player) { - this.raidEnemy = player; - - window.dispatchEvent(new CustomEvent(EVENTS.ORE_COUNT_CHANGED_RAID_ENEMY)); - } - - /** - * @param {number} alpha - */ - setThisPlayerAlpha(alpha) { - if (this.thisPlayer && this.thisPlayer.hasOwnProperty('alpha')) { - this.thisPlayer.alpha = alpha; - this.save(); - - window.dispatchEvent(new CustomEvent(EVENTS.ALPHA_COUNT_CHANGED)); - } - } - - /** - * @param {number} ore - */ - setThisPlayerOre(ore) { - if (this.thisPlayer && this.thisPlayer.hasOwnProperty('ore')) { - this.thisPlayer.ore = ore; - this.save(); - - window.dispatchEvent(new CustomEvent(EVENTS.ORE_COUNT_CHANGED)); - } - } - - /** - * @param {number} ore - */ - setRaidEnemyOre(ore) { - if (this.raidEnemy && this.raidEnemy.hasOwnProperty('ore')) { - this.raidEnemy.ore = ore; - this.save(); - - window.dispatchEvent(new CustomEvent(EVENTS.ORE_COUNT_CHANGED_RAID_ENEMY)); - } - } - - /** - * @param {number} capacity - */ - setThisPlayerCapacity(capacity) { - if (this.thisPlayer && this.thisPlayer.hasOwnProperty('capacity')) { - this.thisPlayer.capacity = capacity; - this.save(); - - window.dispatchEvent(new CustomEvent(EVENTS.ENERGY_USAGE_CHANGED)); - } - } - - /** - * @param {number} connectionCapacity - */ - setConnectionCapacity(connectionCapacity) { - if (this.thisPlayer && this.thisPlayer.hasOwnProperty('connection_capacity')) { - this.thisPlayer.connection_capacity = connectionCapacity; - this.save(); - - window.dispatchEvent(new CustomEvent(EVENTS.ENERGY_USAGE_CHANGED)); - } - } - - /** - * @param {number} load - */ - setThisPlayerLoad(load) { - if (this.thisPlayer && this.thisPlayer.hasOwnProperty('load')) { - this.thisPlayer.load = load; - this.save(); - - window.dispatchEvent(new CustomEvent(EVENTS.ENERGY_USAGE_CHANGED)); - } - } - - /** - * @param {number} structsLoad - */ - setThisPlayerStructsLoad(structsLoad) { - if (this.thisPlayer && this.thisPlayer.hasOwnProperty('structs_load')) { - this.thisPlayer.structs_load = structsLoad; - this.save(); - - window.dispatchEvent(new CustomEvent(EVENTS.ENERGY_USAGE_CHANGED)); - } - } - - setPlanet(planet) { - this.planet = planet; - - window.dispatchEvent(new CustomEvent(EVENTS.UNDISCOVERED_ORE_COUNT_CHANGED)); - } - - setRaidPlanet(planet) { - this.raidPlanet = planet; - - window.dispatchEvent(new CustomEvent(EVENTS.UNDISCOVERED_ORE_COUNT_CHANGED_RAID_PLANET)); - } - - setPlanetShieldHealth() { - let health = 100; - - if ( - this.planetPlanetRaidInfo.isRaidActive() - && this.currentBlockHeight - && this.planetShieldInfo.block_start_raid - ) { - health = this.shieldHealthCalculator.calc( - this.planetShieldInfo.planetary_shield, - this.planetShieldInfo.block_start_raid, - this.currentBlockHeight - ); - } - - this.planetShieldHealth = health; - - window.dispatchEvent(new CustomEvent(EVENTS.SHIELD_HEALTH_CHANGED)); - } - - setRaidPlanetShieldHealth() { - let health = 100; - - if (this.currentBlockHeight && this.raidPlanetShieldInfo.block_start_raid) { - health = this.shieldHealthCalculator.calc( - this.raidPlanetShieldInfo.planetary_shield, - this.raidPlanetShieldInfo.block_start_raid, - this.currentBlockHeight - ); - } - - this.raidPlanetShieldHealth = health; - - window.dispatchEvent(new CustomEvent(EVENTS.SHIELD_HEALTH_CHANGED_RAID_PLANET)); - } - - /** - * @param {PlanetaryShieldInfoDTO} info - */ - setPlanetShieldInfo(info) { - this.planetShieldInfo = info; - - this.setPlanetShieldHealth(); - } - - /** - * @param {PlanetaryShieldInfoDTO} info - */ - setRaidPlanetShieldInfo(info) { - this.raidPlanetShieldInfo = info; - - this.setRaidPlanetShieldHealth(); } /** @@ -413,11 +159,12 @@ export class GameState { * @param dispatchEvent */ setPlanetPlanetRaidInfo(info, dispatchEvent = true) { - this.planetPlanetRaidInfo = info; + this.keyPlayers[PLAYER_TYPES.PLAYER].planetRaidInfo = info; + this.keyPlayers[PLAYER_TYPES.PLANET_RAIDER].id = info.fleet_owner; this.save(); if (dispatchEvent) { - window.dispatchEvent(new CustomEvent(EVENTS.PLANET_RAID_STATUS_CHANGED)); + window.dispatchEvent(new PlanetRaidStatusChangedEvent(PLAYER_TYPES.PLAYER)); } } @@ -426,37 +173,12 @@ export class GameState { * @param dispatchEvent */ setRaidPlanetRaidInfo(info, dispatchEvent = true) { - this.raidPlanetRaidInfo = info; - this.save(); - - if (dispatchEvent) { - window.dispatchEvent(new CustomEvent(EVENTS.RAID_STATUS_CHANGED)); - } - } - - /** - * @param {string} status - * @param dispatchEvent - */ - setPlanetPlanetRaidStatus(status, dispatchEvent = true) { - this.planetPlanetRaidInfo.status = status; - this.save(); - - if (dispatchEvent) { - window.dispatchEvent(new CustomEvent(EVENTS.PLANET_RAID_STATUS_CHANGED)); - } - } - - /** - * @param {string} status - * @param dispatchEvent - */ - setRaidPlanetRaidStatus(status, dispatchEvent = true) { - this.raidPlanetRaidInfo.status = status; + this.keyPlayers[PLAYER_TYPES.RAID_ENEMY].planetRaidInfo = info; + this.keyPlayers[PLAYER_TYPES.RAID_ENEMY].id = info.planet_owner; this.save(); if (dispatchEvent) { - window.dispatchEvent(new CustomEvent(EVENTS.RAID_STATUS_CHANGED)); + window.dispatchEvent(new PlanetRaidStatusChangedEvent(PLAYER_TYPES.RAID_ENEMY)); } } @@ -483,102 +205,12 @@ export class GameState { this.structTypes.setStructTypes(types); } - /** - * @param {Fleet} fleet - */ - setThisPlayerFleet(fleet) { - this.thisPlayerFleet = fleet; - } - - /** - * @param {Fleet} fleet - */ - setPlanetRaiderFleet(fleet) { - this.planetRaiderFleet = fleet; - } - - /** - * @param {Fleet} fleet - */ - setRaidEnemyFleet(fleet) { - this.raidEnemyFleet = fleet; - } - - /** - * @param {Struct[]} structs - */ - setThisPlayerStructs(structs) { - this.thisPlayerStructs = {}; - structs.forEach(struct => { - this.thisPlayerStructs[struct.id] = struct; - }); - - window.dispatchEvent(new CustomEvent(EVENTS.STRUCT_COUNT_CHANGED)); - } - - /** - * @param {Struct[]} structs - */ - setPlanetRaiderStructs(structs) { - this.planetRaiderStructs = {}; - structs.forEach(struct => { - this.planetRaiderStructs[struct.id] = struct; - }); - } - - /** - * @param {Struct[]} structs - */ - setRaidEnemyStructs(structs) { - this.raidEnemyStructs = {}; - structs.forEach(struct => { - this.raidEnemyStructs[struct.id] = struct; - }); - - window.dispatchEvent(new CustomEvent(EVENTS.STRUCT_COUNT_CHANGED_RAID_PLANET)); - } - - /** - * @param {Struct} struct - */ - setThisPlayerStruct(struct) { - this.thisPlayerStructs[struct.id] = struct; - - window.dispatchEvent(new CustomEvent(EVENTS.STRUCT_COUNT_CHANGED)); - } - - /** - * @param {Struct} struct - */ - setPlanetRaiderStruct(struct) { - this.planetRaiderStructs[struct.id] = struct; - } - - /** - * @param {Struct} struct - */ - setRaidEnemyStruct(struct) { - this.raidEnemyStructs[struct.id] = struct; - - window.dispatchEvent(new CustomEvent(EVENTS.STRUCT_COUNT_CHANGED_RAID_PLANET)); - } - /** * @param {Struct} struct */ setStruct(struct) { const playerType = this.getPlayerTypeById(struct.owner); - switch (playerType) { - case PLAYER_TYPES.PLAYER: - this.setThisPlayerStruct(struct); - break; - case PLAYER_TYPES.PLANET_RAIDER: - this.setPlanetRaiderStruct(struct); - break; - case PLAYER_TYPES.RAID_ENEMY: - this.setRaidEnemyStruct(struct); - break; - } + this.keyPlayers[playerType].setStruct(struct); } /** @@ -588,24 +220,16 @@ export class GameState { * @return {Struct|null} The removed struct, or null if not found */ removeStruct(structId) { - const collections = [ - { structs: this.thisPlayerStructs, ownerCheck: this.thisPlayerId, event: EVENTS.STRUCT_COUNT_CHANGED }, - { structs: this.planetRaiderStructs, ownerCheck: null, event: null }, - { structs: this.raidEnemyStructs, ownerCheck: this.raidEnemy?.id, event: EVENTS.STRUCT_COUNT_CHANGED_RAID_PLANET } - ]; - - for (const { structs, ownerCheck, event } of collections) { - if (structs[structId]) { - const removedStruct = structs[structId]; - delete structs[structId]; + Object.keys(PLAYER_TYPES).forEach((playerType) => { + if (this.keyPlayers[playerType].structs[structId]) { + const removedStruct = this.keyPlayers[playerType].structs[structId]; + delete this.keyPlayers[playerType].structs[structId]; - if (event && removedStruct.owner === ownerCheck) { - window.dispatchEvent(new CustomEvent(event)); - } + window.dispatchEvent(new StructCountChangedEvent(playerType)); return removedStruct; } - } + }); return null; } @@ -661,18 +285,20 @@ export class GameState { } clearPlanetRaidData() { - this.planetPlanetRaidInfo = new PlanetRaid(); - this.planetRaider = null; - this.planetRaiderLastActionBlockHeight = 0; - this.setPlanetShieldHealth(); + this.keyPlayers[PLAYER_TYPES.PLAYER].planetRaidInfo = new PlanetRaid(); + this.keyPlayers[PLAYER_TYPES.PLANET_RAIDER].id = ''; + this.keyPlayers[PLAYER_TYPES.PLANET_RAIDER].player = null; + this.keyPlayers[PLAYER_TYPES.PLANET_RAIDER].lastActionBlockHeight = 0; + this.keyPlayers[PLAYER_TYPES.PLAYER].setPlanetShieldHealth(this.currentBlockHeight); this.save(); } clearRaidData() { - this.raidEnemy = null; - this.raidEnemyLastActionBlockHeight = 0; - this.raidPlanet = null; + this.keyPlayers[PLAYER_TYPES.RAID_ENEMY].id = ''; + this.keyPlayers[PLAYER_TYPES.RAID_ENEMY].player = null; + this.keyPlayers[PLAYER_TYPES.RAID_ENEMY].lastActionBlockHeight = 0; + this.keyPlayers[PLAYER_TYPES.RAID_ENEMY].planet = null; this.setRaidPlanetRaidInfo(new PlanetRaid()); this.save(); @@ -683,23 +309,9 @@ export class GameState { * @return {string|null} */ getPlayerIdByType(type) { - let id = null; - - switch (type) { - case PLAYER_TYPES.PLAYER: - id = (this.thisPlayer && this.thisPlayer.id) - ? this.thisPlayer.id - : this.thisPlayerId; - break; - case PLAYER_TYPES.PLANET_RAIDER: - id = (this.planetRaider && this.planetRaider.id) || id; - break; - case PLAYER_TYPES.RAID_ENEMY: - id = (this.raidEnemy && this.raidEnemy.id) || id; - break; - } - - return id; + return (this.keyPlayers[type] && this.keyPlayers[type].id) + ? this.keyPlayers[type].id + : null; } /** @@ -707,83 +319,15 @@ export class GameState { * @return {string} */ getPlayerTypeById(playerId) { - if (this.thisPlayerId === playerId) { - return PLAYER_TYPES.PLAYER; - } - - if (this.planetRaider && this.planetRaider.id === playerId) { - return PLAYER_TYPES.PLANET_RAIDER; - } - - if (this.raidEnemy && this.raidEnemy.id === playerId) { - return PLAYER_TYPES.RAID_ENEMY; - } + Object.values(PLAYER_TYPES).forEach(type => { + if (this.keyPlayers[type].id === playerId) { + return type; + } + }); throw new Error(`Player with ID ${playerId} has no type`); } - /** - * @return {string} - */ - getPlayerTag() { - return this.thisPlayer && this.thisPlayer.tag.length > 0 - ? `[${this.thisPlayer.tag}]` - : ''; - } - - /** - * @return {string} - */ - getPlayerUsername() { - return this.thisPlayer && this.thisPlayer.username.length > 0 - ? `${this.thisPlayer.username}` - : 'Name Redacted'; - } - - /** - * @return {null|string} - */ - getPlanetRaiderId() { - return this.planetPlanetRaidInfo.fleet_owner - } - - /** - * @return {null|string} - */ - getRaidEnemyId() { - return this.raidPlanetRaidInfo.planet_owner - } - - getRaidEnemyUsername() { - return this.raidEnemy && this.raidEnemy.username && this.raidEnemy.username.length > 0 - ? `${this.raidEnemy.username}` - : `PID# ${this.getRaidEnemyId()}`; - } - - /** - * @param {string} type - * @return {Fleet} - */ - getFleetByPlayerType(type) { - switch (type) { - case PLAYER_TYPES.PLAYER: - return this.thisPlayerFleet; - case PLAYER_TYPES.PLANET_RAIDER: - return this.planetRaiderFleet; - case PLAYER_TYPES.RAID_ENEMY: - return this.raidEnemyFleet; - default: - return null; - } - } - - /** - * @return {number} - */ - getThisPlayerCharge() { - return this.chargeCalculator.calcCharge(this.currentBlockHeight, this.lastActionBlockHeight); - } - /** * Generates a key for the pending builds map. * @@ -812,8 +356,8 @@ export class GameState { } printMyPlayer() { - console.log('Player ID: ' + this.thisPlayerId); + console.log('Player ID: ' + this.keyPlayers[PLAYER_TYPES.PLAYER].id); console.log('Singing Account: ' + this.signingAccount.address); - console.log('Primary Account: ' + this.thisPlayer.primary_address); + console.log('Primary Account: ' + this.keyPlayers[PLAYER_TYPES.PLAYER].player.primary_address); } } diff --git a/src/js/models/KeyPlayer.js b/src/js/models/KeyPlayer.js new file mode 100644 index 00000000..85fe4321 --- /dev/null +++ b/src/js/models/KeyPlayer.js @@ -0,0 +1,268 @@ +import {PlanetaryShieldInfoDTO} from "../dtos/PlanetaryShieldInfoDTO"; +import {PlanetRaid} from "./PlanetRaid"; +import {ChargeLevelChangedEvent} from "../events/ChargeLevelChangedEvent"; +import {ChargeCalculator} from "../util/ChargeCalculator"; +import {SaveGameStateEvent} from "../events/SaveGameStateEvent"; +import {StructCountChangedEvent} from "../events/StructCountChangedEvent"; +import {Player} from "./Player"; +import {AlphaCountChangedEvent} from "../events/AlphaCountChangedEvent"; +import {EnergyUsageChangedEvent} from "../events/EnergyUsageChangedEvent"; +import {OreCountChangedEvent} from "../events/OreCountChangedEvent"; +import {ShieldHealthCalculator} from "../util/ShieldHealthCalculator"; +import {ShieldHealthChangedEvent} from "../events/ShieldHealthChangedEvent"; +import {UndiscoveredOreCountChangedEvent} from "../events/UndiscoveredOreCountChangedEvent"; +import {PlanetRaidStatusChangedEvent} from "../events/PlanetRaidStatusChangedEvent"; + +export class KeyPlayer { + + /** + * @param {string} playerType See PLAYER_TYPES + * @param {boolean} planetUsedForMap Whether or not this key player's planet is used for a map + */ + constructor(playerType, planetUsedForMap = true) { + + this.chargeCalculator = new ChargeCalculator(); + this.shieldHealthCalculator = new ShieldHealthCalculator(); + + /** @type {string} See PLAYER_TYPES */ + this.playerType = playerType; + + /** @type {string} */ + this.id = ''; + + /** @type {Player} */ + this.player = null; + + /** @type {number} */ + this.lastActionBlockHeight = 0; + + /** @type {number} */ + this.chargeLevel = 0; + + /** @type {Planet} */ + this.planet = null; + + /** @type {number} */ + this.planetShieldHealth = 100; + + /** @type {PlanetaryShieldInfoDTO} */ + this.planetShieldInfo = new PlanetaryShieldInfoDTO(); + + /** @type {PlanetRaid} */ + this.planetRaidInfo = new PlanetRaid(); + + /** @type {boolean} Whether or not this key player's planet is used for a map */ + this.planetUsedForMap = planetUsedForMap; + + /** @type {Fleet} */ + this.fleet = null; + + /** @type {Object} */ + this.structs = {}; + + } + + setAlpha(alpha) { + if (this.player && this.player.hasOwnProperty('alpha')) { + this.player.alpha = alpha; + + window.dispatchEvent(new SaveGameStateEvent()); + window.dispatchEvent(new AlphaCountChangedEvent(this.playerType)); + } + } + + /** + * @param {number} connectionCapacity + */ + setConnectionCapacity(connectionCapacity) { + if (this.player && this.player.hasOwnProperty('connection_capacity')) { + this.player.connection_capacity = connectionCapacity; + + window.dispatchEvent(new SaveGameStateEvent()); + window.dispatchEvent(new EnergyUsageChangedEvent(this.playerType)); + } + } + + /** + * @param {string} id + */ + setId(id) { + this.id = id; + + window.dispatchEvent(new SaveGameStateEvent()); + } + + /** + * @param {number} currentBlockHeight + * @param {number} height + */ + setLastActionBlockHeight(currentBlockHeight, height) { + this.lastActionBlockHeight = height; + this.chargeLevel = this.chargeCalculator.calc(currentBlockHeight, this.lastActionBlockHeight); + + window.dispatchEvent(new SaveGameStateEvent()); + window.dispatchEvent(new ChargeLevelChangedEvent(this.id, this.chargeLevel)); + } + + /** + * @param {number} load + */ + setLoad(load) { + if (this.player && this.player.hasOwnProperty('load')) { + this.player.load = load; + + window.dispatchEvent(new SaveGameStateEvent()); + window.dispatchEvent(new EnergyUsageChangedEvent(this.playerType)); + } + } + + /** + * @param {number} ore + */ + setOre(ore) { + if (this.player && this.player.hasOwnProperty('ore')) { + this.player.ore = ore; + + window.dispatchEvent(new SaveGameStateEvent()); + window.dispatchEvent(new OreCountChangedEvent(this.playerType)); + } + } + + /** + * @param {Planet} planet + */ + setPlanet(planet) { + this.planet = planet; + + window.dispatchEvent(new UndiscoveredOreCountChangedEvent(this.playerType)); + } + + /** + * @param {string} status + * @param dispatchEvent + */ + setPlanetRaidStatus(status, dispatchEvent = true) { + this.planetRaidInfo.status = status; + window.dispatchEvent(new SaveGameStateEvent()); + + if (dispatchEvent) { + window.dispatchEvent(new PlanetRaidStatusChangedEvent(this.playerType)); + } + } + + /** + * @param {number} currentBlockHeight + */ + setPlanetShieldHealth(currentBlockHeight) { + let health = 100; + + if ( + this.planetRaidInfo.isRaidActive() + && currentBlockHeight + && this.planetShieldInfo.block_start_raid + ) { + health = this.shieldHealthCalculator.calc( + this.planetShieldInfo.planetary_shield, + this.planetShieldInfo.block_start_raid, + currentBlockHeight + ); + } + + this.planetShieldHealth = health; + + window.dispatchEvent(new ShieldHealthChangedEvent(this.playerType)); + } + + /** + * @param {PlanetaryShieldInfoDTO} info + * @param {number} currentBlockHeight + */ + setPlanetShieldInfo(info, currentBlockHeight) { + this.planetShieldInfo = info; + + this.setPlanetShieldHealth(currentBlockHeight); + } + + /** + * @param {Player} player + */ + setPlayer(player) { + this.player = player; + + window.dispatchEvent(new AlphaCountChangedEvent(this.playerType)); + window.dispatchEvent(new EnergyUsageChangedEvent(this.playerType)); + window.dispatchEvent(new OreCountChangedEvent(this.playerType)); + } + + /** + * @param {number} capacity + */ + setPlayerCapacity(capacity) { + if (this.player && this.player.hasOwnProperty('capacity')) { + this.player.capacity = capacity; + + window.dispatchEvent(new SaveGameStateEvent()); + window.dispatchEvent(new EnergyUsageChangedEvent(this.playerType)); + } + } + + /** + * @param {Struct[]} structs + */ + setStructs(structs) { + this.structs = {}; + structs.forEach(struct => { + this.structs[struct.id] = struct; + }); + + window.dispatchEvent(new StructCountChangedEvent(this.playerType)); + } + + /** + * @param {number} structsLoad + */ + setStructsLoad(structsLoad) { + if (this.player && this.player.hasOwnProperty('structs_load')) { + this.player.structs_load = structsLoad; + + window.dispatchEvent(new SaveGameStateEvent()); + window.dispatchEvent(new EnergyUsageChangedEvent(this.playerType)); + } + } + + /** + * @param {Struct} struct + */ + setStruct(struct) { + this.structs[struct.id] = struct; + + window.dispatchEvent(new StructCountChangedEvent(this.playerType)); + } + + /** + * @param {number} currentBlockHeight + * @return {number} + */ + getCharge(currentBlockHeight) { + return this.chargeCalculator.calcCharge(currentBlockHeight, this.lastActionBlockHeight); + } + + /** + * @return {string} + */ + getTag() { + return this.player && this.player.tag && this.player.tag.length > 0 + ? `[${this.player.tag}]` + : ''; + } + + /** + * @return {string} + */ + getUsername() { + return this.player && this.player.username && this.player.username.length > 0 + ? `${this.player.username}` + : `PID# ${this.id}`; + } + +} diff --git a/src/js/view_models/HUDViewModel.js b/src/js/view_models/HUDViewModel.js index 7ded8641..810d15b5 100644 --- a/src/js/view_models/HUDViewModel.js +++ b/src/js/view_models/HUDViewModel.js @@ -122,13 +122,13 @@ export class HUDViewModel extends AbstractViewModel { HUDViewModel.bottomRightActionBarAlphaBase.profileClickHandler = () => { MenuPage.router.enablePreviewMode(); - MenuPage.router.goto('Account', 'profile', {playerId: this.gameState.planetRaider.id}); + MenuPage.router.goto('Account', 'profile', {playerId: this.gameState.keyPlayers[PLAYER_TYPES.PLANET_RAIDER].player.id}); MenuPage.open(); }; HUDViewModel.bottomRightActionBarRaid.profileClickHandler = () => { MenuPage.router.enablePreviewMode(); - MenuPage.router.goto('Account', 'profile', {playerId: this.gameState.raidEnemy.id}); + MenuPage.router.goto('Account', 'profile', {playerId: this.gameState.keyPlayers[PLAYER_TYPES.RAID_ENEMY].player.id}); MenuPage.open(); }; } @@ -205,7 +205,7 @@ export class HUDViewModel extends AbstractViewModel { } if ( this.gameState.activeMapContainerId === MAP_CONTAINER_IDS.ALPHA_BASE - && this.gameState.planetRaider + && this.gameState.keyPlayers[PLAYER_TYPES.PLANET_RAIDER].player ) { actionBar = 'bottomRightActionBarAlphaBase'; } diff --git a/src/js/view_models/account/AccountChangeUsername.js b/src/js/view_models/account/AccountChangeUsername.js index 8bc65db9..349af88e 100644 --- a/src/js/view_models/account/AccountChangeUsername.js +++ b/src/js/view_models/account/AccountChangeUsername.js @@ -1,6 +1,7 @@ import {MenuPage} from "../../framework/MenuPage"; import {AbstractViewModel} from "../../framework/AbstractViewModel"; import {USERNAME_PATTERN} from "../../constants/RegexPattern"; +import {PLAYER_TYPES} from "../../constants/PlayerTypes"; export class AccountChangeUsername extends AbstractViewModel { @@ -46,7 +47,7 @@ export class AccountChangeUsername extends AbstractViewModel { } else { this.guildAPI.setUsername(usernameInput.value).then((response) => { if (response.success) { - this.gameState.thisPlayer.username = usernameInput.value; + this.gameState.keyPlayers[PLAYER_TYPES.PLAYER].player.username = usernameInput.value; MenuPage.router.goto('Account', 'profile'); } else { document.getElementById(this.changeUsernameErrorId).classList.add('sui-mod-show'); diff --git a/src/js/view_models/account/AccountDeviceViewModel.js b/src/js/view_models/account/AccountDeviceViewModel.js index 4238d1ee..bf518cdd 100644 --- a/src/js/view_models/account/AccountDeviceViewModel.js +++ b/src/js/view_models/account/AccountDeviceViewModel.js @@ -31,7 +31,7 @@ export class AccountDeviceViewModel extends AbstractViewModel { this.cancelDeviceChangesBtnId = 'cancelDeviceChangesBtnId'; this.saveDeviceChangesBtnId = 'saveDeviceChangesBtn'; - this.isPrimaryDevice = (this.gameState.thisPlayer.primary_address === this.deviceAddress.address); + this.isPrimaryDevice = (this.gameState.keyPlayers[PLAYER_TYPES.PLAYER].player.primary_address === this.deviceAddress.address); } initPageCode() { diff --git a/src/js/view_models/account/AccountDevicesViewModel.js b/src/js/view_models/account/AccountDevicesViewModel.js index 999ffeb8..056370b7 100644 --- a/src/js/view_models/account/AccountDevicesViewModel.js +++ b/src/js/view_models/account/AccountDevicesViewModel.js @@ -3,6 +3,7 @@ import {AbstractViewModel} from "../../framework/AbstractViewModel"; import {Blockies} from "../../vendor/Blockies"; import {UserAgent} from "../../models/UserAgent"; import {PlayerAddress} from "../../models/PlayerAddress"; +import {PLAYER_TYPES} from "../../constants/PlayerTypes"; export class AccountDevicesViewModel extends AbstractViewModel { @@ -65,7 +66,7 @@ export class AccountDevicesViewModel extends AbstractViewModel { let location = playerAddress.ip; // TODO: When geoip data is added, use that field if set - if (this.gameState.thisPlayer.primary_address === playerAddress.address) { + if (this.gameState.keyPlayers[PLAYER_TYPES.PLAYER].player.primary_address === playerAddress.address) { location = `[Primary Device]
${location}`; } @@ -110,7 +111,7 @@ export class AccountDevicesViewModel extends AbstractViewModel { } render () { - this.guildAPI.getPlayerAddressList(this.gameState.thisPlayerId).then((playerAddresses) => { + this.guildAPI.getPlayerAddressList(this.gameState.keyPlayers[PLAYER_TYPES.PLAYER].id).then((playerAddresses) => { const deviceListHtml = playerAddresses.reduce((html, playerAddress) => { return html + this.renderDevice(playerAddress) diff --git a/src/js/view_models/account/AccountIndexViewModel.js b/src/js/view_models/account/AccountIndexViewModel.js index 8420a0e8..9fefd1b8 100644 --- a/src/js/view_models/account/AccountIndexViewModel.js +++ b/src/js/view_models/account/AccountIndexViewModel.js @@ -1,5 +1,6 @@ import {MenuPage} from "../../framework/MenuPage"; import {AbstractViewModel} from "../../framework/AbstractViewModel"; +import {PLAYER_TYPES} from "../../constants/PlayerTypes"; export class AccountIndexViewModel extends AbstractViewModel { @@ -17,7 +18,6 @@ export class AccountIndexViewModel extends AbstractViewModel { this.gameState = gameState; this.guildAPI = guildAPI; this.authManager = authManager; - this.playerAddressCount = 0; this.copyPidBtnId = 'account-menu-copy-pid'; this.profileBtnId = 'account-menu-profile-btn'; this.transfersBtnId = 'account-menu-transfers-btn'; @@ -28,7 +28,7 @@ export class AccountIndexViewModel extends AbstractViewModel { initPageCode() { document.getElementById(this.copyPidBtnId).addEventListener('click', async function () { if (navigator.clipboard) { - await navigator.clipboard.writeText(this.gameState.thisPlayerId); + await navigator.clipboard.writeText(this.gameState.keyPlayers[PLAYER_TYPES.PLAYER].id); } }.bind(this)); document.getElementById(this.logoutBtnId).addEventListener('click', function () { @@ -46,7 +46,7 @@ export class AccountIndexViewModel extends AbstractViewModel { } render () { - this.guildAPI.getPlayerAddressCount(this.gameState.thisPlayerId).then((addressCount) => { + this.guildAPI.getPlayerAddressCount(this.gameState.keyPlayers[PLAYER_TYPES.PLAYER].id).then((addressCount) => { MenuPage.enablePageTemplate(MenuPage.navItemAccountId); @@ -57,11 +57,11 @@ export class AccountIndexViewModel extends AbstractViewModel {