Files
ZYZ/game-server/app/services/log/memoryLogService.ts
2023-05-05 15:42:33 +08:00

117 lines
4.5 KiB
TypeScript

import { pinus } from "pinus";
import { GUILD_ACTIVITY_TYPE, MEMORY_LOG_TYPE } from "../../consts";
import { ActivityInRemote } from "../../domain/activityField/activityField";
import { MemComBtlTeam } from "../../domain/battleField/ComBattleTeamField";
import { saveMemoryLog, saveMemoryLogs } from "../../pubUtils/logUtil";
import { getGAIndexInPinus } from "../guildActivity/guildActivityService";
// 将内存打印下来
export async function saveMemory(type: MEMORY_LOG_TYPE) {
switch (type) {
case MEMORY_LOG_TYPE.ACTIVITY:
await _saveActivityMemory();
break;
case MEMORY_LOG_TYPE.PVP_SEASON:
await _savePvpSeasonMemory();
break;
case MEMORY_LOG_TYPE.GA_INDEX:
await _saveGuildActivityIndexMemory();
break;
case MEMORY_LOG_TYPE.COMBATTLE:
await _saveComBattleMemory();
break;
}
}
async function _saveActivityMemory() {
await pinus.app.rpc.activity.activityRemote.saveActivityMemory.broadcast();
}
// activity服
export async function saveActivityMemory() {
await saveMemoryLogs(pinus.app.getServerId(), [
{ memoryLogField: 'activities', memoryData: treatActivities(pinus.app.get('activities')) },
{ memoryLogField: 'activityByServer', memoryData: treatActivityByServer(pinus.app.get('activityByServer')) },
{ memoryLogField: 'activityByType', memoryData: treatActivityType(pinus.app.get('activityByType')) },
{ memoryLogField: 'groupToServer', memoryData: treatGroupToServer(pinus.app.get('groupToServer')) },
]);
}
function treatActivities(activities: Map<number, ActivityInRemote> = new Map()) {
let result: ActivityInRemote[] = [];
for(let [_, activity] of activities) {
result.push(activity);
}
return JSON.stringify(result);
}
function treatActivityByServer(activityByServer: Map<number, number[]> = new Map()) {
let result: { serverId: number, activityIds: number[] }[] = [];
for(let [ serverId, activityIds ] of activityByServer) {
result.push({ serverId, activityIds });
}
return JSON.stringify(result);
}
function treatActivityType(activityByType: Map<number, Map<number, number[]>> = new Map()) {
let result: { serverId: number, type: number, activityIds: number[] }[] = [];
for(let [ serverId, typeToActivity ] of activityByType) {
for(let [ type, activityIds ] of typeToActivity) {
result.push({ serverId, type, activityIds });
}
}
return JSON.stringify(result);
}
function treatGroupToServer(groupToServer: Map<number, number[]> = new Map()) {
let result: { groupId: number, serverIds: number[] }[] = [];
for(let [groupId, serverIds] of groupToServer) {
result.push({ groupId, serverIds });
}
return JSON.stringify(result);
}
async function _savePvpSeasonMemory() {
await pinus.app.rpc.battle.battleRemote.savePvpSeasonMemory.broadcast();
await pinus.app.rpc.connector.connectorRemote.savePvpSeasonMemory.broadcast();
}
export async function savePvpSeasonMemory() {
let data = {
pvpSeasonNum: pinus.app.get('pvpSeasonNum'),
pvpSeasonStartTime: pinus.app.get('pvpSeasonStartTime'),
pvpSeasonEndTime: pinus.app.get('pvpSeasonEndTime'),
pvpSeasonRewardTime: pinus.app.get('pvpSeasonRewardTime'),
pvpSettleSeasonNum: pinus.app.get('pvpSettleSeasonNum')
}
await saveMemoryLog(pinus.app.getServerId(), 'pvpSeason', JSON.stringify(data));
}
async function _saveGuildActivityIndexMemory() {
await pinus.app.rpc.guild.guildActivityRemote.saveGuildActivityIndexMemory.broadcast();
}
export async function saveGuildActivityIndexMemory() {
let data = {
gateActivity: getGAIndexInPinus(GUILD_ACTIVITY_TYPE.GATE_ACTIVITY),
cityActivity: getGAIndexInPinus(GUILD_ACTIVITY_TYPE.CITY_ACTIVITY),
raceActivity: getGAIndexInPinus(GUILD_ACTIVITY_TYPE.RACE_ACTIVITY),
}
await saveMemoryLog(pinus.app.getServerId(), 'gaIndex', JSON.stringify(data));
}
async function _saveComBattleMemory() {
await pinus.app.rpc.comBattle.comBattleRemote.saveComBattleMemory.broadcast();
}
export async function saveComBattleMemory() {
await saveMemoryLog(pinus.app.getServerId(), 'comBattle', treatTeamMap(pinus.app.get('teamMap')));
}
function treatTeamMap(teamMap: Map<string, MemComBtlTeam> = new Map()) {
let result: MemComBtlTeam[] = [];
for(let [_teamCode, team] of teamMap) {
result.push(team);
}
return JSON.stringify(result);
}