UNPKG

ggejs

Version:

A powerful JavaScript library for interacting with the server of Goodgame Empire: Four Kingdoms

84 lines (77 loc) 2.88 kB
const AllianceMember = require("./AllianceMember"); const {parseChatJSONMessage} = require("../tools/TextValide"); class Alliance { #landmarks = []; constructor(client, data) { /** @type {number} */ this.allianceId = data.AID; /** @type {string} */ this.allianceName = data.N; /** @type {string} */ this.allianceDescription = parseChatJSONMessage(data.D); /** @type {string} */ this.languageId = data.ALL; /** @type {number} */ this.memberLevel = data.ML; /** @type {AllianceMember[]} */ this.memberList = parseMembers(client, data.M, this); if (data.DOA) /** @type {number} */ this.allianceStatusToOwnAlliance = data.DOA; /** @type {number} */ this.allianceFamePoints = data.CF; /** @type {number} */ this.allianceFamePointsHighestReached = -1; /** @type {boolean} */ this.canInvitedForHardPact = data.HP === 1; /** @type {boolean} */ this.canInvitedForSoftPact = data.SP === 1; if (data.IS) /** @type {boolean} */ this.isSearchingMembers = data.IS === 1; /** @type {boolean} */ this.isOpenAlliance = data.IA !== 0; if (data.FR) /** @type {number} */ this.freeRenames = data.FR; /** @type {number} */ this.might = parseInt(data.MP); } /** @returns {(CapitalMapobject | KingstowerMapobject | MetropolMapobject | MonumentMapobject)[]} */ get landmarks() { if (this.#landmarks.length !== 0) return this.#landmarks; console.error("get landmarks() Not Implememented"); //Door de leden heen gaan en de landmarks zo verzamelen(?); throw this.#landmarks; } /** * @private * @param {(CapitalMapobject | MetropolMapobject | MonumentMapobject | KingstowerMapobject)[]} value */ set _landmarks(value) { this.#landmarks = value; } _add_or_update_landmarks(landmarks) { console.error("_add_or_update_landmarks Not Implememented"); } } module.exports = Alliance; /** * @param {Client} client * @param {Object[]} members * @param {Alliance} _alliance * @returns {AllianceMember[]} */ function parseMembers(client, members, _alliance) { client.worldMaps._ownerInfoData.parseOwnerInfoArray(members); /**@type {AllianceMember[]} */ let allianceMembers = []; for (let memberData of members) { let _member = new AllianceMember(client, memberData, _alliance); allianceMembers.push(_member); } allianceMembers.sort((a, b) => { if (a.allianceRank < b.allianceRank) { return -1; } if (a.allianceRank > b.allianceRank) { return 1; } return 0; }) return allianceMembers; }