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;
}