feat(gvg): 千机阁解锁和激活的推送

This commit is contained in:
liangtongchuan
2023-02-24 18:20:34 +08:00
parent a7d27d2ee2
commit 947792b635
3 changed files with 25 additions and 5 deletions

View File

@@ -1,5 +1,5 @@
import { Application, BackendSession, ChannelService, HandlerService, pinus } from "pinus";
import { GVG_ITEM, DATA_NAME, GVG_ACTIVE_TYPE, GVG_PERIOD, GVG_SERVER_TYPE, ITEM_CHANGE_REASON, LEAGUE_JOB, LEAGUE_MANAGE_TYPE, STATUS, GVG_REC_TYPE, TASK_TYPE, GVG_TECH_TYPE } from "../../../consts";
import { GVG_ITEM, DATA_NAME, GVG_ACTIVE_TYPE, GVG_PERIOD, GVG_SERVER_TYPE, ITEM_CHANGE_REASON, LEAGUE_JOB, LEAGUE_MANAGE_TYPE, STATUS, GVG_REC_TYPE, TASK_TYPE, GVG_TECH_TYPE, PUSH_ROUTE } from "../../../consts";
import { GVGLeagueModel } from "../../../db/GVGLeague";
import { GVGLeaguePrepareModel } from "../../../db/GVGLeaguePrepare";
import { GVGMainData, LeagueContributeInfo, LeagueMemberContributeInfo, LeagueMemberListInfo } from "../../../domain/gvgField/returnData";
@@ -12,7 +12,7 @@ import { GVGUserItemModel } from "../../../db/GVGUserItem";
import { GVGUserTaskModel } from "../../../db/GVGUserTask";
import { GVG } from "../../../pubUtils/dicParam";
import { RoleModel } from "../../../db/Role";
import { addGVGTechActive, calFighterContribute, calProducerContribute, checkPreTech, checkTechIsIng, getDailyLoginReward, getMyContribute } from "../../../services/gvg/gvgPrepareService";
import { addGVGTechActive, calFighterContribute, calProducerContribute, checkPreTech, checkTechIsIng, getDailyLoginReward, getMyContribute, pushTechChange } from "../../../services/gvg/gvgPrepareService";
import { GVGUserDailyDataModel } from "../../../db/GVGUserDailyData";
import { gameData } from "../../../pubUtils/data";
import { lockLeagueData } from "../../../services/redLockService";
@@ -387,12 +387,16 @@ export class GVGHandler {
res.releaseCallback();
addTechUnlockMessage(roleId, roleName, myLeague, techId);
// 推送千机阁解锁消息
let curQueue = leaguePrepare.techQueue.find(cur => cur.id == techId);
await pushTechChange(myLeague.guildCodes, PUSH_ROUTE.LEAGUE_TECH_UNLOCK, techId, curQueue.progress, curQueue.maxProgress);
return resResult(STATUS.SUCCESS, {
queue: leaguePrepare?.techQueue||[]
});
}
// 千机阁解锁
// 千机阁激活
async activate(msg: { techId: number, battleFeats: number }, session: BackendSession) {
const serverId = session.get('serverId');
const roleId = session.get('roleId');
@@ -448,6 +452,9 @@ export class GVGHandler {
let active = await addGVGTechActive(myLeague.leagueCode, roleId);
checkGVGTask(serverId, roleId, sid, configId, myLeague.leagueCode, TASK_TYPE.GVG_TECH, { count: 1 });
// 推送千机阁激活消息
await pushTechChange(myLeague.guildCodes, PUSH_ROUTE.LEAGUE_TECH_ACITVE, techId, curQueue.progress, curQueue.maxProgress);
return resResult(STATUS.SUCCESS, {
active,
activeTech: leaguePrepare?.activeTech||[],

View File

@@ -1,5 +1,5 @@
import { BackendSession } from "pinus";
import { GVG_ACTIVE_TYPE, GVG_ITEM, GVG_RESOURCE_TYPE, GVG_SEED_TYPE, GVG_TECH_TYPE, ITEM_CHANGE_REASON, LEAGUE_JOB } from "../../consts";
import { GVG_ACTIVE_TYPE, GVG_ITEM, GVG_RESOURCE_TYPE, GVG_SEED_TYPE, GVG_TECH_TYPE, ITEM_CHANGE_REASON, LEAGUE_JOB, PUSH_ROUTE } from "../../consts";
import { GVGLeagueFarmModel, GVGLeagueFarmType } from "../../db/GVGLeagueFarm";
import { GVGLeaguePrepareModel, GVGLeaguePrepareType, Tech } from "../../db/GVGLeaguePrepare";
import { GVGUserDailyDataModel, GVGUserDailyDataType } from "../../db/GVGUserDailyData";
@@ -17,6 +17,7 @@ import { getProduceCoinCnt } from "./gvgItemService";
import { GVGVestigeRankModel } from "../../db/GVGVestigeRank";
import { addLeagueLvUpMessage, addResourceRecord } from "./gvgRecService";
import { GVGLeagueType } from "../../db/GVGLeague";
import { sendMessageToGuildWithSuc } from "../pushService";
export function checkPreTech(techId: number, activeQueue: number[], techQueue: Tech[]) {
const dicTech = gameData.gvgTech.get(techId);
@@ -466,4 +467,13 @@ export function checkItemCanUserInFarm(farmId: number, itemId: number) {
let dicGVGItem = gameData.gvgItem.get(itemId);
if(!dicFarm || !dicGVGItem) return false;
return dicFarm.type == dicGVGItem.type;
}
}
// 推送千机阁状态变化
export async function pushTechChange(guildCodes: string[], route: string, id: number, progress: number, maxProgress: number) {
for(let guildCode of guildCodes) {
await sendMessageToGuildWithSuc(guildCode, route, {
id, progress, maxProgress
});
}
}

View File

@@ -191,6 +191,9 @@ export const PUSH_ROUTE = {
LEAGUE_DISSMISS: 'onLeagueDismiss', // 当联军解散
LEAGUE_ABDICATE: 'onLeagueAbdicate', // 当被转让盟主
LEAGUE_ITEM_UPDATE: 'onLeagueItemUpdate',
LEAGUE_TECH_CHANGE : 'onGVGTechChange', // 千机阁科技变更
LEAGUE_TECH_UNLOCK: 'onGVGTechUnlock', // 千机阁科技解锁
LEAGUE_TECH_ACITVE: 'onGVGTechActive', // 千机阁科技激活
GVG_TASK_UPDATE: 'onGVGTaskUpdate', // GVG任务更新
GVG_TEAM_ATTACKED: 'onTeamAttacked', // 当队伍受到攻击
GVG_AREA_SPINE_CHANGE: 'onAreaSpinesChange', // 可见区域内spine的变动每隔5秒会下发