UNPKG

ggejs

Version:

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

108 lines (101 loc) 3 kB
const Localize = require("../../tools/Localize"); class BasicMessage { subType = 0; subject = ""; #client; /** * @param {Client} client * @param {Array} data */ constructor(client, data) { this.#client = client; /** @type {number} */ this.messageId = data[0]; this.messageType = data[1]; /** @type {string} */ this.metadata = data[2]; this.senderName = data[3]; this.playerId = data[4]; this.deliveryTime = new Date(Date.now() - data[5] * 1000); this.isRead = data[6] === 1; this.isArchived = data[7] === 1; this.isForwarded = data[8] === 1; this.canBeForwarded = false; this.parseMetaData(client, this.metadata.split('+')) } async init() { } /** * @param {Client} _ * @param {Array<string>} __ */ parseMetaData(_, __) { } setSenderToAreaName(areaName, areaType, kingdomId) { if (this.isForwarded || this.senderName && this.senderName !== "") return; if (areaName) { this.senderName = areaName; } else { this.senderName = Localize.text(this.#client, getNPCMapObjectName(areaType, kingdomId)); } } } /** * @param {number} areaType * @param {number} kingdomId */ function getNPCMapObjectName(areaType, kingdomId) { switch (areaType) { case 10: return "village"; case 24: return "kingdom_island_village"; case 21: return "alienInvasion_playerName_short"; case 33: return "samurai_playerName"; case 27: return "nomad_playerName"; case 35: return "nomad_playerName"; case 29: return "samurai_playerName"; case 13: return "kingdom_dungeon_castleName_0"; case 34: return "redAlienInvasion_playerName"; case 4: return "outpost"; case 1: return "castle"; case 3: return "capital"; case 26: return "monument"; case 17: return "factionwatchtower_name"; case 16: return "faction_village"; case 18: return "faction_capital"; case 23: return "kingstower"; case 22: return "metropol"; case 38: return "township"; case 37: return "daimyoCastle"; case 39: return "kingdom_charge_castleName"; case 42: return "wolfgard_playerName"; case 2: return `kingdom_dungeon_castleName_${kingdomId}`; case 11: return `kingdom_bossDungeon_castleName_${kingdomId}`; case 25: return `kingdom_dungeon_castleName_${kingdomId}`; } } module.exports = BasicMessage;