✨ 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_BATTLE:
|
||||
case WAR_TYPE.ROUGE:
|
||||
case WAR_TYPE.FRIEND_BATTLE:
|
||||
canSkip = true;
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -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) });
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
@@ -37,6 +37,7 @@ export const WAR_TYPE = {
|
||||
GVG_VESTIGE: 22, // GVG征战中原
|
||||
GVG_BATTLE: 23, // GVG激战期战斗
|
||||
ROUGE: 24, // 肉鸽
|
||||
FRIEND_BATTLE: 26, // 好有切磋
|
||||
};
|
||||
|
||||
// 藏宝图掉落参数
|
||||
|
||||
@@ -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,
|
||||
|
||||
]
|
||||
|
||||
// 装备栏强化类型
|
||||
|
||||
29
shared/resource/jsons/dic_zyz_gk_friendBattle.json
Normal file
29
shared/resource/jsons/dic_zyz_gk_friendBattle.json
Normal 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"
|
||||
}
|
||||
]
|
||||
Reference in New Issue
Block a user