feat(gvg): 宝箱奖励和等级奖励

This commit is contained in:
luying
2023-01-16 20:28:13 +08:00
parent 44476e2430
commit 7895c08f16
7 changed files with 138 additions and 18 deletions

View File

@@ -571,6 +571,7 @@ export const FILENAME = {
DIC_GVG_ITEM: 'dic_zyz_GVGItems',
DIC_GVG_LEAGUE_LV: 'dic_zyz_GVGLeagueLv',
DIC_GVG_RESOURCE_BASE: 'dic_zyz_GVGResourceBase',
DIC_GVG_CONTRIBUTE_BOX: 'dic_zyz_GVGContributeBox',
}
export const WAR_RELATE_TABLES = [
@@ -1077,7 +1078,9 @@ export enum ITEM_CHANGE_REASON {
PLANT = 164, // 种田
PLANT_ROLLBACK = 165, // 种田的时候田已经被抢了回滚
HARVEST = 166, // 收获
MINE_END = 165, // 挖矿
MINE_END = 167, // 挖矿
GVG_RECEIVE_BOX = 167, // 领取宝箱
GVG_RECEIVE_LV = 168, // 领取等级奖励
}
export enum TA_EVENT {

View File

@@ -327,6 +327,11 @@ export const STATUS = {
GVG_ITEM_CANNOT_USE: { code: 21321, simStr: '此处不可使用这个道具' },
GVG_FORESTRY_HAS_HARVEST: { code: 21322, simStr: '本次伐木已结算过' },
GVG_MINE_HAS_HARVEST: { code: 21323, simStr: '本次挖矿已结算过' },
GVG_BOX_HAS_RECEIVED: { code: 21324, simStr: '宝箱已领取' },
GVG_BOX_POINT_NOT_ENOUGH: { code: 21325, simStr: '贡献点数不足' },
GVG_LV_NOT_ENOUGH: { code: 21326, simStr: '联军等级不足' },
GVG_LV_REWARD_HAS_RECEIVED: { code: 21327, simStr: '该等级奖励已领取过' },
GVG_LV_REWARD_NOT_REACH: { code: 21328, simStr: '请先领取上一级奖励再领取这一等级' },
// 通用 30000 - 30099
DIC_DATA_NOT_FOUND: { code: 30000, simStr: '数据表未找到' },

View File

@@ -17,13 +17,6 @@ class ActiveRec {
}
}
class Box {
@prop({ required: true, default: 0 })
job: number; // 宝箱积分
@prop({ required: true, default: [], type: Number })
received: number[]; // 领取记录
}
export class Distribute {
@prop({ required: true, default: 0 })
food: number = 0; // 粮食
@@ -63,8 +56,8 @@ export default class GVGUserData extends BaseModel {
@prop({ required: true, default: 0 })
receiveCurrencyTime: number; // 领取内政令&征战令时间
@prop({ required: true, default: [], type: Box, _id: false })
box: Box[];
@prop({ required: true, default: [], type: Number })
box: number[];
@prop({ required: true, default: {}, _id: false })
distribute: Distribute;
@@ -112,6 +105,16 @@ export default class GVGUserData extends BaseModel {
}, { new: true, upsert: true }).lean();
return result;
}
public static async receiveBox(configId: number, leagueCode: string, roleId: string, boxId: number) {
const result: GVGUserDataType = await GVGUserDataModel.findOneAndUpdate({ configId, leagueCode, roleId }, { $push: { box: boxId }}, { new: true }).lean();
return result;
}
public static async receiveLv(configId: number, leagueCode: string, roleId: string, lv: number) {
const result: GVGUserDataType = await GVGUserDataModel.findOneAndUpdate({ configId, leagueCode, roleId }, { $set: { lv }}, { new: true }).lean();
return result;
}
}
export const GVGUserDataModel = getModelForClass(GVGUserData);

View File

@@ -123,6 +123,7 @@ import { dicGVGTech, loadGVGTech } from "./dictionary/DicGVGTech";
import { dicGVGItem, loadGVGItem } from "./dictionary/DicGVGItems";
import { dicGVGLeagueLv, loadGVGLeagueLv } from "./dictionary/DicGVGLeagueLv";
import { dicGVGResourceBase, dicGVGResourceBaseByType, dicGVGResourceBaseByLv, loadGVGResourceBase, DicGVGResourceBase } from './dictionary/DicGVGResourceBase';
import { dicGVGContributeBox, loadGVGContributeBox } from './dictionary/DicGVGContributeBox';
export const gameData = {
daily: dicDaily,
@@ -310,6 +311,7 @@ export const gameData = {
gvgResourceBaseByLv: dicGVGResourceBaseByLv,
gvgFieldAddType: new Map<number, number>(),
gvgSpFieldRatio: { min: 0, max: 0},
gvgContributeBox: dicGVGContributeBox,
};
// 在此提供一些原先在gamedata中提供的方法以便更方便获取gameData数据
@@ -1343,6 +1345,7 @@ function loadDatas() {
loadGVGItem();
loadGVGLeagueLv();
loadGVGResourceBase();
loadGVGContributeBox();
}
// 重载dicParam

View File

@@ -0,0 +1,30 @@
// GVG千机阁
import { FILENAME } from '../../consts'
import { RewardInter } from '../interface';
import { parseGoodStr, readFileAndParse } from '../util'
export interface DicGVGContributeBox {
// 唯一id
id: number;
// 职能 1-贤臣 2-猛将
job: number;
// 所需积分点
boxPoint: number;
// 奖励,普通背包物品
boxReward: RewardInter[];
// 奖励,联军相关道具物品
boxLeagueReward: RewardInter[];
}
export const dicGVGContributeBox = new Map<number, DicGVGContributeBox>();
export function loadGVGContributeBox() {
dicGVGContributeBox.clear();
let arr = readFileAndParse(FILENAME.DIC_GVG_CONTRIBUTE_BOX);
arr.forEach(o => {
o.boxReward = parseGoodStr(o.boxReward);
o.boxLeagueReward = parseGoodStr(o.boxLeagueReward)
dicGVGContributeBox.set(o.id, o);
});
arr = undefined;
}