优化:武将初始加载
This commit is contained in:
+30
-2
@@ -2,11 +2,12 @@ import BaseModel from './BaseModel';
|
||||
import { index, getModelForClass, prop, Ref, mongoose, DocumentType } from '@typegoose/typegoose';
|
||||
import Equip, { } from './Equip';
|
||||
import { CounterModel } from './Counter';
|
||||
import { COUNTER, EQUIP_TYPE } from '../consts';
|
||||
import { COUNTER, EQUIP_TYPE, HERO_CE_RATIO } from '../consts';
|
||||
import { reduceCe } from '../pubUtils/util';
|
||||
import Skin from './Skin';
|
||||
|
||||
class CeAttrData {
|
||||
type CeAttrUpdate = Partial<CeAttrData>;
|
||||
export class CeAttrData {
|
||||
@prop({ required: true })
|
||||
id: number = 0;
|
||||
@prop({ required: true })
|
||||
@@ -21,6 +22,23 @@ class CeAttrData {
|
||||
constructor(id: number) {
|
||||
this.id = id;
|
||||
}
|
||||
|
||||
public updateAttr(update: { inc?: CeAttrUpdate, set?: CeAttrUpdate }) {
|
||||
if(update.inc) {
|
||||
let { base, equipUp, fixUp, ratioUp } = update.inc;
|
||||
if(base != undefined) this.base += base * HERO_CE_RATIO;
|
||||
if(equipUp != undefined) this.equipUp += equipUp * HERO_CE_RATIO;
|
||||
if(fixUp != undefined) this.fixUp += fixUp * HERO_CE_RATIO;
|
||||
if(ratioUp != undefined) this.ratioUp += ratioUp;
|
||||
}
|
||||
if(update.set) {
|
||||
let { base, equipUp, fixUp, ratioUp } = update.set;
|
||||
if(base != undefined) this.base = base * HERO_CE_RATIO;
|
||||
if(equipUp != undefined) this.equipUp = equipUp * HERO_CE_RATIO;
|
||||
if(fixUp != undefined) this.fixUp = fixUp * HERO_CE_RATIO;
|
||||
if(ratioUp != undefined) this.ratioUp = ratioUp;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -207,6 +225,16 @@ export default class Hero extends BaseModel {
|
||||
return hero;
|
||||
}
|
||||
|
||||
public static async insertHeroes(roleId: string, roleName: string, serverId: number, heroInfos: HeroUpdate[]) {
|
||||
let insertInfos: HeroUpdate[] = [];
|
||||
for(let hero of heroInfos) {
|
||||
const seqId = await CounterModel.getNewCounter(COUNTER.HID) || -1;
|
||||
insertInfos.push({ ...hero, seqId, roleId, roleName, serverId })
|
||||
}
|
||||
const hero: HeroType[] = await HeroModel.insertMany(insertInfos);
|
||||
return hero;
|
||||
}
|
||||
|
||||
public static async sumTopHeroCe(roleId: string, num: number) {
|
||||
let ce: Array<{ historyCe: number }> = await HeroModel.aggregate([
|
||||
{ $match: { roleId } },
|
||||
|
||||
Reference in New Issue
Block a user