Files
ZYZ/game-server/app/servers/battle/remote/battleRemote.ts
2023-05-25 15:47:22 +08:00

218 lines
6.5 KiB
TypeScript

import { Application, ChannelService, HandlerService, } from 'pinus';
import { PVPConfigModel, PVPConfigType } from '../../../db/PvpConfig';
import { gameData, reloadResources } from '../../../pubUtils/data';
import { setApiIsClose } from '../../../services/chatService';
import { getServerMainten, setServerMainten, stopServerMainten } from '../../../services/gmService';
import { setServerGroup } from '../../../services/serverService';
import { savePvpSeasonMemory } from '../../../services/log/memoryLogService';
import { setKvToMemory } from '../../../services/pushService';
import { getPvpTime } from '../../../services/pvpService';
import { taflush } from '../../../services/sdkService';
import { setPvpSeasonNum, setPvpSettleSeasonNum } from '../../../services/timeTaskService';
import { errlogger } from '../../../util/logger';
import { setHiddenData } from '../../../services/memoryCache/hiddenData';
import * as dicParam from '../../../pubUtils/dicParam';
export default function (app: Application) {
new HandlerService(app, {});
return new BattleRemote(app);
}
export class BattleRemote {
constructor(private app: Application) {
this.app = app;
this.channelService = app.get('channelService');
}
private channelService: ChannelService;
/**
* Add user into chat channel.
*
* @param {String} uid unique id for user
* @param {String} sid server id
* @param {boolean} flag channel parameter
*
*/
public async add(uid: string, sid: string, serverId: number, flag: boolean) {
let name = `server-${serverId}`;
console.log('BattleRemote add: ', name, flag);
let channel = this.channelService.getChannel(name, flag);
if (!!channel && !this.get(name, false).includes(uid)) {
if (!!channel) {
channel.add(uid, sid);
}
}
return this.get(name, flag);
}
/**
* Get user from chat channel.
*
* @param {Object} opts parameters for request
* @param {String} name channel name
* @param {boolean} flag channel parameter
* @return {Array} users uids in channel
*
*/
private get(name: string, flag: boolean) {
let users: string[] = [];
let channel = this.channelService.getChannel(name, flag);
if (!!channel) {
users = channel.getMembers();
}
for (let i = 0; i < users.length; i++) {
users[i] = users[i].split('*')[0];
}
return users;
}
/**
* Kick user out chat channel.
*
* @param {String} uid unique id for user
* @param {String} sid server id
*
*/
public async kick(uid: string, sid: string, serverId: number) {
let name = `server-${serverId}`;
let channel = this.channelService.getChannel(name, false);
// leave channel
if (!!channel) {
channel.leave(uid, sid);
}
}
/**
* 重载json资源
*/
public reloadResources(type?: string) {
try {
reloadResources(type);
} catch(e) {
errlogger.error(`remote ${__filename} \n ${e.stack}`);
}
}
public async setDicParam(field1: string, field2: string, value: string|number) {
try {
if(dicParam[field1] && dicParam[field1][field2]) dicParam[field1][field2] = value;
} catch(e) {
errlogger.error(`remote ${__filename} \n ${e.stack}`);
}
}
public async setGameDataToApp() {
try {
this.app.set('gameData', gameData);
this.app.set('dicParam', dicParam);
} catch(e) {
errlogger.error(`remote ${__filename} \n ${e.stack}`);
}
}
public async setPvpSettleSeasonNum(pvpConfig: PVPConfigType) {
try {
await setPvpSettleSeasonNum(pvpConfig);
} catch(e) {
errlogger.error(`remote ${__filename} \n ${e.stack}`);
}
}
public async setPvpSeasonNum(pvpConfig: PVPConfigType) {
try {
await setPvpSeasonNum(pvpConfig);
} catch(e) {
errlogger.error(`remote ${__filename} \n ${e.stack}`);
}
}
public async getPvpTime() {
try {
return getPvpTime();
} catch(e) {
errlogger.error(`remote ${__filename} \n ${e.stack}`);
}
}
public setServerMainten(serverIds: number[], startTime: number, endTime: number, version: string) {
try {
setServerMainten(serverIds, startTime, endTime, version);
} catch(e) {
errlogger.error(`remote ${__filename} \n ${e.stack}`);
}
}
public stopServerMainten(serverIds: number[]) {
try {
stopServerMainten(serverIds);
} catch(e) {
errlogger.error(`remote ${__filename} \n ${e.stack}`);
}
}
public getServerMainten(serverId: number) {
try {
return getServerMainten(serverId);
} catch(e) {
errlogger.error(`remote ${__filename} \n ${e.stack}`);
}
}
public taflush() {
try {
return taflush();
} catch(e) {
errlogger.error(`remote ${__filename} \n ${e.stack}`);
}
}
public savePvpSeasonMemory() {
try {
return savePvpSeasonMemory();
} catch(e) {
errlogger.error(`remote ${__filename} \n ${e.stack}`);
}
}
public async setApiIsClose(isClose: boolean) {
try {
setApiIsClose(isClose);
} catch(e) {
errlogger.error(`remote ${__filename} \n ${e.stack}`);
}
}
public async setHiddenData(heroes: number[], goods: number[], refTime: number) {
try {
setHiddenData(heroes, goods, refTime);
} catch(e) {
errlogger.error(`remote ${__filename} \n ${e.stack}`);
}
}
public async setKvToMemory(originK: string, originV: string, aesKey: string, aesIV: string, now: number) {
try {
setKvToMemory(originK, originV, aesKey, aesIV, now);
} catch(e) {
errlogger.error(`remote ${__filename} \n ${e.stack}`);
}
}
public async setServerGroup() {
try {
return setServerGroup();
} catch(e) {
errlogger.error(`remote ${__filename} \n ${e.stack}`);
}
}
public async fun() {
try {
console.log('预留一个函数,用于之后线上维护时需要使用');
} catch(e) {
errlogger.error(`remote ${__filename} \n ${e.stack}`);
}
}
}