feat(战场): 保存战阵连携顺序

This commit is contained in:
luying
2023-08-01 17:20:21 +08:00
parent 07bce370aa
commit f0ab9b0aeb
14 changed files with 102 additions and 33 deletions
+5
View File
@@ -8,6 +8,7 @@ import { DicGVGAreaPoint } from "../pubUtils/dictionary/DicGVGAreaPoint";
import { InitTeamParam, SaveTeamUpdateParam } from "../domain/gvgField/gvgDb";
import { GVGHeroInfo } from "../domain/dbGeneral";
import { GVG_BATTLE_PRE_TIME, GVG_CATAPULT, GVG_ROBOT } from "../consts";
import { Combo } from "../domain/battleField/pvp";
@index({ roleId: 1, index: 1 })
@index({ teamCode: 1 })
@@ -110,6 +111,9 @@ export default class GVGTeam extends BaseModel {
@prop({ required: true, type: () => GVGHeroInfo, _id: false })
lineup: GVGHeroInfo[];
@prop({ required: true, type: () => Combo, _id: false })
combo: Combo[];
@prop({ required: true })
lineupCe: number;
@@ -137,6 +141,7 @@ export default class GVGTeam extends BaseModel {
const teamCode = genCode(8);
const insert = Object.assign(doc.toJSON(), { ...initParam, teamCode });
delete insert.lineup;
delete insert.combo;
const team: GVGTeamType | null = await GVGTeamModel.findOneAndUpdate({ roleId, index }, { $setOnInsert: insert, $set: updateParam }, { upsert: true, new: true }).lean();
return team;
}
+4
View File
@@ -2,6 +2,7 @@ import BaseModel from './BaseModel';
import { index, getModelForClass, prop, DocumentType, mongoose } from '@typegoose/typegoose';
import { RoleType } from './Role';
import { getZeroPoint } from '../pubUtils/timeUtil';
import { Combo } from '../domain/battleField/pvp';
export class Lineup {
@prop({ required: true })
@@ -58,6 +59,9 @@ export default class GVGVestigeRank extends BaseModel {
@prop({ required: true, type: Lineup, default: [], _id: false })
lineup: Lineup[]; // 阵容
@prop({ required: true, type: () => Combo, default: [], _id: false })
combo: Combo[]; // 阵容
@prop({ required: true, type: Number, default: [], _id: false })
oppRanks: number[]; // 对手的排名
+2 -2
View File
@@ -115,8 +115,8 @@ export default class PvpDefense extends BaseModel {
const result: PvpDefenseType = await PvpDefenseModel.findOne({ roleId })
.populate('role', 'serverId head frame spine heads frames spines topLineupCe roleId roleName lv globalCeAttr title')
.populate('heroes.hero')
.populate('oppPlayers.oppDef', 'oppRoleId pos roleName head frame spine heads frames spines rankLv title lv pLv defCe heroes warId buff')
.populate('oppBeforePlayers.oppDef', 'oppRoleId pos roleName head frame spine heads frames spines rankLv title lv pLv defCe heroes warId buff').lean({ getters: true, virtuals: true });
.populate('oppPlayers.oppDef', 'oppRoleId pos roleName head frame spine heads frames spines rankLv title lv pLv defCe heroes warId buff combo')
.populate('oppBeforePlayers.oppDef', 'oppRoleId pos roleName head frame spine heads frames spines rankLv title lv pLv defCe heroes warId buff combo').lean({ getters: true, virtuals: true });
return result;
}
+11 -2
View File
@@ -11,6 +11,13 @@ export class HeroScores {
score: number;
}
export class Combo {
@prop({ required: true })
groupId: number;
@prop({ required: true, type: Number })
levelList: number[];
}
@index({ roleId: 1, oppRoleId: 1 })
export default class PvpHistoryOpp extends BaseModel {
@prop({ required: true })
@@ -47,9 +54,11 @@ export default class PvpHistoryOpp extends BaseModel {
warId: number; // 对手选择的地图id
@prop({ required: true })
buff: number; // 对手选择的buff
@prop({ required: true, type: PvpEnemies, default: [], _id: false })
@prop({ required: true, type: () => PvpEnemies, default: [], _id: false })
heroes: PvpEnemies[]; // 对手阵容
@prop({ required: true, type: PvpOtherHeroes, default: [] })
@prop({ required: true, type: () => Combo })
combo: Combo[]; // 状态 0-仅刷出 1-挑战过
@prop({ required: true, type: () => PvpOtherHeroes, default: [] })
otherHeroes: PvpOtherHeroes[]; // 阵容以外所有武将信息
@prop({ required: true, default: 0 })
status: number; // 状态 0-仅刷出 1-挑战过