点亮科技树
This commit is contained in:
@@ -2,6 +2,7 @@
|
||||
import {readJsonFile, parseGoodStr, parseNumberList, decodeArrayListStr} from '../util'
|
||||
import { FILENAME } from '../../consts'
|
||||
import { RewardInter } from '../interface';
|
||||
import { mapArrayOptions } from '@typegoose/typegoose/lib/internal/utils';
|
||||
const _ = require('lodash');
|
||||
|
||||
type KeysEnum<T> = { [P in keyof Required<T>]: true };
|
||||
@@ -99,20 +100,20 @@ export interface DicDonateBase {
|
||||
readonly id: number;
|
||||
// 等级
|
||||
readonly level: number;
|
||||
// 捐献值
|
||||
readonly donateValue: {type: number, count: number}[];
|
||||
// 捐献奖励
|
||||
readonly donateReward: {fund: number, active: number}[];
|
||||
readonly donateReward: Map<number, { id: number, rewardGood: RewardInter, rewardFund:number, cosume:RewardInter }>;
|
||||
// 今日捐献宝箱领取奖励系数
|
||||
readonly boxRewardRatio: number;
|
||||
|
||||
readonly requireRewardRatio: number;
|
||||
}
|
||||
|
||||
const DicDonateKeys: KeysEnum<DicDonateBase> = {
|
||||
id: true,
|
||||
level: true,
|
||||
donateValue: true,
|
||||
donateReward: true,
|
||||
boxRewardRatio: true
|
||||
boxRewardRatio: true,
|
||||
requireRewardRatio: true
|
||||
};
|
||||
|
||||
// 许愿池
|
||||
@@ -202,7 +203,6 @@ const strTrain = readJsonFile(FILENAME.DIC_GUILD_TRAIN_BASE);
|
||||
let arrTrain = JSON.parse(strTrain);
|
||||
arrTrain.forEach(o => {
|
||||
setStructureConsume(o);
|
||||
|
||||
dicTrainBase.set(o.level, _.pick(o, Object.keys(DicTrainKeys)));
|
||||
});
|
||||
arrTrain = undefined;
|
||||
@@ -212,8 +212,7 @@ const strDonate = readJsonFile(FILENAME.DIC_GUILD_DONATE_BASE);
|
||||
let arrDonate = JSON.parse(strDonate);
|
||||
arrDonate.forEach(o => {
|
||||
setStructureConsume(o);
|
||||
o.donateValue = parseDonateValue(o.donatevalue);
|
||||
o.donateReward = parseDonateReward(o.donateReward);
|
||||
o.donateReward = parseDonateReward(o.donatevalue, o.donateReward, o.fundReward);
|
||||
dicDonateBase.set(o.level, _.pick(o, Object.keys(DicDonateKeys)));
|
||||
});
|
||||
arrDonate = undefined;
|
||||
@@ -249,30 +248,33 @@ function setStructureConsume(o) {
|
||||
|
||||
// {"type": number, "count": number}
|
||||
export function parseDonateValue(str: string) {
|
||||
let result = new Array<{ type: number, count: number }>();
|
||||
let result = new Array<{id:number, type: number, count: number }>();
|
||||
if (!str) return result;
|
||||
let decodeArr = decodeArrayListStr(str);
|
||||
for (let [type, count] of decodeArr) {
|
||||
for (let [id, type, count] of decodeArr) {
|
||||
if (isNaN(parseInt(type)) || isNaN(parseInt(count))) {
|
||||
throw new Error('data table format wrong');
|
||||
}
|
||||
result.push({ type: parseInt(type), count: parseInt(count) });
|
||||
result.push({id: parseInt(id), type: parseInt(type), count: parseInt(count) });
|
||||
}
|
||||
return result
|
||||
}
|
||||
|
||||
// {"fund": number, "active": number}
|
||||
export function parseDonateReward(str: string) {
|
||||
let result = new Array<{ fund: number, active: number }>();
|
||||
if (!str) return result;
|
||||
let decodeArr = decodeArrayListStr(str);
|
||||
for (let [fund, active] of decodeArr) {
|
||||
if (isNaN(parseInt(fund)) || isNaN(parseInt(active))) {
|
||||
export function parseDonateReward( donateStr: string, Goodstr: string, fundStr: string) {
|
||||
let result = new Map<number, { id: number, rewardGood: RewardInter, rewardFund:number, cosume:RewardInter }>();
|
||||
if (!donateStr) return result;
|
||||
let decodeArr = decodeArrayListStr(donateStr);
|
||||
let goods = parseGoodStr(Goodstr);
|
||||
let funds = fundStr.split('&');
|
||||
for (let [id, type, count] of decodeArr) {
|
||||
if (isNaN(parseInt(type)) || isNaN(parseInt(count))) {
|
||||
throw new Error('data table format wrong');
|
||||
}
|
||||
result.push({ fund: parseInt(fund), active: parseInt(active) });
|
||||
let donateId = parseInt(id);
|
||||
result.set(donateId, {id: donateId, cosume: { id: parseInt(type), count: parseInt(count)}, rewardGood: goods[donateId - 1], rewardFund: parseInt(funds[donateId - 1])});
|
||||
}
|
||||
return result
|
||||
return result;
|
||||
}
|
||||
|
||||
// { "quality": number, "count": number}
|
||||
|
||||
Reference in New Issue
Block a user