名将擂台:获取对手
This commit is contained in:
@@ -1,11 +1,13 @@
|
||||
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 Hero, { HeroType } from '../../db/Hero';
|
||||
import { LadderMatchType } from "../../db/LadderMatch";
|
||||
import { LadderMatchRecType } from "../../db/LadderMatchRec";
|
||||
import { RoleType } from "../../db/Role";
|
||||
import { gameData } from "../../pubUtils/data";
|
||||
import { EXTERIOR, LADDER } from "../../pubUtils/dicParam";
|
||||
import { DicLadderDifficultRatio } from "../../pubUtils/dictionary/DicLadderDifficultRatio";
|
||||
import { DicWarJson } from "../../pubUtils/dictionary/DicWarJson";
|
||||
import { RoleRankInfo } from "../rank";
|
||||
|
||||
// ladderMatch表
|
||||
@@ -33,6 +35,7 @@ export class LadderDefenseHero {
|
||||
}
|
||||
}
|
||||
|
||||
// ladderMatch表
|
||||
export class LadderDefense {
|
||||
|
||||
@prop({ required: true })
|
||||
@@ -47,6 +50,16 @@ export class LadderDefense {
|
||||
}
|
||||
|
||||
|
||||
// LadderMatch表
|
||||
export class LadderOppPlayerInDB {
|
||||
@prop({ required: true })
|
||||
rank: number;
|
||||
@prop({ required: true })
|
||||
roleId: string;
|
||||
@prop({ required: true })
|
||||
isRobot: boolean;
|
||||
}
|
||||
|
||||
// ladderMatchRec
|
||||
export class LadderOppPlayerHeroInfo {
|
||||
@prop({ required: true })
|
||||
@@ -54,44 +67,66 @@ export class LadderOppPlayerHeroInfo {
|
||||
@prop({ required: true })
|
||||
skinId: number; // 皮肤id
|
||||
@prop({ required: true })
|
||||
quality: number; // 皮肤id
|
||||
quality: number; // 品质
|
||||
@prop({ required: true })
|
||||
star: number; // 皮肤id
|
||||
star: number; // 星级
|
||||
@prop({ required: true })
|
||||
colorStar: number; // 皮肤id
|
||||
colorStar: number; // 彩星
|
||||
@prop({ required: true })
|
||||
lv: number; // 皮肤id
|
||||
lv: number; // 等级
|
||||
|
||||
setByWarJson(warJson: DicWarJson) {
|
||||
this.hid = warJson.actorId;
|
||||
this.skinId = warJson.actorId;
|
||||
this.star = warJson.star;
|
||||
this.colorStar = 0;
|
||||
this.lv = warJson.lv;
|
||||
let dicHero = gameData.hero.get(warJson.actorId);
|
||||
if(dicHero) this.quality = dicHero.quality;
|
||||
}
|
||||
|
||||
setByDefenseHero(hero: HeroType) {
|
||||
this.hid = hero.hid;
|
||||
this.skinId = hero.skinId;
|
||||
this.quality = hero.quality;
|
||||
this.star = hero.star;
|
||||
this.colorStar = hero.colorStar;
|
||||
this.lv = hero.lv;
|
||||
}
|
||||
}
|
||||
|
||||
// ladderMatchRec
|
||||
export class LadderOppPlayerInfo {
|
||||
@prop({ required: true })
|
||||
oldRank: number; // 原排名
|
||||
oldRank: number = 0; // 原排名
|
||||
@prop({ required: true })
|
||||
newRank: number; // 交换后的排名
|
||||
newRank: number = 0; // 交换后的排名
|
||||
@prop({ required: true })
|
||||
roleId: string; // 角色 id
|
||||
roleId: string = ''; // 角色 id
|
||||
@prop({ required: true })
|
||||
roleName: string; // 角色 名
|
||||
roleName: string = LADDER.LADDER_ROBOT_NAME; // 角色 名
|
||||
@prop({ required: true, default: 0 })
|
||||
lv: number; // 等级
|
||||
lv: number = 1; // 等级
|
||||
@prop({ required: true, default: EXTERIOR.EXTERIOR_FACE })
|
||||
head: number; // 头像
|
||||
head: number = EXTERIOR.EXTERIOR_FACE; // 头像
|
||||
@prop({ required: true, default: EXTERIOR.EXTERIOR_FACECASE })
|
||||
frame: number; // 相框
|
||||
frame: number = EXTERIOR.EXTERIOR_FACECASE; // 相框
|
||||
@prop({ required: true, default: EXTERIOR.EXTERIOR_APPEARANCE })
|
||||
spine: number; // 形象
|
||||
spine: number = EXTERIOR.EXTERIOR_APPEARANCE; // 形象
|
||||
@prop({ required: true, default: 0 })
|
||||
title: number; // 爵位
|
||||
title: number = 1; // 爵位
|
||||
@prop({ required: true, default: 0 })
|
||||
ce: number; // 最高五人战力
|
||||
ce: number = 0; // 防守战力
|
||||
@prop({ required: true, default: false })
|
||||
isSuccess: boolean; // 是否胜利
|
||||
@prop({ required: true, default: 0 })
|
||||
score: number; // 获得的总积分
|
||||
isSuccess: boolean = false; // 是否胜利
|
||||
@prop({ required: true, default: [], type: LadderOppPlayerHeroInfo, _id: false })
|
||||
heroes: LadderOppPlayerHeroInfo[]; // 获得的总积分
|
||||
heroes: LadderOppPlayerHeroInfo[] = []; // 武将
|
||||
@prop({ required: true })
|
||||
isRobot: boolean = false; // 原排名
|
||||
|
||||
constructor(role: RoleType, heroes: LadderOppPlayerHeroInfo[], defCe: number, isSuccess: boolean ) {
|
||||
initByPlayer(rank: number, role: RoleType, heroes: LadderOppPlayerHeroInfo[], defCe: number, isSuccess: boolean ) {
|
||||
this.oldRank = rank;
|
||||
this.newRank = rank;
|
||||
this.roleId = role.roleId;
|
||||
this.roleName = role.roleName;
|
||||
this.head = role.head;
|
||||
@@ -103,9 +138,21 @@ export class LadderOppPlayerInfo {
|
||||
this.isSuccess = isSuccess;
|
||||
this.heroes = heroes;
|
||||
}
|
||||
|
||||
initByRobot(dicLadderDifficultRatio: DicLadderDifficultRatio, heroes: LadderOppPlayerHeroInfo[], isSuccess: boolean) {
|
||||
this.oldRank = dicLadderDifficultRatio.rank;
|
||||
this.newRank = dicLadderDifficultRatio.rank;
|
||||
this.roleId = `robot${this.oldRank}`;
|
||||
this.head = dicLadderDifficultRatio.head;
|
||||
this.spine = dicLadderDifficultRatio.spine;
|
||||
this.ce = dicLadderDifficultRatio.ce;
|
||||
this.lv = dicLadderDifficultRatio.level;
|
||||
this.isSuccess = isSuccess;
|
||||
this.heroes = heroes;
|
||||
}
|
||||
}
|
||||
|
||||
// 接口返回
|
||||
// defense字段 接口返回
|
||||
export class LadderDefenseHeroReturn {
|
||||
actorId: number; // 武将id
|
||||
ai: number; // ai逻辑,1-进攻型 2-防守型
|
||||
@@ -120,6 +167,7 @@ export class LadderDefenseHeroReturn {
|
||||
}
|
||||
}
|
||||
|
||||
// defense字段 接口返回
|
||||
export class LadderDefenseReturn {
|
||||
warId: number;
|
||||
defCe: number = 0;
|
||||
@@ -135,21 +183,23 @@ export class LadderDefenseReturn {
|
||||
}
|
||||
}
|
||||
|
||||
// oppPlayers字段接口返回
|
||||
export class LadderOppPlayerReturn {
|
||||
rank: number; // 对手排名
|
||||
roleId: string; // 对手玩家id
|
||||
roleName: string; // 对手玩家名
|
||||
head: number; // 头像
|
||||
frame: number; // 相框
|
||||
spine: number; // 形象
|
||||
lv: number; // 对手玩家等级
|
||||
title: number; // 对手爵位
|
||||
defCe: number; // 对手防守阵容战力
|
||||
isRobot: boolean; // 是否是机器人
|
||||
rank: number = 0; // 对手排名
|
||||
roleId: string = ''; // 对手玩家id
|
||||
roleName: string = LADDER.LADDER_ROBOT_NAME; // 对手玩家名
|
||||
head: number = EXTERIOR.EXTERIOR_FACE; // 头像
|
||||
frame: number = EXTERIOR.EXTERIOR_FACECASE; // 相框
|
||||
spine: number = EXTERIOR.EXTERIOR_APPEARANCE; // 形象
|
||||
lv: number = 1; // 对手玩家等级
|
||||
title: number = 1; // 对手爵位
|
||||
defCe: number = 0; // 对手防守阵容战力
|
||||
isRobot: boolean = true; // 是否是机器人
|
||||
|
||||
constructor(rank: number, isRobot: boolean) {
|
||||
this.rank = rank;
|
||||
this.isRobot = isRobot;
|
||||
if(isRobot) this.roleId = `robot${this.rank}`;
|
||||
}
|
||||
|
||||
setByRedis(param: RoleRankInfo, defCe: number) {
|
||||
@@ -164,17 +214,14 @@ export class LadderOppPlayerReturn {
|
||||
}
|
||||
|
||||
setByRobot(ladderDifficultRatio: DicLadderDifficultRatio) {
|
||||
this.roleId = `robot${this.rank}`;
|
||||
this.roleName = LADDER.LADDER_ROBOT_NAME;
|
||||
this.frame = EXTERIOR.EXTERIOR_FACECASE;
|
||||
this.head = ladderDifficultRatio.head;
|
||||
this.spine = ladderDifficultRatio.spine;
|
||||
this.lv = ladderDifficultRatio.level;
|
||||
this.title = 1;
|
||||
this.defCe = ladderDifficultRatio.ce;
|
||||
}
|
||||
}
|
||||
|
||||
// getData总体返回
|
||||
export class LadderDataReturn {
|
||||
rank: number = 0;
|
||||
historyRank: number = 0;
|
||||
@@ -182,7 +229,7 @@ export class LadderDataReturn {
|
||||
buyCnt: number = 0;
|
||||
refOppCnt: number = 0;
|
||||
defense: LadderDefenseReturn = null;
|
||||
status: LADDER_STATUS;
|
||||
status: LADDER_STATUS = LADDER_STATUS.NO;
|
||||
time: number = 0;
|
||||
oppPlayers: LadderOppPlayerReturn[] = []
|
||||
|
||||
@@ -211,11 +258,53 @@ export class LadderDataReturn {
|
||||
|
||||
}
|
||||
|
||||
export class LadderOppPlayerInDB {
|
||||
@prop({ required: true })
|
||||
rank: number;
|
||||
@prop({ required: true })
|
||||
roleId: string;
|
||||
@prop({ required: true })
|
||||
isRobot: boolean;
|
||||
// getOppLineup返回
|
||||
export class LadderOppLineupReturn {
|
||||
myRank: number = 0;
|
||||
isRobot: boolean = true;
|
||||
rank: number = 0;
|
||||
roleId: string = '';
|
||||
roleName: string = LADDER.LADDER_ROBOT_NAME;
|
||||
title: number = 1;
|
||||
guildName: string = '';
|
||||
defCe: number = 0;
|
||||
heroes: LadderOppPlayerHeroInfo[] = []
|
||||
|
||||
setMyRank(myRank: number) {
|
||||
this.myRank = myRank;
|
||||
}
|
||||
|
||||
setRobot(ladderDifficultRatio: DicLadderDifficultRatio, warJsons: DicWarJson[]) {
|
||||
this.isRobot = true;
|
||||
this.rank = ladderDifficultRatio.rank;
|
||||
this.roleId = `robot${this.rank}`;
|
||||
this.defCe = ladderDifficultRatio.ce;
|
||||
for(let warJson of warJsons) {
|
||||
if(warJson.relation == 2) {
|
||||
let hero = new LadderOppPlayerHeroInfo();
|
||||
hero.setByWarJson(warJson);
|
||||
this.heroes.push(hero);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @param ladderMatch 需要是populate过role和defense.hero
|
||||
*/
|
||||
setPlayer(ladderMatch: LadderMatchType) {
|
||||
this.isRobot = false;
|
||||
this.rank = ladderMatch.rank;
|
||||
this.roleId = ladderMatch.roleId;
|
||||
let role = <RoleType>ladderMatch.role;
|
||||
this.roleName = role.roleName;
|
||||
this.title = role.title;
|
||||
this.guildName = role.guildName;
|
||||
for(let defenseHero of (ladderMatch.defense?.heroes||[])) {
|
||||
this.defCe += defenseHero.ce;
|
||||
let hero = new LadderOppPlayerHeroInfo();
|
||||
hero.setByDefenseHero(<HeroType>defenseHero.hero);
|
||||
this.heroes.push(hero);
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user