活动:修改string变id&count的转换方法
This commit is contained in:
@@ -3,8 +3,7 @@ import { POP_UP_SHOP_CONDITION_TYPE, POP_UP_SHOP_REFRESH_TIME_TYPE, REFRESH_TIME
|
||||
import { ActivityModelType } from "../../db/Activity";
|
||||
import { ActivityPopUpShopModelType, PopUpShopItem as ActivityPopUpShopItem } from "../../db/ActivityPopUpShop";
|
||||
import { RewardInter } from "../../pubUtils/interface";
|
||||
import { parseNumberList } from "../../pubUtils/util";
|
||||
import { stringToRewardInter } from "../../pubUtils/util";
|
||||
import { parseNumberList, stringWithTypeToRewardInter } from "../../pubUtils/util";
|
||||
import { ActivityBase } from './activityField';
|
||||
|
||||
// 数据库格式
|
||||
@@ -332,7 +331,7 @@ export class PopShopItem {
|
||||
this.productID = data.productID;
|
||||
this.consume = data.consume;
|
||||
this.reward = data.reward;
|
||||
this.rewardInter = stringToRewardInter(data.reward);
|
||||
this.rewardInter = stringWithTypeToRewardInter(data.reward);
|
||||
this.rebate = data.rebate;
|
||||
this.buyCnt = data.buyCnt;
|
||||
this.parent = parent;
|
||||
|
||||
@@ -5,13 +5,16 @@ import { isNumber } from 'underscore';
|
||||
const csprng = require('csprng');
|
||||
import fs = require('fs');
|
||||
import path = require('path');
|
||||
import { ABI_STAGE, GACHA_TO_FLOOR, REFRESH_TIME, ROBOT_SYS_TYPE, ITEM_CHANGE_REASON, WAR_TYPE } from '../consts';
|
||||
import { ABI_STAGE, GACHA_TO_FLOOR, REFRESH_TIME, ROBOT_SYS_TYPE, ITEM_CHANGE_REASON, WAR_TYPE, ACTIVITY_RESOURCES_TYPE } from '../consts';
|
||||
|
||||
import { findIndex } from 'underscore';
|
||||
import { getTimeFunM } from './timeUtil';
|
||||
import { Floor } from '../domain/activityField/gachaField';
|
||||
import { WhiteListModel } from '../db/RegionWhiteList';
|
||||
import { RewardInter } from './interface';
|
||||
import { RewardParam } from '../domain/activityField/rewardField';
|
||||
import { CreateHeroParam } from '../domain/roleField/hero';
|
||||
import { gameData } from './data';
|
||||
const randomName = require("chinese-random-name");
|
||||
const moment = require('moment');
|
||||
const crypto = require('crypto');
|
||||
@@ -820,3 +823,50 @@ export function addToMap<T>(map: Map<T, number>, id: T, value: number) {
|
||||
|
||||
// return { topLineup, topLineupCe };
|
||||
// }
|
||||
|
||||
|
||||
//数据格式转换'类型&id&数量|类型&id&数量|' ->> Array<RewardParam> 活动奖励
|
||||
export function stringToRewardParam(rewardStr: string): Array<RewardParam> {
|
||||
let result = new Array<{ type: number, id: number, count: number }>();
|
||||
if (!rewardStr) return result;
|
||||
let decodeArr = decodeArrayListStr(rewardStr);
|
||||
for (let [type, id, count] of decodeArr) {
|
||||
if (isNaN(parseInt(type)) || isNaN(parseInt(id)) || isNaN(parseInt(count))) {
|
||||
throw new Error('data table format wrong');
|
||||
}
|
||||
result.push({ type: parseInt(type), id: parseInt(id), count: parseInt(count) });
|
||||
}
|
||||
return result
|
||||
}
|
||||
|
||||
//表中的奖励数据(包括礼包)转换成具体对应奖励物品的实例
|
||||
export function rewardItemData(reward: Array<RewardParam>) {
|
||||
let goods: Array<RewardInter> = [];
|
||||
let heroes: Array<CreateHeroParam> = [];
|
||||
for (let obj of reward) {
|
||||
switch (obj.type) {
|
||||
case ACTIVITY_RESOURCES_TYPE.HERO:
|
||||
heroes.push({ hid: obj.id, count: obj.count })
|
||||
break;
|
||||
case ACTIVITY_RESOURCES_TYPE.GOODS:
|
||||
goods.push({ id: obj.id, count: obj.count })
|
||||
break;
|
||||
case ACTIVITY_RESOURCES_TYPE.GIFTPACKAGE://配置成礼包会立刻兑换,配置成物品会把礼包放入背包中
|
||||
let goodData = gameData.goods.get(obj.id);//礼包物品
|
||||
let giftPackageData = gameData.giftPackage.get(1)//gameData.giftPackage.get(goodData.gift);//礼包数据
|
||||
let giftReward = rewardItemData(giftPackageData.reward)
|
||||
goods = goods.concat(giftReward.goods)
|
||||
heroes = heroes.concat(giftReward.heroes)
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
return { goods, heroes }
|
||||
}
|
||||
|
||||
export function stringWithTypeToRewardInter(str: string): Array<RewardInter> {
|
||||
let reward = stringToRewardParam(str);
|
||||
let item = rewardItemData(reward);
|
||||
return item.goods||[];
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user