名将擂台:基础界面
This commit is contained in:
@@ -0,0 +1,183 @@
|
||||
import { mongoose, prop, Ref } from "@typegoose/typegoose";
|
||||
import { LADDER_BATTLE_STOP_TIME, LADDER_CHECK_STOP_TIME, LADDER_STATUS } from "../../consts";
|
||||
import Hero from '../../db/Hero';
|
||||
import { LadderMatchType } from "../../db/LadderMatch";
|
||||
import { LadderMatchRecType } from "../../db/LadderMatchRec";
|
||||
import { RoleType } from "../../db/Role";
|
||||
import { EXTERIOR } from "../../pubUtils/dicParam";
|
||||
|
||||
// ladderMatch表
|
||||
export class LadderDefenseHero {
|
||||
@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>;
|
||||
@prop({ required: true })
|
||||
ce: number;
|
||||
|
||||
constructor(param: { actorId: number, ai: number, dataId: number, order: number }, heroId: string, ce: number) {
|
||||
this.actorId = param.actorId;
|
||||
this.ai = param.ai;
|
||||
this.dataId = param.dataId;
|
||||
this.order = param.order;
|
||||
this.hero = heroId;
|
||||
this.ce = ce;
|
||||
}
|
||||
}
|
||||
|
||||
export class LadderDefense {
|
||||
|
||||
@prop({ required: true })
|
||||
warId: number;
|
||||
@prop({ required: true, type: LadderDefenseHero, _id: false })
|
||||
heroes: LadderDefenseHero[];
|
||||
|
||||
constructor(heroes: LadderDefenseHero[], warId: number) {
|
||||
this.heroes = heroes;
|
||||
this.warId = warId;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// ladderMatchRec
|
||||
export class LadderOppPlayerHeroInfo {
|
||||
@prop({ required: true })
|
||||
hid: number; // 武将id
|
||||
@prop({ required: true })
|
||||
skinId: number; // 皮肤id
|
||||
@prop({ required: true })
|
||||
quality: number; // 皮肤id
|
||||
@prop({ required: true })
|
||||
star: number; // 皮肤id
|
||||
@prop({ required: true })
|
||||
colorStar: number; // 皮肤id
|
||||
@prop({ required: true })
|
||||
lv: number; // 皮肤id
|
||||
}
|
||||
|
||||
export class LadderOppPlayerInfo {
|
||||
@prop({ required: true })
|
||||
oldRank: number; // 原排名
|
||||
@prop({ required: true })
|
||||
newRank: number; // 交换后的排名
|
||||
@prop({ required: true })
|
||||
roleId: string; // 角色 id
|
||||
@prop({ required: true })
|
||||
roleName: string; // 角色 名
|
||||
@prop({ required: true, default: 0 })
|
||||
lv: number; // 等级
|
||||
@prop({ required: true, default: EXTERIOR.EXTERIOR_FACE })
|
||||
head: number; // 头像
|
||||
@prop({ required: true, default: EXTERIOR.EXTERIOR_FACECASE })
|
||||
frame: number; // 相框
|
||||
@prop({ required: true, default: EXTERIOR.EXTERIOR_APPEARANCE })
|
||||
spine: number; // 形象
|
||||
@prop({ required: true, default: 0 })
|
||||
title: number; // 爵位
|
||||
@prop({ required: true, default: 0 })
|
||||
ce: number; // 最高五人战力
|
||||
@prop({ required: true, default: false })
|
||||
isSuccess: boolean; // 是否胜利
|
||||
@prop({ required: true, default: 0 })
|
||||
score: number; // 获得的总积分
|
||||
@prop({ required: true, default: [], type: LadderOppPlayerHeroInfo, _id: false })
|
||||
heroes: LadderOppPlayerHeroInfo[]; // 获得的总积分
|
||||
|
||||
constructor(role: RoleType, heroes: LadderOppPlayerHeroInfo[], defCe: number, isSuccess: boolean ) {
|
||||
this.roleId = role.roleId;
|
||||
this.roleName = role.roleName;
|
||||
this.head = role.head;
|
||||
this.frame = role.frame;
|
||||
this.spine = role.spine;
|
||||
this.title = role.title;
|
||||
this.ce = defCe;
|
||||
this.lv = role.lv;
|
||||
this.isSuccess = isSuccess;
|
||||
this.heroes = heroes;
|
||||
}
|
||||
}
|
||||
|
||||
// 接口返回
|
||||
export class LadderDefenseHeroReturn {
|
||||
actorId: number; // 武将id
|
||||
ai: number; // ai逻辑,1-进攻型 2-防守型
|
||||
dataId: number;
|
||||
order: number;
|
||||
|
||||
constructor(defenseHero: LadderDefenseHero) {
|
||||
this.actorId = defenseHero.actorId;
|
||||
this.ai = defenseHero.ai;
|
||||
this.dataId = defenseHero.dataId;
|
||||
this.order = defenseHero.order;
|
||||
}
|
||||
}
|
||||
|
||||
export class LadderDefenseReturn {
|
||||
warId: number;
|
||||
defCe: number = 0;
|
||||
heroes: LadderDefenseHeroReturn[] = [];
|
||||
|
||||
constructor(defense: LadderDefense) {
|
||||
if(!defense) return;
|
||||
this.warId = defense.warId;
|
||||
for(let defenseHero of defense.heroes) {
|
||||
this.defCe += defenseHero.ce;
|
||||
this.heroes.push(new LadderDefenseHeroReturn(defenseHero));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
export class LadderOppPlayerReturn {
|
||||
rank: number; // 对手拍名
|
||||
roleId: string; // 对手玩家id
|
||||
roleName: string; // 对手玩家名
|
||||
head: number; // 头像
|
||||
frame: number; // 相框
|
||||
spine: number; // 形象
|
||||
lv: number; // 对手玩家等级
|
||||
title: number; // 对手爵位
|
||||
defCe: number; // 对手防守阵容战力
|
||||
isRobot: boolean; // 是否是机器人
|
||||
}
|
||||
|
||||
export class LadderDataReturn {
|
||||
rank: number = 0;
|
||||
historyRank: number = 0;
|
||||
challengeCnt: number = 0;
|
||||
buyCnt: number = 0;
|
||||
refOppCnt: number = 0;
|
||||
defense: LadderDefenseReturn = null;
|
||||
status: LADDER_STATUS;
|
||||
time: number = 0;
|
||||
oppPlayers: LadderOppPlayerReturn[] = []
|
||||
|
||||
setLadderData(ladderData: LadderMatchType, ladderRec?: LadderMatchRecType) {
|
||||
this.rank = ladderData.rank;
|
||||
this.historyRank = ladderData.historyRank;
|
||||
this.challengeCnt = ladderData.challengeCnt;
|
||||
this.buyCnt = ladderData.buyCnt;
|
||||
this.refOppCnt = ladderData.refOppCnt;
|
||||
if(ladderData.defense) {
|
||||
this.defense = new LadderDefenseReturn(ladderData.defense);
|
||||
}
|
||||
if(ladderRec) {
|
||||
this.status = ladderRec.status;
|
||||
if(this.status == LADDER_STATUS.BATTLE) {
|
||||
this.time = ladderRec.battleTime + LADDER_BATTLE_STOP_TIME;
|
||||
} else if (this.status == LADDER_STATUS.CHECK) {
|
||||
this.time = ladderRec.checkTime + LADDER_CHECK_STOP_TIME;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
setOppPlayers(oppPlayers: LadderOppPlayerReturn[]) {
|
||||
this.oppPlayers = oppPlayers;
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user