寻宝:信息边窗

This commit is contained in:
luying
2022-06-24 16:41:59 +08:00
parent b1dc091453
commit 460d0d6955
15 changed files with 153 additions and 38 deletions

View File

@@ -1,4 +1,4 @@
import { MemComBtlTeam } from './../../../domain/battleField/ComBattleTeamField';
import { ComBattleInvitation, MemComBtlTeam } from './../../../domain/battleField/ComBattleTeamField';
import { difference } from 'underscore';
/*
* @Author: 梁桐川
@@ -14,8 +14,8 @@ import { resResult, getRandSingleEelm, cal } from '../../../pubUtils/util';
import { RoleStatus, ComBattleTeamModel, ComBattleTeamType, BossHp, ComRoleStatusHero } from '../../../db/ComBattleTeam';
import { ItemModel, ItemType } from '../../../db/Item';
import { addItems, handleCost } from '../../../services/role/rewardService';
import { checkRoleInQueue, rmRoleFromQueue, setTeamSearchReq } from '../../../services/redisService';
import { getRandBlueprtId, clearComBtlTimer, getFrd, updateRobotHurtByTime, comBtlLvInvalid, clearRobotHurtTimer, setDismissTimer, dismissTeam, handleComBtlProgress, getComBattleFriendAdd, teammateInBlackList, blueprtIdValid, hasEnoughBlueprt, addRoleToTeam, addRoleStToTeam, addValidSearchingRoles, validToJoin, addRobotsToTeam, addRobotsLater, teamIsFullToStart, oneTeamNotInBlack, getAllAssistCnt, checkHasMyTeam, checkTeamStatusAndSend } from '../../../services/comBattleService';
import { checkRoleInQueue, getServerName, rmRoleFromQueue, setTeamSearchReq } from '../../../services/redisService';
import { getRandBlueprtId, clearComBtlTimer, getFrd, updateRobotHurtByTime, comBtlLvInvalid, clearRobotHurtTimer, setDismissTimer, dismissTeam, handleComBtlProgress, getComBattleFriendAdd, teammateInBlackList, blueprtIdValid, hasEnoughBlueprt, addRoleToTeam, addRoleStToTeam, addValidSearchingRoles, validToJoin, addRobotsToTeam, addRobotsLater, teamIsFullToStart, oneTeamNotInBlack, getAllAssistCnt, checkHasMyTeam, checkTeamStatusAndSend, getComBtlLvByPlayerLv } from '../../../services/comBattleService';
import { setAp } from '../../../services/actionPointService';
import { roleLevelup } from '../../../services/normalBattleService';
import { getSimpleRoleInfo } from '../../../services/roleService';
@@ -689,7 +689,8 @@ export class ComBattleHandler {
const { teamCode } = msg;
let teamStatus = this.teamMap.get(teamCode);
if(!teamStatus) return resResult(STATUS.WRONG_PARMS);
await pushTeamInviteMsg(roleId, roleName, serverId, guildCode, teamCode, teamStatus.blueprtId);
await pushTeamInviteMsg(roleId, roleName, serverId, teamCode, teamStatus.blueprtId, teamStatus.lv, teamStatus.ceLimit);
await ComBattleTeamModel.invite(teamCode, 'world');
return resResult(STATUS.SUCCESS);
}
@@ -707,6 +708,15 @@ export class ComBattleHandler {
let teamStatus = this.teamMap.get(teamCode);
if(!teamStatus) return resResult(STATUS.WRONG_PARMS);
let role = await RoleModel.findByRoleId(targetRoleId, 'lv');
if(comBtlLvInvalid(role.lv, [teamStatus.lv])) {
return resResult(STATUS.COM_BATTLE_INVITE_LV_NOT_ENOUGH);
}
if (role.topLineupCe < teamStatus.ceLimit) {
return resResult(STATUS.COM_BATTLE_CE_LIMIT);
}
await ComBattleTeamModel.invite(teamCode, targetRoleId);
let relation = await getFriendRelationType(roleId, targetRoleId);
const msgData = await pushFriendTeamInviteMsg(roleId, roleName, teamCode, teamStatus.blueprtId, targetRoleId, relation);
if (!msgData) return resResult(STATUS.WRONG_PARMS);
@@ -746,4 +756,28 @@ export class ComBattleHandler {
return resResult(STATUS.SUCCESS, { list: result });
}
async getTeamInvitation(msg: { }, session: BackendSession) {
let roleId = session.get('roleId');
let role = await RoleModel.findByRoleId(roleId, 'lv topLineupCe');
const assistCnt = await getAllAssistCnt(roleId);
let { minLv, maxLv } = getComBtlLvByPlayerLv(role.lv);
let refreshTime = nowSeconds() - 60;
const invitations = await ComBattleTeamModel.findInvitations(roleId, minLv, maxLv, role.topLineupCe, refreshTime, 10);
let roleIds = invitations.map(cur => cur.capId);
let roles = await RoleModel.findByRoleIds(roleIds);
const teams: ComBattleInvitation[] = [];
for(let invitation of invitations) {
let leader = roles.find(role => role.roleId == invitation.capId);
if(leader) {
let leaderParam = new FriendParams(leader);
let serverName = await getServerName(leader.serverId);
leaderParam.setServerName(leader.serverId, serverName);
teams.push(new ComBattleInvitation(invitation, leaderParam));
}
}
return resResult(STATUS.SUCCESS, { teams, assistCnt });
}
}

View File

@@ -64,7 +64,7 @@ export class EntryHandler {
}
let serverName = this.app.getServerId();
await roleLogin(role.roleId, user.userCode, serverName, user.pkgName, role.createTime, role.serverId); // 保存在线用户
await roleLogin(role.roleId, user.userCode, serverName, role.createTime, role.serverId, role.lv, role.topLineupCe); // 保存在线用户
await this.addSession(user, role, session);
await reportCreateRoleEventToTa(role, this.getIp(session));

View File

@@ -2,7 +2,7 @@ import { Application, BackendSession, pinus } from 'pinus';
import { getRandSingleEelm, resResult } from '../../../pubUtils/util';
import { STATUS } from '../../../consts/statusCode';
import { GMMailModel, GMMailType } from '../../../db/GMMail';
import { delGuildActivityRank, getRoleOnlineInfo } from '../../../services/redisService';
import { delGuildActivityRank } from '../../../services/redisService';
import { ACTIVITY_TYPE, GM_MAIL_STATUS, GM_MAIL_TYPE, MAIL_TIME_TYPE, PUSH_ROUTE, SURVEY_SELECT } from '../../../consts';
import { checkActivityEditable, checkActivityGroupType, checkActivityGroupTypeWithId } from '../../../services/activity/activityService';
import { ActivityModel } from '../../../db/Activity';

View File

@@ -13,7 +13,9 @@ import { getRoleOnlineInfo } from './redisService';
import { ChatInfoModel } from '../db/ChatInfo';
import { AccuseRecModel, AccueseParam } from '../db/AccuseRec';
import { getSimpleRoleInfo, getSimpleRoleInfos } from './roleService';
import { sendMessageToCityWithSuc, sendMessageToGuildWithSuc, sendMessageToServerWithSuc, sendMessageToTeam, sendMessageToUserWithSuc } from './pushService';
import { sendMessageToAllWithSuc, sendMessageToCityWithSuc, sendMessageToGuildWithSuc, sendMessageToServerWithSuc, sendMessageToTeam, sendMessageToUserWithSuc } from './pushService';
import { comBtlLvInvalid } from './comBattleService';
import { gameData } from '../pubUtils/data';
export * from './chatChannelService';
export * from './sysChatService';
@@ -163,6 +165,12 @@ export async function pushGroupMsgToRoom(msg: GroupMessageType) {
}
}
export async function pushGroupMsgToAll(msg: GroupMessageType, filterCb?: ({ lv, topLineupCe }) => boolean) {
if (!msg) return;
const roleInfo = await getSimpleRoleInfo(msg.roleId);
await sendMessageToAllWithSuc(PUSH_ROUTE.GROUP_MSG, { ...msg, roleInfo }, filterCb);
}
/**
* @description 获取私聊历史消息
* @export
@@ -369,16 +377,12 @@ export async function delPrivateMsg(roleId: string, targetRoleId: string) {
* @description 发送组队一键邀请消息
* @param {string} teamCode 队伍唯一标识
*/
export async function pushTeamInviteMsg(roleId: string, roleName: string, serverId: number, guildCode: string, teamCode: string, blueprtId: number) {
export async function pushTeamInviteMsg(roleId: string, roleName: string, serverId: number, teamCode: string, blueprtId: number, blueprtLv: number, ceLimit: number) {
let msgDataWorld = await createGroupMsg(roleId, roleName, CHANNEL_PREFIX.WORLD, `${serverId}`, MSG_TYPE.RICH_TEXT, MSG_SOURCE.TEAM_INVITE, JSON.stringify({ roleName, teamCode, blueprtId }), null, null);
await pushGroupMsgToRoom(msgDataWorld);
let msgDataGuild: GroupMessageType;
if(guildCode) {
msgDataGuild = await createGroupMsg(roleId, roleName, CHANNEL_PREFIX.GUILD, `${guildCode}`, MSG_TYPE.RICH_TEXT, MSG_SOURCE.TEAM_INVITE, JSON.stringify({ roleName, teamCode, blueprtId }), null, null);
await pushGroupMsgToRoom(msgDataGuild);
}
return { msgDataWorld, msgDataGuild };
await pushGroupMsgToAll(msgDataWorld, (data: {lv: number, topLineupCe: number}) => {
return data.topLineupCe >= ceLimit && !comBtlLvInvalid(data.lv, [blueprtLv]);
});
return { msgDataWorld };
}
/**

View File

@@ -335,6 +335,16 @@ export function comBtlLvInvalid(playerLv: number, blueprtLvs: number[]) {
return false
}
export function getComBtlLvByPlayerLv(playerLv: number) {
let lvs: number[] = [];
for(let [lv, {min, max}] of gameData.comBtlLvRange) {
if(playerLv >= min && playerLv <= max) lvs.push(lv);
}
let minLv = Math.min(...lvs);
let maxLv = Math.max(...lvs);
return { minLv, maxLv }
}
export async function dismissTeam(teamStatus: MemComBtlTeam, teamMap: Map<string, MemComBtlTeam>, roleId: string, teamDisTimer: Map<string, NodeJS.Timer>) {
const { teamCode } = teamStatus;
if (!teamStatus || !teamStatus.roleIds || teamStatus.roleIds.indexOf(roleId) === -1) return resResult(STATUS.COM_BATTLE_TEAM_INVALID);

View File

@@ -15,7 +15,7 @@ import { getFriendList, getApplyList } from './friendService';
import { getDailyBattleList } from './dailyBattleService';
import { getExpeditionStatus } from './expeditionService';
import { getTowerStatus, getHungupRewards, getTasks } from './battleService';
import { getAllAssistCnt } from './comBattleService';
import { getAllAssistCnt, getComBtlLvByPlayerLv } from './comBattleService';
import { getDungeonData } from './dungeonService';
import { PvpSeasonResultModel } from '../db/PvpSeasonResult';
import { nowSeconds, getZeroPoint } from '../pubUtils/timeUtil';
@@ -44,6 +44,7 @@ import { HeroParam } from '../domain/roleField/hero';
import { pick } from 'underscore';
import { sendMessageToAllWithSuc, sendMessageToServerWithSuc, sendMessageToUser, sendMessageToUserWithSuc } from './pushService';
import { getSurvey } from './gmService';
import { ComBattleTeamModel } from '../db/ComBattleTeam';
/**
* init: 初始的时候是否推送 true-推 false-不推
@@ -146,9 +147,7 @@ export async function getModuleData(type: string, data: { role: RoleType, sessio
case 'tower': // 镇念塔
return await getTowerEntryData(role);
case 'comBattle': // 寻宝
const assistCnt = await getAllAssistCnt(roleId);
const blueprts = await Item.findByRoleAndType(roleId, CONSUME_TYPE.BLUEPRT);
return { assistCnt, blueprts }
return await getComBattleEntryData(role);
case 'dungeon': // 秘境
return await getDungeonData(role);
case 'pvp': // pvp
@@ -289,6 +288,16 @@ async function getGuildEntryData(role: RoleType, sid: string, session: FrontendO
return { hasGuild: false }
}
async function getComBattleEntryData(role: RoleType) {
let { roleId, lv, topLineupCe } = role;
const assistCnt = await getAllAssistCnt(roleId);
const blueprts = await Item.findByRoleAndType(roleId, CONSUME_TYPE.BLUEPRT);
let { minLv, maxLv } = getComBtlLvByPlayerLv(lv);
let refreshTime = nowSeconds() - 60;
const invitations = await ComBattleTeamModel.findInvitations(roleId, minLv, maxLv, topLineupCe, refreshTime, 1);
return { assistCnt, blueprts, hasInvitation: invitations.length > 0, invitationTime: invitations.length > 0?invitations[0].inviteTime: 0 }
}
export async function pushRefreshTime() {
let todayZeroPoint = getZeroPoint();
await sendMessageToAllWithSuc(PUSH_ROUTE.REFRESH_TIME, { todayZeroPoint });

View File

@@ -2,7 +2,7 @@
import { HeroModel, HeroType } from '../db/Hero';
import Role, { RoleModel, RoleType } from '../db/Role'
import { getLvByExp, getExpByLv, gameData, getDicApByLv } from '../pubUtils/data';
import { updateUserInfo } from './redisService';
import { updateRoleOnlineInfo, updateUserInfo } from './redisService';
// import { switchOnFunc } from './funcSwitchService';
import { FUNC_OPT_TYPE, TASK_TYPE, WAR_TYPE, STATUS, KING_EXP_RATIO_TYPE, ITEM_CHANGE_REASON, POP_UP_SHOP_CONDITION_TYPE, HERO_SYSTEM_TYPE, PUSH_ROUTE } from '../consts';
import { BackendSession, pinus } from 'pinus';
@@ -49,6 +49,8 @@ export async function roleLevelup(type: KING_EXP_RATIO_TYPE, roleId: string, kin
await checkPopUpCondition(serverId, roleId, POP_UP_SHOP_CONDITION_TYPE.LV_TO, { oldLv: lv, newLv })
// await calculateCeWithRole(HERO_SYSTEM_TYPE.ROLE_LV, roleId, serverId, sid, { lv: newLv });
await updateRoleOnlineInfo(roleId, { lv: newLv });
}
let actordata: { lv: number, exp: number, getExp: number, mostExp: number }[] = [];
for (let i = lv; i <= newLv; i++) {

View File

@@ -7,7 +7,7 @@ import { EPlace, HeroModel, HeroType, HeroUpdate } from '../db/Hero';
import { RoleUpdate, RoleType, RoleModel } from '../db/Role';
import { Rank } from './rankService';
import { HERO_SYSTEM_TYPE, PUSH_ROUTE, REDIS_KEY } from '../consts';
import { updateUserInfo } from './redisService';
import { updateRoleOnlineInfo, updateUserInfo } from './redisService';
import { GuildModel, GuildType } from '../db/Guild';
import { CalCe } from './role/calCe';
import { RoleCeModel, RoleCeUpdate } from '../db/RoleCe';
@@ -359,11 +359,12 @@ export async function calculateCes(type: HERO_SYSTEM_TYPE, roleId: string, serve
}
}
let { topLineup, topLineupCe } = calCe.getTopLineup();
let { topLineup, topLineupCe, hasTopCeChange } = calCe.getTopLineup();
let roleCeUpdate: RoleCeUpdate = calCe.getRoleCeTable();
if(topLineupCe > roleCe?.historyLineupCe??0) {
roleCeUpdate = { ...roleCeUpdate, historyLineupCe: topLineupCe };
}
roleCe = await RoleCeModel.updateRoleCe(roleId, roleCeUpdate);
let role = await RoleModel.incRoleInfo(roleId, { ...roleIncUpdate, ce: roleInc }, { ...roleUpdate, topLineup, topLineupCe });
let guild = await GuildModel.updateCe(roleId, roleInc); // 公会更新战力
@@ -371,7 +372,7 @@ export async function calculateCes(type: HERO_SYSTEM_TYPE, roleId: string, serve
saveCeChangeLog(role, roleInc, role.ce, type, changeHids);
updateRank(roleId, serverId, topLineupCe, role, pushHeros, guild);
sendMessageToUserWithSuc(roleId, PUSH_ROUTE.PLAYER_CE_UPDATE, { ce: role.ce, heros: pushHeros, topLineupCe }, sid);
if(hasTopCeChange) await updateRoleOnlineInfo(roleId, { topLineupCe });
if(guild) {
await updateUserInfo(REDIS_KEY.GUILD_INFO, guild.code, [{ field: 'guildCe', value: guild.guildCe }]);
}

View File

@@ -5,12 +5,15 @@ import { getCityChannelSid, getGuildChannelSid, getWorldChannelSid, groupRoomId
import { getAllOnlineRoles, getRoleOnlineInfo } from "./redisService";
import { errlogger, infologger } from '../util/logger';
export async function sendMessageToAllWithSuc(route: string, data: any) {
await sendMessageToAll(route, resResult(STATUS.SUCCESS, data));
export async function sendMessageToAllWithSuc(route: string, data: any, filterCb?: ({ lv, topLineupCe }) => boolean) {
await sendMessageToAll(route, resResult(STATUS.SUCCESS, data), filterCb);
}
export async function sendMessageToAll(route: string, data: any) {
export async function sendMessageToAll(route: string, data: any, filterCb?: ({ lv, topLineupCe }) => boolean) {
let allOnlineUsers = await getAllOnlineRoles();
if(filterCb) {
allOnlineUsers = allOnlineUsers.filter(filterCb);
}
let n = Math.ceil(allOnlineUsers.length / PUSH_BATCH); // 一共多少批
let sendToUser = (i: number) => {
let users = allOnlineUsers.slice(i * PUSH_BATCH, (i + 1) * PUSH_BATCH - 1);

View File

@@ -310,10 +310,17 @@ export async function clearChannelServers() {
* @param userCode user表唯一字符串标识
* @param sid connector服的那个sid
*/
export async function roleLogin(roleId: string, userCode: string, sid: string, pkgName: string, createTime: number, serverId: number) {
export async function roleLogin(roleId: string, userCode: string, sid: string, createTime: number, serverId: number, lv: number, topLineupCe: number) {
await redisClient().hincrbyAsync(REDIS_KEY.ONLINE_CNT, roleId, 1);
await redisClient().hsetAsync(REDIS_KEY.USER_CODE, userCode, roleId);
return await redisClient().hsetAsync(REDIS_KEY.ONLINE_USERS, roleId, `${userCode}|${sid}|${pkgName}|${createTime}|${serverId}`);
return await redisClient().hsetAsync(REDIS_KEY.ONLINE_USERS, roleId, `${userCode}|${sid}|${createTime}|${serverId}|${lv}|${topLineupCe}`);
}
export async function updateRoleOnlineInfo(roleId: string, updateData: {lv?: number, topLineupCe?: number}) {
let info = await getRoleOnlineInfo(roleId);
if(info.isOnline) {
return await redisClient().hsetAsync(REDIS_KEY.ONLINE_USERS, roleId, `${info.userCode}|${info.sid}|${info.createtime}|${info.serverId}|${updateData?.lv??info.lv}|${updateData?.topLineupCe??info.topLineupCe}`);
}
}
/**
@@ -354,11 +361,13 @@ export async function getRoleOnlineInfo(roleId: string) {
if(str) {
try {
let result = str.split('|');
let [userCode, sid, pkgName, createTime, serverId] = result;
let [userCode, sid, createTime, serverId, lv, topLineupCe] = result;
return {
isOnline: true, userCode, sid, pkgName,
isOnline: true, userCode, sid,
createtime: parseInt(createTime),
serverId: parseInt(serverId)
serverId: parseInt(serverId),
lv: parseInt(lv),
topLineupCe: parseInt(topLineupCe)
}
} catch(e) {
return { isOnline: false }
@@ -385,13 +394,13 @@ export async function getRoleCreateTime(roleId: string, role?: RoleType) {
*/
export async function getAllOnlineRoles() {
let allRoles = await redisClient().hgetallAsync(REDIS_KEY.ONLINE_USERS);
let result = new Array<{roleId: string, userCode: string, sid: string, pkgName: string, serverId: number}>();
let result = new Array<{roleId: string, userCode: string, sid: string, serverId: number, lv: number, topLineupCe: number}>();
for(let roleId in allRoles) {
try{
let param = allRoles[roleId].split('|');
let [userCode, sid, pkgName, _createTime, serverId] = param;
let [userCode, sid, _createTime, serverId, lv, topLineupCe] = param;
result.push({ roleId, userCode, sid, pkgName, serverId: parseInt(serverId) });
result.push({ roleId, userCode, sid, serverId: parseInt(serverId), lv: parseInt(lv), topLineupCe: parseInt(topLineupCe) });
} catch(e) {
continue;

View File

@@ -15,6 +15,7 @@ export class CalCe {
resultCes: Map<number, number> = new Map(); // hid => ce
data: CalCeData;
attrsByHid: Map<number, { id: number, val: number, str: string }[]> = new Map();
originTopHeroCe: number;
constructor(roleId: string) {
this.roleId = roleId;
@@ -23,6 +24,7 @@ export class CalCe {
public setRoleCe(roleCe: RoleCeType) {
this.data = new CalCeData(roleCe)
this.originCes = this.calHeroCe();
this.originTopHeroCe = this.getTopLineup().topLineupCe;
}
public clearRoleCe() {
@@ -126,7 +128,7 @@ export class CalCe {
topLineupCe += ce;
}
}
return { topLineup, topLineupCe };
return { topLineup, topLineupCe, hasTopCeChange: topLineupCe == this.originTopHeroCe };
}
// 玩家等级

View File

@@ -147,6 +147,8 @@ export const STATUS = {
COM_BATTLE_CREATE_CE_LIMIT: { code: 20635, simStr: '你的战力不足,不可设置该级别限制' },
COM_BATTLE_TEAM_NOT_DEFAULT: { code: 20636, simStr: '队伍已过期' },
COM_BATTLE_IS_RUNNING: { code: 20637, simStr: '您有队伍正在进行中' },
COM_BATTLE_INVITE_LV_NOT_ENOUGH: { code: 20638, simStr: '对方队伍等级不足,无法邀请' },
COM_BATTLE_INVITE_CE_LIMIT: { code: 20639, simStr: '对方队伍战力不足,无法邀请' },
// 共斗藏宝图合成
COM_BLUEPRT_QUALITY_CANNOT_COMPOSE: { code: 20650, simStr: '该品质藏宝图不可合成' },
COM_BLUEPRT_COUNT_ERROR: { code: 20651, simStr: '材料数量不足' },

View File

@@ -2,6 +2,7 @@ import BaseModel from './BaseModel';
import { index, getModelForClass, prop, DocumentType } from '@typegoose/typegoose';
import { EXTERIOR } from '../pubUtils/dicParam';
import { ItemReward } from '../domain/dbGeneral';
import { nowSeconds } from '../pubUtils/timeUtil';
export class ComRoleStatusHero {
@prop({ required: true })
@@ -187,10 +188,22 @@ export default class ComBattleTeam extends BaseModel {
// 黑名单
blacklist: string[] = [];
// 黑名单
// 结束时间
@prop({ required: true, default: 0 })
endTime: number = 0;
// 是否发出邀请了
@prop({ required: true, default: false })
isInviting: boolean = false;
// 邀请时间
@prop({ required: true, default: 0 })
inviteTime: number = 0;
// 邀请对象
@prop({ required: true, default: [], type: String, _id: false })
inviteTarget: string[] = [];
public static async createTeam(teamData: ComBattleTeamParam, lean = true) {
const team: ComBattleTeamType = await ComBattleTeamModel.findOneAndUpdate({ teamCode: teamData.teamCode }, {$set :{...teamData, roleCnt: teamData.roleIds.length}}, {upsert: true, new: true}).lean(lean);
return team;
@@ -341,6 +354,16 @@ export default class ComBattleTeam extends BaseModel {
const team: ComBattleTeamType = await ComBattleTeamModel.findOne({teamCode}).lean(lean);
return team;
}
public static async invite(teamCode: string, target: string) {
const team: ComBattleTeamType = await ComBattleTeamModel.findOneAndUpdate({teamCode}, { $set: { isInviting: true, inviteTime: nowSeconds()}, $push: { inviteTarget: target }}, {new: true}).lean();
return team;
}
public static async findInvitations(roleId: string, minLv: number, maxLv: number, ce: number, refreshTime: number, limit: number) {
const invitations: ComBattleTeamType[] = await ComBattleTeamModel.find({ status: 0, isInviting: true, lv: { $gte: minLv, $lte: maxLv }, ceLimit: { $lte: ce }, inviteTime: { $gte: refreshTime } }).sort({ inviteTime: -1 }).limit(limit).lean();
return invitations;
}
}
export const ComBattleTeamModel = getModelForClass(ComBattleTeam);

View File

@@ -2,6 +2,7 @@ import { COM_TEAM_STATUS } from '../../consts';
import { getBossHpByBlueprtId, getDicBlueprtById } from '../../pubUtils/data';
import ComBattleTeam from './../../db/ComBattleTeam';
import { cloneDeep } from 'lodash'
import { FriendParams } from '../roleField/friend';
/**
* 拷贝敌军数组并添加当前血量字段
@@ -48,3 +49,18 @@ export class MemComBtlTeam extends ComBattleTeam {
return this.roleStatus.find(cur => cur.roleId == roleId);
}
};
export class ComBattleInvitation {
blueprtId: number;
leader: FriendParams;
roleCnt: number;
status: number;
constructor(comBattle: ComBattleTeam, leader: FriendParams) {
this.blueprtId = comBattle.blueprtId;
this.leader = leader;
this.roleCnt = comBattle.roleCnt;
this.status = comBattle.status;
}
}

View File

@@ -62,4 +62,4 @@ export interface mailData {
export interface guildInter {
myUserGuild: UserGuildType;
hisUserGuild: UserGuildType;
}
}