UNPKG

ggejs

Version:

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

221 lines (212 loc) 7.67 kB
module.exports.name = "gbd"; /** * @param {Socket} socket * @param {number} errorCode * @param {Object} params */ module.exports.execute = function (socket, errorCode, params) { //todo?: setUpActiveActionsServiceSignal.dispatch(); for (let x in params) { switch (x.toLowerCase()) { case "WR".toLowerCase(): socket.client.clientUserData.wasResetted = params[x]; break; case "LA".toLowerCase(): socket.client.clientUserData.lastUserActivity = params[x]; break; case "ch": socket.client.clientUserData.selectedHeroId = params[x]["HID"]; break; case "gal": case "gcu": case "gho": case "gxp": case "gpi": case "upi": case "ufa": case "ufp": case "uar": case "gem": case "gpf": case "gms": case "gpc": case "gcl": case "kgv": case "uap": case "gri": case "gkl": case "vip": case "opt": case "pgl": case "boi": case "sei": case "tei": case "txi": case "rei": case "kpi": case "mpe": case "vli": case "dql": case "gli": case "drt": case "tmp": case "sce": case "esl": case "ggm": case "lts": case "skl": case "rww": case "dcl": case "ahl": case "mre": case "gml": case "sin": case "nrf": case "gatp": case "bie": case "ree": case "DTS".toLowerCase(): case "mvf": case "pre": case "gls": case "mcd": //#region not handled in gbd source code case "gmu": case "cpi": case "gas": case "gabgap": //#endregion try { if (socket.ultraDebug) { const msg = JSON.stringify(params[x]); console.log(`[RECEIVED-GBD] ${x} % ${msg.substring(0, Math.min(140, msg.length))}`); } require(`./${x.toLowerCase()}`).execute(socket, errorCode, params[x]); } catch (e) { if (socket.debug) console.warn("[GBD]", e); } break; //#region not handled in gbd source code case "atl": case "dsd": case "fcs": case "gll": case "scd": //Not implemented in game if (socket.ultraDebug) { const msg = JSON.stringify(params[x]) console.log(`[RECEIVED-GBD-not_implemented] ${x} % ${msg.substring(0, Math.min(140, msg.length))}`) } break; case "fii": //Not implemented in game: Friend invite info case "thi": //Not implemented in game: Treasure hunt info case "wbie": //Not implemented in game: Welcome back message info event if (socket.ultraDebug) { const msg = JSON.stringify(params[x]) console.log(`[RECEIVED-GBD-not_implemented] ${x} % ${msg.substring(0, Math.min(140, msg.length))}`) } break; default: if (socket.debug) console.warn(`Unknown part in gbd command: ${x}: ${JSON.stringify(params[x])}`); break; //#endregion } } setTimeout(async () => await handlePostGBDCommandInNextFrame(socket), 10); } async function handlePostGBDCommandInNextFrame(socket) { /* todo * restoreTutorialIfRuined(); * enableIAPmanagerStartupIntervalSignal.dispatch(false); * if (hasValidInvitation.approve()) * { * setFacebookConnectionSignal.dispatch(); * } * else * { * facebookAutoLoginSignal.dispatch(); * } * configureNotificationsSignal.dispatch(); * worldmapCameraData.currentCenteredWorldMapObject = castleListService.getMainCastleByKingdomId(kingdomData.activeKingdomID); * if (!_loc2_) * { * startTutorialSignal.dispatch(true); * } * else * { * castleRemoveLoadingScreenSignal.dispatch(); * } * restoreLastSessionGameStateSignal.dispatch(); * initMarketingTracking(); * trackDevice(); * trackDisconnection(); */ requestSubscriptionsData(socket); /*todo * directCommandMap.map(InitPaymentShopCommand).execute(); * if (!featureRestrictionsModel.isFeatureRestrictedWithType("accountCode",FeatureRestrictionType.HIDDEN)) * { * directCommandMap.map(WebshopGetAccountIdCommand).execute(); * } * sendInstallerPackageSignal.dispatch(); * requestTimeForRuinPushNotification(); */ requestLoginBonusInfo(socket); requestMessagesData(socket); await requestAllianceData(socket); requestBookmarkData(socket); requestConstructionItemInventory(socket); requestGeneralsInnData(socket); /* todo showAccountForcedDialog(); directCommandMap.map(SendDeviceMetaDataCommand).execute(); gameStatusModel.gameIsListening = true; stopCachingJsonCommandsSignal.dispatch(); connectionLostModel.reset(); if (lockConditionModel.hasCondition()) { _loc1_ = lockConditionModel.hasCondition(); debug("client has lock condition in GBD:",_loc1_.originalConditionIds + ", find the original reason where it came from and clean"); lockConditionModel.conditionComplete(); } */ //todo????: Code below is added and not in source code require('../../commands/getEquipmentInventory').execute(socket); socket['gdb finished'] = true; } /** @param {Socket} socket */ function requestGeneralsInnData(socket) { require('../../commands/getGeneralCharacter').execute(socket); } /** @param {Socket} socket */ function requestBookmarkData(socket) { require('../../commands/getBookmarksList').execute(socket); } /** @param {Socket} socket */ function requestConstructionItemInventory(socket) { require('../../commands/getConstructionItemInventory').execute(socket); } /** @param {Socket} socket */ function requestMessagesData(socket) { require('../../commands/showMessages').execute(socket); } /** @param {Socket} socket */ async function requestAllianceData(socket) { const client = socket.client; if (client.clientUserData.allianceId >= 0) { require('../../commands/searchAllianceById').execute(socket, client.clientUserData.allianceId); require('../../commands/getAllianceFame').execute(socket); require('../../commands/getAllianceChatHistory').execute(socket); } } /** @param {Socket} socket */ function requestSubscriptionsData(socket) { require('../../commands/getSubscriptionInformation').execute(socket); } /** @param {Socket} socket */ function requestLoginBonusInfo(socket) { require('../../commands/getLoginBonus').execute(socket); require('../../commands/getStartupLoginBonus').execute(socket); }