✨ feat(gvg): 千机阁解锁和激活的推送
This commit is contained in:
@@ -1,5 +1,5 @@
|
|||||||
import { Application, BackendSession, ChannelService, HandlerService, pinus } from "pinus";
|
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 { GVGLeagueModel } from "../../../db/GVGLeague";
|
||||||
import { GVGLeaguePrepareModel } from "../../../db/GVGLeaguePrepare";
|
import { GVGLeaguePrepareModel } from "../../../db/GVGLeaguePrepare";
|
||||||
import { GVGMainData, LeagueContributeInfo, LeagueMemberContributeInfo, LeagueMemberListInfo } from "../../../domain/gvgField/returnData";
|
import { GVGMainData, LeagueContributeInfo, LeagueMemberContributeInfo, LeagueMemberListInfo } from "../../../domain/gvgField/returnData";
|
||||||
@@ -12,7 +12,7 @@ import { GVGUserItemModel } from "../../../db/GVGUserItem";
|
|||||||
import { GVGUserTaskModel } from "../../../db/GVGUserTask";
|
import { GVGUserTaskModel } from "../../../db/GVGUserTask";
|
||||||
import { GVG } from "../../../pubUtils/dicParam";
|
import { GVG } from "../../../pubUtils/dicParam";
|
||||||
import { RoleModel } from "../../../db/Role";
|
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 { GVGUserDailyDataModel } from "../../../db/GVGUserDailyData";
|
||||||
import { gameData } from "../../../pubUtils/data";
|
import { gameData } from "../../../pubUtils/data";
|
||||||
import { lockLeagueData } from "../../../services/redLockService";
|
import { lockLeagueData } from "../../../services/redLockService";
|
||||||
@@ -387,12 +387,16 @@ export class GVGHandler {
|
|||||||
res.releaseCallback();
|
res.releaseCallback();
|
||||||
addTechUnlockMessage(roleId, roleName, myLeague, techId);
|
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, {
|
return resResult(STATUS.SUCCESS, {
|
||||||
queue: leaguePrepare?.techQueue||[]
|
queue: leaguePrepare?.techQueue||[]
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
// 千机阁解锁
|
// 千机阁激活
|
||||||
async activate(msg: { techId: number, battleFeats: number }, session: BackendSession) {
|
async activate(msg: { techId: number, battleFeats: number }, session: BackendSession) {
|
||||||
const serverId = session.get('serverId');
|
const serverId = session.get('serverId');
|
||||||
const roleId = session.get('roleId');
|
const roleId = session.get('roleId');
|
||||||
@@ -448,6 +452,9 @@ export class GVGHandler {
|
|||||||
let active = await addGVGTechActive(myLeague.leagueCode, roleId);
|
let active = await addGVGTechActive(myLeague.leagueCode, roleId);
|
||||||
checkGVGTask(serverId, roleId, sid, configId, myLeague.leagueCode, TASK_TYPE.GVG_TECH, { count: 1 });
|
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, {
|
return resResult(STATUS.SUCCESS, {
|
||||||
active,
|
active,
|
||||||
activeTech: leaguePrepare?.activeTech||[],
|
activeTech: leaguePrepare?.activeTech||[],
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
import { BackendSession } from "pinus";
|
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 { GVGLeagueFarmModel, GVGLeagueFarmType } from "../../db/GVGLeagueFarm";
|
||||||
import { GVGLeaguePrepareModel, GVGLeaguePrepareType, Tech } from "../../db/GVGLeaguePrepare";
|
import { GVGLeaguePrepareModel, GVGLeaguePrepareType, Tech } from "../../db/GVGLeaguePrepare";
|
||||||
import { GVGUserDailyDataModel, GVGUserDailyDataType } from "../../db/GVGUserDailyData";
|
import { GVGUserDailyDataModel, GVGUserDailyDataType } from "../../db/GVGUserDailyData";
|
||||||
@@ -17,6 +17,7 @@ import { getProduceCoinCnt } from "./gvgItemService";
|
|||||||
import { GVGVestigeRankModel } from "../../db/GVGVestigeRank";
|
import { GVGVestigeRankModel } from "../../db/GVGVestigeRank";
|
||||||
import { addLeagueLvUpMessage, addResourceRecord } from "./gvgRecService";
|
import { addLeagueLvUpMessage, addResourceRecord } from "./gvgRecService";
|
||||||
import { GVGLeagueType } from "../../db/GVGLeague";
|
import { GVGLeagueType } from "../../db/GVGLeague";
|
||||||
|
import { sendMessageToGuildWithSuc } from "../pushService";
|
||||||
|
|
||||||
export function checkPreTech(techId: number, activeQueue: number[], techQueue: Tech[]) {
|
export function checkPreTech(techId: number, activeQueue: number[], techQueue: Tech[]) {
|
||||||
const dicTech = gameData.gvgTech.get(techId);
|
const dicTech = gameData.gvgTech.get(techId);
|
||||||
@@ -467,3 +468,12 @@ export function checkItemCanUserInFarm(farmId: number, itemId: number) {
|
|||||||
if(!dicFarm || !dicGVGItem) return false;
|
if(!dicFarm || !dicGVGItem) return false;
|
||||||
return dicFarm.type == dicGVGItem.type;
|
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
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
@@ -191,6 +191,9 @@ export const PUSH_ROUTE = {
|
|||||||
LEAGUE_DISSMISS: 'onLeagueDismiss', // 当联军解散
|
LEAGUE_DISSMISS: 'onLeagueDismiss', // 当联军解散
|
||||||
LEAGUE_ABDICATE: 'onLeagueAbdicate', // 当被转让盟主
|
LEAGUE_ABDICATE: 'onLeagueAbdicate', // 当被转让盟主
|
||||||
LEAGUE_ITEM_UPDATE: 'onLeagueItemUpdate',
|
LEAGUE_ITEM_UPDATE: 'onLeagueItemUpdate',
|
||||||
|
LEAGUE_TECH_CHANGE : 'onGVGTechChange', // 千机阁科技变更
|
||||||
|
LEAGUE_TECH_UNLOCK: 'onGVGTechUnlock', // 千机阁科技解锁
|
||||||
|
LEAGUE_TECH_ACITVE: 'onGVGTechActive', // 千机阁科技激活
|
||||||
GVG_TASK_UPDATE: 'onGVGTaskUpdate', // GVG任务更新
|
GVG_TASK_UPDATE: 'onGVGTaskUpdate', // GVG任务更新
|
||||||
GVG_TEAM_ATTACKED: 'onTeamAttacked', // 当队伍受到攻击
|
GVG_TEAM_ATTACKED: 'onTeamAttacked', // 当队伍受到攻击
|
||||||
GVG_AREA_SPINE_CHANGE: 'onAreaSpinesChange', // 可见区域内spine的变动,每隔5秒会下发
|
GVG_AREA_SPINE_CHANGE: 'onAreaSpinesChange', // 可见区域内spine的变动,每隔5秒会下发
|
||||||
|
|||||||
Reference in New Issue
Block a user