UNPKG

ggejs

Version:

A powerful Node.js module for interacting with the server of Goodgame Empire & Goodgame Empire: Four Kingdoms

51 lines (48 loc) 1.92 kB
const VillageMapobject = require("../../structures/mapobjects/VillageMapobject"); const InventoryItem = require("../../structures/InventoryItem"); const Unit = require("../../structures/Unit"); module.exports.name = "kgv"; /** * @param {BaseClient} client * @param {number} errorCode * @param {Object} params */ module.exports.execute = function (client, errorCode, params) { if (!params) return; const villageList = parseVillageList(client, params); client.clientUserData._userData.castleList.publicVillages = villageList.public; client.clientUserData._userData.castleList.privateVillages = villageList.private; } /** * @param {BaseClient} client * @param {{VI:[][], PV: {VID: number, XID: number}[]}} data * @returns {{ public: { village: VillageMapobject, units?: InventoryItem<Unit>[] }[], private: { privateVillageId: number, uniqueId: number }[]}} */ function parseVillageList(client, data) { let publicVillagesData = []; let privateVillagesData = []; if (!data) return {public: publicVillagesData, private: privateVillagesData}; for (let i in data.VI) { let publicVillage = {}; publicVillage["village"] = new VillageMapobject(client, data.VI[0][0]); if (data.VI[i].length >= 2) { publicVillage["units"] = parseUnits(client, data.VI[i][1]); } publicVillagesData.push(publicVillage) } for (let i in data.PV) { privateVillagesData.push({uniqueId: data.PV[i].VID, privateVillageId: data.PV[i].XID}); } return {public: publicVillagesData, private: privateVillagesData}; } /** * @param {BaseClient} client * @param {Array<[number, number]>} data * @returns {InventoryItem<Unit>[]} */ function parseUnits(client, data) { if (!data) return []; return data.map(d => { return new InventoryItem(new Unit(client, d[0]), d[1]) }) }