Files
ZYZ/shared/domain/battleField/ComBattleTeamField.ts
2022-07-27 19:58:16 +08:00

92 lines
2.9 KiB
TypeScript

import { COM_BTL_CONST, COM_TEAM_STATUS } from '../../consts';
import { gameData, getBossHpByBlueprtId, getDicBlueprtById } from '../../pubUtils/data';
import ComBattleTeam from './../../db/ComBattleTeam';
import { cloneDeep } from 'lodash'
import { FriendParams } from '../roleField/friend';
import { nowSeconds } from '../../pubUtils/timeUtil';
import moment = require('moment');
/**
* 拷贝敌军数组并添加当前血量字段
* @param source 原敌军数组,不包含当前血量字段
*/
export function transBossHpArr(source: Array<{ dataId: number, hp: number, actorId: number }>): Array<{ dataId: number, hp: number, curHp: number, actorId: number }> {
let desArr = [];
source.forEach(elem => {
let { hp } = elem;
desArr.push(Object.assign(elem, { curHp: hp }));
});
return cloneDeep(desArr);
}
export class MemComBtlTeam extends ComBattleTeam {
bossCurHp: number;
curRnd: number;
bossHp: number;
sid: string;
constructor(teamCode: string, pub: boolean, blueprtId: number, capId: string, ceLimit: number, sid: string) {
super();
const { lv } = getDicBlueprtById(blueprtId);
this.lv = lv;
const { bossHpSum, bossHpArr } = getBossHpByBlueprtId(blueprtId);
this.bossHpArr = transBossHpArr(bossHpArr);
this.teamCode = teamCode;
this.pub = pub;
this.blueprtId = blueprtId;
this.status = COM_TEAM_STATUS.DEFAULT;
this.capId = capId;
this.ceLimit = ceLimit;
this.curRnd = 0;
this.roleCnt = 1;
this.timeout = false;
this.bossCurHp = bossHpSum;
this.bossHp = bossHpSum;
this.blacklist = [];
this.sid = sid;
}
findMemberByRoleId(roleId: string) {
return this.roleStatus.find(cur => cur.roleId == roleId);
}
startTeam() {
this.status = COM_TEAM_STATUS.FIGHTING;
this.startTime = nowSeconds();
this.endTime = nowSeconds() + COM_BTL_CONST.BTL_TIME_LMT/1000;
this.hasTimeExtraReward = isComBattleTimeLimit();
}
};
export class ComBattleInvitation {
teamCode: string;
blueprtId: number;
leader: FriendParams;
roleCnt: number;
status: number;
constructor(comBattle: ComBattleTeam, leader: FriendParams) {
this.teamCode = comBattle.teamCode;
this.blueprtId = comBattle.blueprtId;
this.leader = leader;
this.roleCnt = comBattle.roleCnt;
this.status = comBattle.status;
}
}
/**
* 当前是否是有加成的特殊时间
*/
export function isComBattleTimeLimit() {
let arr = gameData.comBattleRewardTime;
for(let { from, to } of arr) {
let fromTime = moment(moment().format(`YYYY-MM-DD ${from}`)).valueOf();
let toTime = moment(moment().format(`YYYY-MM-DD ${to}`)).valueOf();
let now = moment().valueOf();
if(fromTime <= now && toTime >= now) return true;
}
return false;
}