pvp: 更改pvpdefense结构
This commit is contained in:
214
shared/domain/battleField/pvp.ts
Normal file
214
shared/domain/battleField/pvp.ts
Normal file
@@ -0,0 +1,214 @@
|
||||
import { prop, Ref, mongoose } from '@typegoose/typegoose';
|
||||
import Hero, { } from '../../db/Hero';
|
||||
import { PvpDefenseType } from '../../db/PvpDefense';
|
||||
import PvpHistoryOpp from '../../db/PvpHistoryOpp';
|
||||
import { PvpSeasonResultType } from '../../db/PvpSeasonResult';
|
||||
import { RewardInter } from '../../pubUtils/interface';
|
||||
|
||||
|
||||
// 防守阵容武将
|
||||
export class DefenseHero {
|
||||
@prop({ required: true })
|
||||
actorId: number; // 武将id
|
||||
@prop({ required: true })
|
||||
ai: number; // ai逻辑,1-进攻型 2-防守型
|
||||
@prop({ required: true })
|
||||
dataId: number;
|
||||
@prop({ required: true })
|
||||
order: number;
|
||||
@prop({ ref: 'Hero', type: mongoose.Schema.Types.ObjectId })
|
||||
hero: Ref<Hero>;
|
||||
}
|
||||
|
||||
// 防守阵容
|
||||
export class Defense {
|
||||
@prop({ required: true })
|
||||
warId: number;
|
||||
@prop({ required: true })
|
||||
buff: number;
|
||||
@prop({ required: true, type: DefenseHero, _id: false })
|
||||
heroes: DefenseHero[];
|
||||
@prop({ required: true })
|
||||
score: number; // 防守阵容的总军功
|
||||
@prop({ required: true })
|
||||
pLv: number; // 防守阵容的等级
|
||||
}
|
||||
|
||||
// 挑战阵容武将
|
||||
export class AttackHero {
|
||||
@prop({ required: true })
|
||||
actorId: number; // 武将id
|
||||
@prop({ required: true })
|
||||
order: number;
|
||||
}
|
||||
|
||||
// 挑战阵容
|
||||
export class Attack {
|
||||
@prop({ required: true, type: AttackHero, _id: false })
|
||||
heroes: AttackHero[];
|
||||
@prop({ required: true })
|
||||
score: number; // 防守阵容的总军功
|
||||
@prop({ required: true })
|
||||
pLv: number; // 防守阵容的等级
|
||||
}
|
||||
|
||||
// 两个阵容中的武将的分别的战力
|
||||
export class LineupCe {
|
||||
@prop({ required: true })
|
||||
hid: number; // 武将id
|
||||
@prop({ required: true })
|
||||
ce: number; // 战力
|
||||
}
|
||||
|
||||
export class OppPlayer {
|
||||
@prop({ required: true })
|
||||
roleId: string;
|
||||
@prop({ ref: 'PvpHistoryOpp', type: mongoose.Schema.Types.ObjectId })
|
||||
oppDef: Ref<PvpHistoryOpp>;
|
||||
@prop({ required: true })
|
||||
pos: number;
|
||||
@prop({ required: true })
|
||||
isRobot: boolean;
|
||||
}
|
||||
|
||||
export class HeroScore {
|
||||
@prop({ required: true })
|
||||
hid: number;
|
||||
@prop({ required: true })
|
||||
score: number;
|
||||
}
|
||||
|
||||
export class Reward {
|
||||
@prop({ required: true })
|
||||
id: number;
|
||||
@prop({ required: true })
|
||||
count: number;
|
||||
}
|
||||
|
||||
export class HeroReward {
|
||||
@prop({ required: true })
|
||||
hid: number;
|
||||
@prop({ required: true })
|
||||
id: number;
|
||||
@prop({ required: true })
|
||||
count: number;
|
||||
}
|
||||
|
||||
export class OppPlayerReturn {
|
||||
pos: number;
|
||||
roleId: string;
|
||||
roleName: string;
|
||||
head: number;
|
||||
frame: number;
|
||||
spine: number;
|
||||
lv: number;
|
||||
pLv: number;
|
||||
defCe: number;
|
||||
rankLv: number;
|
||||
addScore: number;
|
||||
plusScore: number;
|
||||
}
|
||||
|
||||
// 防守阵容武将
|
||||
export class DefenseHeroReturn {
|
||||
actorId: number; // 武将id
|
||||
ai: number; // ai逻辑,1-进攻型 2-防守型
|
||||
dataId: number;
|
||||
order: number;
|
||||
}
|
||||
|
||||
export class DefenseLineupReturn {
|
||||
warId: number;
|
||||
buff: number;
|
||||
heroes: DefenseHeroReturn[];
|
||||
score: number;
|
||||
pLv: number;
|
||||
ce: number;
|
||||
}
|
||||
|
||||
export class AttackLineupReturn {
|
||||
warId: number;
|
||||
buff: number;
|
||||
heroes: AttackHero[];
|
||||
score: number;
|
||||
pLv: number;
|
||||
ce: number;
|
||||
}
|
||||
|
||||
export class heroScoreReturn extends HeroScore {
|
||||
isDefense: boolean;
|
||||
}
|
||||
|
||||
export class SeasonDataReturn {
|
||||
score: number;
|
||||
heroScores: HeroScore[];
|
||||
seasonNum: number;
|
||||
seasonEndTime: number;
|
||||
rankLv: number;
|
||||
|
||||
constructor(pvpSeasonResult: PvpSeasonResultType) {
|
||||
this.score = pvpSeasonResult.score;
|
||||
this.heroScores = pvpSeasonResult.heroScores;
|
||||
this.seasonNum = pvpSeasonResult.seasonNum;
|
||||
this.seasonEndTime = pvpSeasonResult.seasonEndTime;
|
||||
this.rankLv = pvpSeasonResult.rankLv;
|
||||
}
|
||||
}
|
||||
|
||||
export class PvpSeasonResultRecord {
|
||||
oldSeasonData: SeasonDataReturn;
|
||||
heroGoods: HeroReward[];
|
||||
rankGoods: RewardInter[];
|
||||
constructor(pvpSeasonResult: PvpSeasonResultType) {
|
||||
this.oldSeasonData = new SeasonDataReturn(pvpSeasonResult);
|
||||
this.heroGoods = pvpSeasonResult.heroGoods;
|
||||
this.rankGoods = pvpSeasonResult.rankGoods;
|
||||
}
|
||||
}
|
||||
|
||||
export class PvpDataReturn {
|
||||
seasonNum: number;
|
||||
seasonEndTime: number;
|
||||
myRank: number = 0;
|
||||
oppPlayers: OppPlayerReturn[] = [];
|
||||
defense: DefenseLineupReturn = null;
|
||||
attack: AttackLineupReturn = null;
|
||||
score: number = 0;
|
||||
winStreakNum: number = 0;
|
||||
refOppCnt: number;
|
||||
setAttackCnt: number;
|
||||
challengeCnt: number;
|
||||
challengeRefTime: number;
|
||||
receiveBox: number[] = [];
|
||||
hisScore: number = 0;
|
||||
heroScores: heroScoreReturn[] = [];
|
||||
isFirstEntry: boolean = false;
|
||||
resultRecord: PvpSeasonResultRecord;
|
||||
|
||||
constructor(pvpDefense: PvpDefenseType) {
|
||||
this.score = pvpDefense.score;
|
||||
this.winStreakNum = pvpDefense.winStreakNum;
|
||||
this.receiveBox = pvpDefense.receivedBox;
|
||||
this.hisScore = pvpDefense.hisScore;
|
||||
// this.oppPlayers
|
||||
// this.heroScores
|
||||
|
||||
}
|
||||
|
||||
setOppPlayers(oppPlayers: OppPlayerReturn[]) {
|
||||
this.oppPlayers = oppPlayers;
|
||||
}
|
||||
|
||||
setMyRank(rankLv: number) {
|
||||
this.myRank = rankLv;
|
||||
}
|
||||
|
||||
setPvpConfig(seasonNum: number, seasonEndTime: number) {
|
||||
this.seasonNum = seasonNum;
|
||||
this.seasonEndTime = seasonEndTime;
|
||||
}
|
||||
|
||||
setPvpSeasonResult(pvpSeasonResult: PvpSeasonResultType) {
|
||||
this.resultRecord = new PvpSeasonResultRecord(pvpSeasonResult);
|
||||
}
|
||||
}
|
||||
@@ -41,8 +41,8 @@ export class PvpHeroInfo {
|
||||
this.quality = hero.quality;
|
||||
}
|
||||
|
||||
setRobotInfo(warjson: DicWarJson, lv: number, initialStar: number, quality: number) {
|
||||
this.actorId = warjson.actorId;
|
||||
setRobotInfo(warjson: DicWarJson, actorId: number, lv: number, initialStar: number, quality: number) {
|
||||
this.actorId = actorId;
|
||||
this.skinId = warjson.actorId;
|
||||
this.actorName = warjson.actorName;
|
||||
this.star = initialStar;
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { HeroScores } from "../../db/PvpHistoryOpp";
|
||||
import { HeroScore } from "../../domain/battleField/pvp";
|
||||
|
||||
export class TaskParam {
|
||||
star?: number;
|
||||
@@ -17,7 +17,7 @@ export class TaskParam {
|
||||
dailyType?: number;
|
||||
point?: number;
|
||||
gid?: number;
|
||||
heroScores?: HeroScores[];
|
||||
heroScores?: HeroScore[];
|
||||
rankLv?: number;
|
||||
title?: number;
|
||||
job?: number;
|
||||
|
||||
Reference in New Issue
Block a user