Files
ZYZ/shared/domain/battleField/guild.ts
2021-11-02 16:08:56 +08:00

188 lines
5.6 KiB
TypeScript

import { PvpEnemies, PvpOtherHeroes, WarStar } from "../../domain/dbGeneral";
import { GuildType } from "../../db/Guild";
import { RoleType } from "../../db/Role";
import { WAR_TYPE } from "../../consts";
import { gameData } from "../../pubUtils/data";
import { EXTERIOR } from "../../pubUtils/dicParam";
import { HeroType } from "../../db/Hero";
import { PvpDefenseType } from "../../db/PvpDefense";
import { PvpHistoryOppType } from "../../db/PvpHistoryOpp";
export class PlayerDetailHero {
actorId: number;
skinId: number;
lv: number;
star: number;
colorStar: number;
quality: number;
score: number = 0;
isDefense: boolean;
setPvpHeroInfo?(hero: PvpEnemies|PvpOtherHeroes) {
this.actorId = hero.actorId;
this.skinId = hero.skinId;
this.lv = hero.lv;
this.star = hero.star;
this.colorStar = hero.colorStar;
this.quality = hero.quality;
this.score = hero.score;
}
setByDbHero?(hero: HeroType) {
if(!hero) return;
this.actorId = hero.hid;
this.lv = hero.lv;
this.star = hero.star;
this.colorStar = hero.colorStar;
this.quality = hero.quality;
this.skinId = hero.skinId;
}
setPvpDefense?(pvpDefense: PvpDefenseType) {
if(!pvpDefense) return;
let { heroScores, defense } = pvpDefense;
let heroScore = heroScores.find(cur => cur.hid == this.actorId);
this.score = heroScore? heroScore.score: 0;
if(defense && defense.heroes) {
let h = defense.heroes.find(cur => cur.actorId == this.actorId);
if(!!h) this.isDefense = true;
} else {
this.isDefense = false;
}
}
setIsDefense?(isDefense: boolean) {
this.isDefense = isDefense;
}
}
class PlayerDetailBattle {
main: string[] = [];
tower: string[] = [];
pvp: string[] = [];
constructor(warStar: WarStar[], pvp: number, tower: number) {
let main = 0;
for(let { id, warType } of warStar) {
if(warType == WAR_TYPE.NORMAL) {
if(id > main) main = id;
}
}
let curDicWar = gameData.war.get(main);
if(curDicWar) {
this.main = curDicWar.detailUIBg;
}
this.pvp.push(pvp.toString());
this.tower.push(tower.toString());
}
}
export class PlayerDetail {
roleId: string;
roleName: string;
lv: number;
title?: number = 1;
head?: number = EXTERIOR.EXTERIOR_FACE;
frame?: number = EXTERIOR.EXTERIOR_FACECASE;
spine?: number = EXTERIOR.EXTERIOR_APPEARANCE;
score?: number = 0;
pLv?: number = 1;
defCe?: number = 0;
heroes: PlayerDetailHero[];
rank?:number = 0;
battle?: PlayerDetailBattle = new PlayerDetailBattle([], 0, 0);
constructor(roleId: string, heroes: PlayerDetailHero[], rank: number) {
this.roleId = roleId;
this.heroes = heroes;
this.rank = rank;
}
setRobot(pvpHistoryOpp: PvpHistoryOppType) {
if(pvpHistoryOpp.roleName) this.roleName = pvpHistoryOpp.roleName;
if(pvpHistoryOpp.lv) this.lv = pvpHistoryOpp.lv;
if(pvpHistoryOpp.title) this.title = pvpHistoryOpp.title;
if(pvpHistoryOpp.head) this.head = pvpHistoryOpp.head;
if(pvpHistoryOpp.frame) this.frame = pvpHistoryOpp.frame;
if(pvpHistoryOpp.spine) this.spine = pvpHistoryOpp.spine;
if(pvpHistoryOpp.score) this.score = pvpHistoryOpp.score;
if(pvpHistoryOpp.pLv) this.pLv = pvpHistoryOpp.pLv;
if(pvpHistoryOpp.defCe) this.defCe = pvpHistoryOpp.defCe;
}
setPlayer(role: RoleType, ) {
if(role.roleName) this.roleName = role.roleName;
if(role.lv) this.lv = role.lv;
if(role.title) this.title = role.title;
if(role.head) this.head = role.head;
if(role.frame) this.frame = role.frame;
if(role.spine) this.spine = role.spine;
}
setCe(ce: number) {
this.defCe = ce;
}
setPvpDefense(pvpDefense: PvpDefenseType) {
if(pvpDefense.score) this.score = pvpDefense.score;
if(pvpDefense.defense && pvpDefense.lineupCe) {
let defCe = 0;
for(let { actorId } of pvpDefense.defense.heroes) {
let lineupCe = pvpDefense.lineupCe.find(cur => cur.hid == actorId);
if(lineupCe) defCe += lineupCe.ce;
}
this.defCe = defCe;
this.pLv = pvpDefense.defense.pLv;
}
}
setWarStar?(warStar: WarStar[], pvp: number, tower: number) {
this.battle = new PlayerDetailBattle(warStar, pvp, tower);
}
}
// 军团返回
export class GuildMainInfo {
code: string; // 军团唯一编号
icon: number; // 头像
name: string; // 军团名
lv: number; // 等级
memberCnt: number; // 人数
isAuto: boolean; // 是否是自动加入
ceLimit: number; // 战力条件
constructor(guild: GuildType) {
this.code = guild.code;
this.icon = guild.icon;
this.name = guild.name;
this.lv = guild.lv;
this.memberCnt = guild.memberCnt;
this.ceLimit = guild.ceLimit;
this.isAuto = guild.isAuto;
}
}
// getGuildList里的返回
export class GuildListInfo extends GuildMainInfo {
leader: string; // 团长名
hasApply: boolean = false; // 是否有申请过
constructor(guild: GuildType) {
super(guild);
let leader = <RoleType>guild.leader;
if(leader) this.leader = leader.roleName;
}
setApply(hasApply: boolean) {
this.hasApply = hasApply;
}
}