✨ feat(好友切磋): a7befab5f到f5146b93d
This commit is contained in:
@@ -0,0 +1,59 @@
|
|||||||
|
import { Application, BackendSession, pinus, HandlerService, } from 'pinus';
|
||||||
|
import { LadderMatchModel } from '../../../db/LadderMatch';
|
||||||
|
import { HeroModel, HeroType } from '../../../db/Hero';
|
||||||
|
import { ArtifactModel } from '../../../db/Artifact';
|
||||||
|
import { getHeroesAttributes } from '../../../services/playerCeService';
|
||||||
|
import { gameData } from '../../../pubUtils/data';
|
||||||
|
import { LadderOppDetailHeroReturn } from '../../../domain/battleField/ladder';
|
||||||
|
import { resResult } from '../../../pubUtils/util';
|
||||||
|
import { STATUS } from '../../../consts/statusCode';
|
||||||
|
import { RoleType } from '../../../db/Role';
|
||||||
|
import { FRIEND_BATTLE_DISPATCH_JSONID } from '../../../consts';
|
||||||
|
|
||||||
|
export default function (app: Application) {
|
||||||
|
new HandlerService(app, {});
|
||||||
|
return new FriendBattleHandler(app);
|
||||||
|
}
|
||||||
|
|
||||||
|
export class FriendBattleHandler {
|
||||||
|
constructor(private app: Application) {
|
||||||
|
}
|
||||||
|
|
||||||
|
async getFriendOpp(msg: { roleId: string }, session: BackendSession) {
|
||||||
|
const { roleId: targetRoleId, } = msg;
|
||||||
|
|
||||||
|
let hisLadderData = await LadderMatchModel.findByRoleIdAndInclude(targetRoleId);
|
||||||
|
if (!hisLadderData || !hisLadderData.defense || !hisLadderData.defense.heroes) return resResult(STATUS.LADDER_NOT_OPEN);
|
||||||
|
|
||||||
|
let artifactSeids = [], subHids: number[] = [];
|
||||||
|
for (let { hero, subHid } of hisLadderData.defense.heroes) {
|
||||||
|
let dbHero = <HeroType>hero;
|
||||||
|
if (dbHero) artifactSeids.push(dbHero.artifact);
|
||||||
|
if (subHid) subHids.push(subHid);
|
||||||
|
}
|
||||||
|
|
||||||
|
let artifacts = await ArtifactModel.findbySeqIds(targetRoleId, artifactSeids);
|
||||||
|
let subHeroes = await HeroModel.findByHidRange(subHids, targetRoleId, 'hid skinId');
|
||||||
|
let attrByHid = await getHeroesAttributes(targetRoleId);
|
||||||
|
let dicWarJson = gameData.warJson.get(FRIEND_BATTLE_DISPATCH_JSONID);
|
||||||
|
let result: LadderOppDetailHeroReturn[] = [];
|
||||||
|
for (let obj of hisLadderData.defense.heroes) {
|
||||||
|
const { dataId, subHid, actorId } = obj;
|
||||||
|
let warJson = dicWarJson.find(cur => cur.dataId == dataId);
|
||||||
|
if (warJson) {
|
||||||
|
let subHero = subHeroes.find(sub => sub.hid == subHid);
|
||||||
|
let rec = new LadderOppDetailHeroReturn(warJson, obj, artifacts, subHero);
|
||||||
|
let attr = attrByHid.get(actorId);
|
||||||
|
if (attr) {
|
||||||
|
rec.setAttribute(attr.getAttributesToString());
|
||||||
|
}
|
||||||
|
result.push(rec);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
const role = <RoleType>hisLadderData.role;
|
||||||
|
const title = role?.title || 1;
|
||||||
|
const combo = hisLadderData.defense.combo || [];
|
||||||
|
|
||||||
|
return resResult(STATUS.SUCCESS, { title, combo, heroes: result })
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -642,6 +642,7 @@ export class NormalBattleHandler {
|
|||||||
case WAR_TYPE.GVG_VESTIGE:
|
case WAR_TYPE.GVG_VESTIGE:
|
||||||
case WAR_TYPE.GVG_BATTLE:
|
case WAR_TYPE.GVG_BATTLE:
|
||||||
case WAR_TYPE.ROUGE:
|
case WAR_TYPE.ROUGE:
|
||||||
|
case WAR_TYPE.FRIEND_BATTLE:
|
||||||
canSkip = true;
|
canSkip = true;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -31,6 +31,7 @@ import { getSchoolPoint } from "../../../services/roleService";
|
|||||||
import { LadderMatchModel } from "../../../db/LadderMatch";
|
import { LadderMatchModel } from "../../../db/LadderMatch";
|
||||||
import { ArtifactModel } from "../../../db/Artifact";
|
import { ArtifactModel } from "../../../db/Artifact";
|
||||||
import { AuthorBookModel } from "../../../db/AuthorBook";
|
import { AuthorBookModel } from "../../../db/AuthorBook";
|
||||||
|
import { getIsExistLadderDefense } from "../../../services/ladderService";
|
||||||
|
|
||||||
|
|
||||||
export default function (app: Application) {
|
export default function (app: Application) {
|
||||||
@@ -678,7 +679,7 @@ export class FriendHandler {
|
|||||||
let { serverId } = role;
|
let { serverId } = role;
|
||||||
let serverName = await getServerName(serverId);
|
let serverName = await getServerName(serverId);
|
||||||
param.setServerName(serverId, serverName);
|
param.setServerName(serverId, serverName);
|
||||||
return resResult(STATUS.SUCCESS, {...param, isRobot });
|
return resResult(STATUS.SUCCESS, {...param, isRobot, isExistLadderDefense: await getIsExistLadderDefense(targetRoleId) });
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1027,6 +1027,11 @@ export function checkRouteParam(route: string, msg: any) {
|
|||||||
if (!checkNaturalNumbers(msg.index)) return false;
|
if (!checkNaturalNumbers(msg.index)) return false;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
case "battle.friendBattleHandler.getFriendOpp":
|
||||||
|
{
|
||||||
|
if (!checkNaturalStrings(msg.roleId)) return false;
|
||||||
|
break;
|
||||||
|
}
|
||||||
case "chat.chatHandler.sendGroupMessage":
|
case "chat.chatHandler.sendGroupMessage":
|
||||||
{
|
{
|
||||||
let { channel, type, content, targetRoleId, targetMsgCode } = msg;
|
let { channel, type, content, targetRoleId, targetMsgCode } = msg;
|
||||||
|
|||||||
@@ -443,8 +443,12 @@ export async function getLadderOppDetailData(rec: LadderMatchRecType) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
export async function pushLadderIconShow(roleId: string, ladderIconShow:boolean) {
|
export async function pushLadderIconShow(roleId: string, ladderIconShow:boolean) {
|
||||||
console.log('-x-11111x--x-x-x-x-x-xx- roleId', roleId)
|
|
||||||
console.log('-x-x--x11111-x-x-x-x-xx- ladderIconShow', ladderIconShow)
|
|
||||||
if (!roleId) return;
|
if (!roleId) return;
|
||||||
await pushIconShow(roleId, ladderIconShow);
|
await pushIconShow(roleId, ladderIconShow);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export async function getIsExistLadderDefense(roleId: string) {
|
||||||
|
let ladderData = await LadderMatchModel.findByRoleId(roleId);
|
||||||
|
if (!ladderData || !ladderData.defense || !ladderData.defense.heroes) return false;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
@@ -37,6 +37,7 @@ export const WAR_TYPE = {
|
|||||||
GVG_VESTIGE: 22, // GVG征战中原
|
GVG_VESTIGE: 22, // GVG征战中原
|
||||||
GVG_BATTLE: 23, // GVG激战期战斗
|
GVG_BATTLE: 23, // GVG激战期战斗
|
||||||
ROUGE: 24, // 肉鸽
|
ROUGE: 24, // 肉鸽
|
||||||
|
FRIEND_BATTLE: 26, // 好有切磋
|
||||||
};
|
};
|
||||||
|
|
||||||
// 藏宝图掉落参数
|
// 藏宝图掉落参数
|
||||||
|
|||||||
@@ -34,6 +34,8 @@ export const ITID_STONE_LIMIT = 6; //玉石一键合成等级限制
|
|||||||
|
|
||||||
export const ROUGE_SLOT_LIMIT = 5;//rouge卡槽数量
|
export const ROUGE_SLOT_LIMIT = 5;//rouge卡槽数量
|
||||||
|
|
||||||
|
export const FRIEND_BATTLE_DISPATCH_JSONID = 70001; //好友比武
|
||||||
|
|
||||||
export enum TIME_OUTPUT_TYPE {
|
export enum TIME_OUTPUT_TYPE {
|
||||||
DATE = 1,
|
DATE = 1,
|
||||||
STAMP_10 = 2,
|
STAMP_10 = 2,
|
||||||
@@ -684,6 +686,7 @@ export const FILENAME = {
|
|||||||
DIC_ROUGE_EVENT_OPTION: "dic_rougeEventOption",
|
DIC_ROUGE_EVENT_OPTION: "dic_rougeEventOption",
|
||||||
DIC_ROUGE_OPTION_GROUP: "dic_rougeOptionGroup",
|
DIC_ROUGE_OPTION_GROUP: "dic_rougeOptionGroup",
|
||||||
DIC_GK_ROUGE: "dic_zyz_gk_rouge",
|
DIC_GK_ROUGE: "dic_zyz_gk_rouge",
|
||||||
|
DIC_GK_FRIEND_BATTLE: "dic_zyz_gk_friendBattle",
|
||||||
DIC_ROUGE_SCORE_REWARD: "dic_rougeScoreReward",
|
DIC_ROUGE_SCORE_REWARD: "dic_rougeScoreReward",
|
||||||
DIC_ROUGE_EFFECT: "dic_rougeEffect",
|
DIC_ROUGE_EFFECT: "dic_rougeEffect",
|
||||||
DIC_ROUGE_EFFECT_TYPE: "dic_rougeEffectType",
|
DIC_ROUGE_EFFECT_TYPE: "dic_rougeEffectType",
|
||||||
@@ -716,6 +719,8 @@ export const WAR_RELATE_TABLES = [
|
|||||||
FILENAME.DIC_GK_GVG_VESTIGE,
|
FILENAME.DIC_GK_GVG_VESTIGE,
|
||||||
FILENAME.DIC_GK_GVGBATTLE,
|
FILENAME.DIC_GK_GVGBATTLE,
|
||||||
FILENAME.DIC_GK_ROUGE,
|
FILENAME.DIC_GK_ROUGE,
|
||||||
|
FILENAME.DIC_GK_FRIEND_BATTLE,
|
||||||
|
|
||||||
]
|
]
|
||||||
|
|
||||||
// 装备栏强化类型
|
// 装备栏强化类型
|
||||||
|
|||||||
@@ -0,0 +1,29 @@
|
|||||||
|
[
|
||||||
|
{
|
||||||
|
"war_id": 1,
|
||||||
|
"dispatchJsonId": 70001,
|
||||||
|
"bg_img": 9968,
|
||||||
|
"mapid": 9968,
|
||||||
|
"warType": 26,
|
||||||
|
"gk_name": "好友切磋",
|
||||||
|
"value": 3000000,
|
||||||
|
"secondAttrLevel": 2,
|
||||||
|
"level": 0,
|
||||||
|
"lvLimted": 1,
|
||||||
|
"quality": 0,
|
||||||
|
"star": 0,
|
||||||
|
"job": 0,
|
||||||
|
"turnLimted": 20,
|
||||||
|
"forcedCharactor": "&",
|
||||||
|
"fobiddenCharactor": "&",
|
||||||
|
"heroInUI": "1&307",
|
||||||
|
"victoryInfoInUI": "消灭所有敌军&20回合内造成伤害更高",
|
||||||
|
"loseInfoInUI": "我方全部阵亡&20回合内造成伤害不敌敌军",
|
||||||
|
"starInfoInUI": "无",
|
||||||
|
"cost": 0,
|
||||||
|
"recommendedPower": 0,
|
||||||
|
"previousGk": 0,
|
||||||
|
"needPrepare": 1,
|
||||||
|
"HeroNum": "1&6"
|
||||||
|
}
|
||||||
|
]
|
||||||
Reference in New Issue
Block a user