寻宝:修改寻宝中类型的使用
This commit is contained in:
@@ -1,3 +1,4 @@
|
|||||||
|
import { MemComBtlTeam } from './../../../domain/battleField/ComBattleTeamField';
|
||||||
import { difference } from 'underscore';
|
import { difference } from 'underscore';
|
||||||
/*
|
/*
|
||||||
* @Author: 梁桐川
|
* @Author: 梁桐川
|
||||||
@@ -7,79 +8,26 @@ import { difference } from 'underscore';
|
|||||||
*/
|
*/
|
||||||
import { IT_TYPE, CURRENCY_BY_TYPE, CURRENCY_TYPE, COM_TEAM_STATUS, COM_BTL_CONST, CONSUME_TYPE, COM_BTL_QUALITY } from './../../../consts';
|
import { IT_TYPE, CURRENCY_BY_TYPE, CURRENCY_TYPE, COM_TEAM_STATUS, COM_BTL_CONST, CONSUME_TYPE, COM_BTL_QUALITY } from './../../../consts';
|
||||||
import { getGoodById, getBossHpByBlueprtId, getBlueprtComposeByQuality, getBluePrtByQuality, getWarById, getWarIdByBlueprtId, comBtlRangeByLv } from '../../../pubUtils/gamedata';
|
import { getGoodById, getBossHpByBlueprtId, getBlueprtComposeByQuality, getBluePrtByQuality, getWarById, getWarIdByBlueprtId, comBtlRangeByLv } from '../../../pubUtils/gamedata';
|
||||||
import { ComBattleTeamModel, BossHp, ComBattleTeamType } from '../../../db/ComBattleTeam';
|
|
||||||
import Role, { RoleModel } from '../../../db/Role';
|
import Role, { RoleModel } from '../../../db/Role';
|
||||||
import { STATUS } from '../../../consts/statusCode';
|
import { STATUS } from '../../../consts/statusCode';
|
||||||
import { Application, BackendSession } from 'pinus';
|
import { Application, BackendSession } from 'pinus';
|
||||||
import { resResult, getRandomByLen, reduceCe, getRandValueByMinMax } from '../../../pubUtils/util';
|
import { resResult, getRandomByLen, reduceCe, getRandValueByMinMax } from '../../../pubUtils/util';
|
||||||
import { RoleStatus } from '../../../db/ComBattleTeam';
|
import { RoleStatus, ComBattleTeamModel, ComBattleTeamType } from '../../../db/ComBattleTeam';
|
||||||
import { ItemModel } from '../../../db/Item';
|
import { ItemModel } from '../../../db/Item';
|
||||||
import { handleFixedReward, addItems, handleCost } from '../../../services/rewardService';
|
import { handleFixedReward, addItems, handleCost } from '../../../services/rewardService';
|
||||||
import { checkRoleInQueue, getTeamSearchByQuality, rmRoleFromQueue, setTeamSearchReq } from '../../../services/redisService';
|
import { checkRoleInQueue, getTeamSearchByQuality, rmRoleFromQueue, setTeamSearchReq } from '../../../services/redisService';
|
||||||
import { transBossHpArr } from '../../../services/battleService';
|
import { transBossHpArr } from '../../../services/battleService';
|
||||||
import { getRandBlueprtId, getRandComBtlRobots, clearComBtlTimer, getAssistTimesByQuality, getFrd, updateRobotHurtByTime, comBtlLvInvalid, clearRobotHurtTimer, setDismissTimer, dismissTeam, incEquipPrintDrop, randEquipPrintId, handleComBtlProgress, getComBattleFriendAdd, getValidTeammateRoleSt, teammateInBlackList, blueprtIdValid } from '../../../services/comBattleService';
|
import { getRandBlueprtId, getRandComBtlRobots, clearComBtlTimer, getAssistTimesByQuality, getFrd, updateRobotHurtByTime, comBtlLvInvalid, clearRobotHurtTimer, setDismissTimer, dismissTeam, incEquipPrintDrop, randEquipPrintId, handleComBtlProgress, getComBattleFriendAdd, getValidTeammateRoleSt, teammateInBlackList, blueprtIdValid, createComTeamData } from '../../../services/comBattleService';
|
||||||
import { setAp } from '../../../services/actionPointService';
|
import { setAp } from '../../../services/actionPointService';
|
||||||
import { roleLevelup } from '../../../services/normalBattleService';
|
import { roleLevelup } from '../../../services/normalBattleService';
|
||||||
|
|
||||||
export default function(app: Application) {
|
export default function(app: Application) {
|
||||||
return new ComBattleHandler(app);
|
return new ComBattleHandler(app);
|
||||||
}
|
}
|
||||||
|
|
||||||
class ComTeam {
|
|
||||||
// 队伍唯一编号
|
|
||||||
teamCode: string;
|
|
||||||
// 玩家列表
|
|
||||||
roleIds: Array<string>
|
|
||||||
// 队伍是否开放加入
|
|
||||||
pub: boolean;
|
|
||||||
// 对应藏宝图 Id
|
|
||||||
blueprtId: number;
|
|
||||||
// 战斗状态 0:未开始,1:已开始,2:胜利,3:失败
|
|
||||||
status: number;
|
|
||||||
// 玩家状态
|
|
||||||
roleStatus: Array<RoleStatus>;
|
|
||||||
// 队长 roleId
|
|
||||||
capId: string;
|
|
||||||
// 战力限制
|
|
||||||
ceLimit: number;
|
|
||||||
// boss 总血量
|
|
||||||
bossHp: number;
|
|
||||||
// boss 当前血量
|
|
||||||
bossCurHp: number;
|
|
||||||
// 单个 boss 血量状态
|
|
||||||
bossHpArr: Array<BossHp>;
|
|
||||||
// 品质
|
|
||||||
quality: number;
|
|
||||||
// 当前回合
|
|
||||||
curRnd: number;
|
|
||||||
// 队伍中人数
|
|
||||||
roleCnt: number;
|
|
||||||
// 藏宝图等级所处范围,用来匹配
|
|
||||||
lvRange: number;
|
|
||||||
// 队伍是否开放加入
|
|
||||||
timeout: boolean;
|
|
||||||
constructor(teamCode: string, pub: boolean, blueprtId: number, status: number, capId: string, ceLimit: number, bossHp: number, quality: number, bossHpArr:Array<BossHp> ) {
|
|
||||||
this.teamCode = teamCode;
|
|
||||||
this.pub = pub;
|
|
||||||
this.blueprtId = blueprtId;
|
|
||||||
this.status = status;
|
|
||||||
this.capId = capId;
|
|
||||||
this.ceLimit = ceLimit;
|
|
||||||
this.bossHp = bossHp;
|
|
||||||
this.bossCurHp = bossHp;
|
|
||||||
this.quality = quality;
|
|
||||||
this.bossHpArr = bossHpArr;
|
|
||||||
this.curRnd = 0;
|
|
||||||
this.roleCnt = 1;
|
|
||||||
this.timeout = false;
|
|
||||||
let { lvLimited } = getGoodById(blueprtId);
|
|
||||||
this.lvRange = comBtlRangeByLv(lvLimited);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
export class ComBattleHandler {
|
export class ComBattleHandler {
|
||||||
constructor(private app: Application) {
|
constructor(private app: Application) {
|
||||||
}
|
}
|
||||||
private teamMap: Map<string, ComTeam> = new Map();
|
private teamMap: Map<string, MemComBtlTeam> = new Map();
|
||||||
private teamDisTimer: Map<string, NodeJS.Timer> = new Map();
|
private teamDisTimer: Map<string, NodeJS.Timer> = new Map();
|
||||||
private robotHurtTimer: Map<string, NodeJS.Timer> = new Map();
|
private robotHurtTimer: Map<string, NodeJS.Timer> = new Map();
|
||||||
|
|
||||||
@@ -134,7 +82,7 @@ export class ComBattleHandler {
|
|||||||
}
|
}
|
||||||
let { bossHpSum, bossHpArr } = getBossHpByBlueprtId(blueprtId);
|
let { bossHpSum, bossHpArr } = getBossHpByBlueprtId(blueprtId);
|
||||||
// 创建队伍数据结构
|
// 创建队伍数据结构
|
||||||
let comTeam = new ComTeam(teamCode, pub, blueprtId, COM_TEAM_STATUS.DEFAULT, roleId, ceLimit, bossHpSum || 10000, goodData.quality, transBossHpArr(bossHpArr));
|
let comTeam: MemComBtlTeam = createComTeamData(teamCode, pub, blueprtId, COM_TEAM_STATUS.DEFAULT, roleId, ceLimit, bossHpSum || 10000, goodData.quality, transBossHpArr(bossHpArr));
|
||||||
comTeam.roleStatus = roleStatus;
|
comTeam.roleStatus = roleStatus;
|
||||||
comTeam.roleIds = roleIds;
|
comTeam.roleIds = roleIds;
|
||||||
|
|
||||||
@@ -242,7 +190,7 @@ export class ComBattleHandler {
|
|||||||
let blueprtId = getRandBlueprtId(qualityArr).pop();
|
let blueprtId = getRandBlueprtId(qualityArr).pop();
|
||||||
let { quality } = getGoodById(blueprtId);
|
let { quality } = getGoodById(blueprtId);
|
||||||
let { bossHpSum, bossHpArr } = getBossHpByBlueprtId(blueprtId);
|
let { bossHpSum, bossHpArr } = getBossHpByBlueprtId(blueprtId);
|
||||||
let comTeam = new ComTeam(teamCode, false, blueprtId, COM_TEAM_STATUS.DEFAULT, 'robot', 0, bossHpSum || 10000, quality, transBossHpArr(bossHpArr));
|
let comTeam: MemComBtlTeam = createComTeamData(teamCode, false, blueprtId, COM_TEAM_STATUS.DEFAULT, 'robot', 0, bossHpSum || 10000, quality, transBossHpArr(bossHpArr))
|
||||||
|
|
||||||
let isFrd = await getFrd(roleId, quality);
|
let isFrd = await getFrd(roleId, quality);
|
||||||
// 将玩家加入队伍
|
// 将玩家加入队伍
|
||||||
|
|||||||
@@ -6,8 +6,8 @@ import { EquipPrintDropType, EquipPrintDropModel } from './../db/EquipPrintDrop'
|
|||||||
import { FriendPointModel } from './../db/FriendPoint';
|
import { FriendPointModel } from './../db/FriendPoint';
|
||||||
import { STATUS } from './../consts/statusCode';
|
import { STATUS } from './../consts/statusCode';
|
||||||
import { COM_TEAM_STATUS, CURRENCY_BY_TYPE, CURRENCY_TYPE, FRIEND_DROP_TYPE, COM_BTL_CONST, FRIEND_DROP_MAX } from './../consts';
|
import { COM_TEAM_STATUS, CURRENCY_BY_TYPE, CURRENCY_TYPE, FRIEND_DROP_TYPE, COM_BTL_CONST, FRIEND_DROP_MAX } from './../consts';
|
||||||
import { RoleStatus, ComBattleTeamModel } from './../db/ComBattleTeam';
|
import { RoleStatus, ComBattleTeamModel, BossHp } from './../db/ComBattleTeam';
|
||||||
import { getBluePrtByQuality, getComBtlSetByQuality, getRewardByBlueprtId, getWarById, getWarIdByBlueprtId, comBtlRangeInfo, getGoodById } from "../pubUtils/gamedata";
|
import { getBluePrtByQuality, getComBtlSetByQuality, getRewardByBlueprtId, getWarById, getWarIdByBlueprtId, comBtlRangeInfo, getGoodById, comBtlRangeByLv } from "../pubUtils/gamedata";
|
||||||
import { getRandEelm, getRandValue, resResult, ratioReward, getRandValueByMinMax, getRandomWithWeight, decodeStr, getRobotInfo, reduceCe } from "../pubUtils/util";
|
import { getRandEelm, getRandValue, resResult, ratioReward, getRandValueByMinMax, getRandomWithWeight, decodeStr, getRobotInfo, reduceCe } from "../pubUtils/util";
|
||||||
import { getRandRobot } from "./battleService";
|
import { getRandRobot } from "./battleService";
|
||||||
import { difference, omit } from 'underscore';
|
import { difference, omit } from 'underscore';
|
||||||
@@ -17,6 +17,7 @@ import { decreaseItems } from './rewardService';
|
|||||||
import { getFriendLvAdd } from './friendService';
|
import { getFriendLvAdd } from './friendService';
|
||||||
import { getRoleIds } from '../pubUtils/friendUtil';
|
import { getRoleIds } from '../pubUtils/friendUtil';
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 在给定的品质列表中随机返回一定数量的藏宝图Id
|
* 在给定的品质列表中随机返回一定数量的藏宝图Id
|
||||||
* @param qualityArr 品质数组,在所有给定品质的藏宝图中筛选1
|
* @param qualityArr 品质数组,在所有给定品质的藏宝图中筛选1
|
||||||
@@ -513,4 +514,30 @@ export async function teammateInBlackList(roleId: string, roleIds: Array<string>
|
|||||||
export function blueprtIdValid(id: number) {
|
export function blueprtIdValid(id: number) {
|
||||||
const goodData = getGoodById(id);
|
const goodData = getGoodById(id);
|
||||||
return goodData && goodData.itid === IT_TYPE.BLUEPRT && COM_BTL_QUALITY.indexOf(goodData.quality) !== -1;
|
return goodData && goodData.itid === IT_TYPE.BLUEPRT && COM_BTL_QUALITY.indexOf(goodData.quality) !== -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @description 创建 ComBattleTeam 的数据结构
|
||||||
|
* @export
|
||||||
|
* @param {string} teamCode
|
||||||
|
* @param {boolean} pub
|
||||||
|
* @param {number} blueprtId
|
||||||
|
* @param {number} status
|
||||||
|
* @param {string} capId
|
||||||
|
* @param {number} ceLimit
|
||||||
|
* @param {number} bossHp
|
||||||
|
* @param {number} quality
|
||||||
|
* @param {Array<BossHp>} bossHpArr
|
||||||
|
* @returns
|
||||||
|
*/
|
||||||
|
export function createComTeamData(teamCode: string, pub: boolean, blueprtId: number, status: number, capId: string, ceLimit: number, bossHp: number, quality: number, bossHpArr:Array<BossHp>) {
|
||||||
|
const { lvLimited } = getGoodById(blueprtId);
|
||||||
|
const lvRange = comBtlRangeByLv(lvLimited);
|
||||||
|
const curRnd = 0;
|
||||||
|
const roleCnt = 1;
|
||||||
|
const timeout = false;
|
||||||
|
const bossCurHp = bossHp;
|
||||||
|
return {
|
||||||
|
teamCode, pub, blueprtId, status, capId, ceLimit, bossHp, bossCurHp, quality, bossHpArr, curRnd, roleCnt, timeout, lvRange
|
||||||
|
};
|
||||||
}
|
}
|
||||||
@@ -144,7 +144,7 @@ export default class ComBattleTeam extends BaseModel {
|
|||||||
@prop({ required: true, default: false })
|
@prop({ required: true, default: false })
|
||||||
timeout: boolean;
|
timeout: boolean;
|
||||||
|
|
||||||
public static async createTeam(teamData: {teamCode: string, roleIds: Array<string>, pub: boolean, blueprtId: number, quality: number, status: number, roleStatus: Array<RoleStatus>, capId: string, ceLimit: number}, lean = true) {
|
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);
|
const team: ComBattleTeamType = await ComBattleTeamModel.findOneAndUpdate({ teamCode: teamData.teamCode }, {$set :{...teamData, roleCnt: teamData.roleIds.length}}, {upsert: true, new: true}).lean(lean);
|
||||||
return team;
|
return team;
|
||||||
}
|
}
|
||||||
@@ -291,4 +291,5 @@ export default class ComBattleTeam extends BaseModel {
|
|||||||
|
|
||||||
export const ComBattleTeamModel = getModelForClass(ComBattleTeam);
|
export const ComBattleTeamModel = getModelForClass(ComBattleTeam);
|
||||||
|
|
||||||
export interface ComBattleTeamType extends Pick<DocumentType<ComBattleTeam>, keyof ComBattleTeam>{};
|
export interface ComBattleTeamType extends Pick<DocumentType<ComBattleTeam>, keyof ComBattleTeam>{};
|
||||||
|
export type ComBattleTeamParam = Partial<ComBattleTeamType>;
|
||||||
2
shared/domain/battleField/ComBattleTeamField.ts
Normal file
2
shared/domain/battleField/ComBattleTeamField.ts
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
import { ComBattleTeamParam } from './../../db/ComBattleTeam';
|
||||||
|
export type MemComBtlTeam = ComBattleTeamParam & { bossCurHp: number; curRnd: number };
|
||||||
Reference in New Issue
Block a user