feat(好友切磋): a7befab5f到f5146b93d

This commit is contained in:
luying
2023-09-11 18:42:57 +08:00
parent ab4ac34184
commit 92a10011ed
8 changed files with 108 additions and 3 deletions

View File

@@ -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 })
}
}

View File

@@ -642,6 +642,7 @@ export class NormalBattleHandler {
case WAR_TYPE.GVG_VESTIGE:
case WAR_TYPE.GVG_BATTLE:
case WAR_TYPE.ROUGE:
case WAR_TYPE.FRIEND_BATTLE:
canSkip = true;
break;
}

View File

@@ -31,6 +31,7 @@ import { getSchoolPoint } from "../../../services/roleService";
import { LadderMatchModel } from "../../../db/LadderMatch";
import { ArtifactModel } from "../../../db/Artifact";
import { AuthorBookModel } from "../../../db/AuthorBook";
import { getIsExistLadderDefense } from "../../../services/ladderService";
export default function (app: Application) {
@@ -678,7 +679,7 @@ export class FriendHandler {
let { serverId } = role;
let serverName = await getServerName(serverId);
param.setServerName(serverId, serverName);
return resResult(STATUS.SUCCESS, {...param, isRobot });
return resResult(STATUS.SUCCESS, {...param, isRobot, isExistLadderDefense: await getIsExistLadderDefense(targetRoleId) });
}
}

View File

@@ -1027,6 +1027,11 @@ export function checkRouteParam(route: string, msg: any) {
if (!checkNaturalNumbers(msg.index)) return false;
break;
}
case "battle.friendBattleHandler.getFriendOpp":
{
if (!checkNaturalStrings(msg.roleId)) return false;
break;
}
case "chat.chatHandler.sendGroupMessage":
{
let { channel, type, content, targetRoleId, targetMsgCode } = msg;

View File

@@ -443,8 +443,12 @@ export async function getLadderOppDetailData(rec: LadderMatchRecType) {
}
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;
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;
}

View File

@@ -37,6 +37,7 @@ export const WAR_TYPE = {
GVG_VESTIGE: 22, // GVG征战中原
GVG_BATTLE: 23, // GVG激战期战斗
ROUGE: 24, // 肉鸽
FRIEND_BATTLE: 26, // 好有切磋
};
// 藏宝图掉落参数

View File

@@ -34,6 +34,8 @@ export const ITID_STONE_LIMIT = 6; //玉石一键合成等级限制
export const ROUGE_SLOT_LIMIT = 5;//rouge卡槽数量
export const FRIEND_BATTLE_DISPATCH_JSONID = 70001; //好友比武
export enum TIME_OUTPUT_TYPE {
DATE = 1,
STAMP_10 = 2,
@@ -684,6 +686,7 @@ export const FILENAME = {
DIC_ROUGE_EVENT_OPTION: "dic_rougeEventOption",
DIC_ROUGE_OPTION_GROUP: "dic_rougeOptionGroup",
DIC_GK_ROUGE: "dic_zyz_gk_rouge",
DIC_GK_FRIEND_BATTLE: "dic_zyz_gk_friendBattle",
DIC_ROUGE_SCORE_REWARD: "dic_rougeScoreReward",
DIC_ROUGE_EFFECT: "dic_rougeEffect",
DIC_ROUGE_EFFECT_TYPE: "dic_rougeEffectType",
@@ -716,6 +719,8 @@ export const WAR_RELATE_TABLES = [
FILENAME.DIC_GK_GVG_VESTIGE,
FILENAME.DIC_GK_GVGBATTLE,
FILENAME.DIC_GK_ROUGE,
FILENAME.DIC_GK_FRIEND_BATTLE,
]
// 装备栏强化类型

View File

@@ -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"
}
]