ggejs
Version:
A powerful JavaScript library for interacting with the server of Goodgame Empire: Four Kingdoms
93 lines (82 loc) • 3.85 kB
JavaScript
const PrimeSaleEvent = require("./PrimeSaleEvent");
class PrimeSalePackagesEvent extends PrimeSaleEvent {
/** @type {number} */
skinId;
/**
* @param {Client} client
* @param {{EID:number, RS: number, DIS:number, PID: number[], T: number}} data
*/
loadFromParamObject(client, data) {
super.loadFromParamObject(client, data);
data.PID.forEach(v => this._addEventPackageById(v));
parsePrimeSaleTypeAndRequiredEventIds(this)
}
get offersHubType() {
return {name: "primeSalePackages", id: 9}//TODO: OffersHubTypeEnum.PRIME_SALE_PACKAGES;
}
}
/** @param {PrimeSalePackagesEvent} event */
function parsePrimeSaleTypeAndRequiredEventIds(event) {
let primeSaleType = getPrimeSaleType(event);
let eventIds = [];
if (primeSaleType === "wheel_of_fortune"/*PrimeSaleTypeEnum.WHEEL_OF_FORTUNE*/) {
eventIds.push(15);
} else if (primeSaleType === "merchant"/*PrimeSaleTypeEnum.MERCHANT*/ || primeSaleType === "shapeshifter_charm_booster"/*PrimeSaleTypeEnum.SHAPESHIFTER_CHARM_BOOSTER*/) {
eventIds = getRequiredEventIds(event);
if (eventIds.length === 0) {
primeSaleType = "no_prime_sale"/*PrimeSaleTypeEnum.NO_PRIME_SALE*/;
}
}
event.primeSaleType = primeSaleType;
event.requiredEventIds = eventIds;
}
/**
* @param {PrimeSalePackagesEvent} event
* @return {string} todo: PrimeSaleTypeEnum
*/
function getPrimeSaleType(event) {
const eventPackage = event.eventPackages[0];
if (eventPackage.packageType === "tickets"/*PackageTypeEnum.LUCKY_WHEEL_TICKETS*/) return "wheel_of_fortune"//PrimeSaleTypeEnum.WHEEL_OF_FORTUNE;
if (eventPackage.packageType === "VIP"/*PackageTypeEnum.VIP*/) return getPrimeSaleTypeForVIPPrimeSale(event.eventPackages);
if (eventPackage.addShapeShifterCharmBoosterKey > 0) return "shapeshifter_charm_booster"//PrimeSaleTypeEnum.SHAPESHIFTER_CHARM_BOOSTER;
if (eventPackage.addShapeShifterBloodpointBoosterKey > 0) return "shapeshifter_bloodpoint_booster"//PrimeSaleTypeEnum.SHAPESHIFTER_BLOODPOINT_BOOSTER;
return "merchant"//PrimeSaleTypeEnum.MERCHANT;
}
/**
* @param {Package[]} eventPackages
* @return {string} todo: PrimeSaleTypeEnum
*/
function getPrimeSaleTypeForVIPPrimeSale(eventPackages) {
let includesVipPoints = false;
let includesVipTime = false;
for (const eventPackage of eventPackages) {
if (eventPackage.vipPoints > 0) includesVipPoints = true;
if (eventPackage.vipTime > 0) includesVipTime = true;
/*if (eventPackage.goodsAdd.getValue(GameAssetEnumerator.VIP_POINTS) > 0) {
includesVipPoints = true;
} else if (eventPackage.goodsAdd.getValue(GameAssetEnumerator.VIP_TIME) > 0) {
includesVipTime = true;
}*/
}
if (includesVipPoints && includesVipTime) return "vip_points_time"//PrimeSaleTypeEnum.VIP_POINTS_TIME;
if (includesVipPoints) return "vip_points"//PrimeSaleTypeEnum.VIP_POINTS;
if (includesVipTime) return "vip_time"//PrimeSaleTypeEnum.VIP_TIME;
return "no_prime_sale"//PrimeSaleTypeEnum.NO_PRIME_SALE;
}
/**
* @param {PrimeSalePackagesEvent} primeSalePackagesEvent
* @return {number[]}
*/
function getRequiredEventIds(primeSalePackagesEvent) {
const requiredEventIds = [];
/* TODO:
const packageId = primeSalePackagesEvent.eventPackages[0].packageID;
for (const runningEvent of specialEventData.runningEvents) {
if (runningEvent.eventId !== primeSalePackagesEvent.eventId && SpecialEventUtils.eventHasPackageId(runningEvent, packageId)) {
requiredEventIds.push(runningEvent.eventId);
}
}
*/
return requiredEventIds;
}
module.exports = PrimeSalePackagesEvent;