import { dispatch } from '../pubUtils/dispatcher'; import { Session, Application } from 'pinus'; export function chat(session: Session, msg: any, app: Application, cb: (err: Error, serverId?: string) => void) { let chatServers = app.getServersByType('chat'); if (!chatServers || chatServers.length === 0) { cb(new Error('can not find chat servers.')); return; } let res = dispatch(session.get('roleId'), chatServers, 'chat'); cb(null, res.id); } export function battle(session: Session, msg: any, app: Application, cb: (err: Error, serverId?: string) => void) { let battleServers = app.getServersByType('battle'); if (!battleServers || battleServers.length === 0) { cb(new Error('can not find battle servers.')); return; } let rid = session.get('roleId'); if (msg.args && msg.args.length > 0) { for (let arg of msg.args) { if (!arg.route) continue; if (['battle.comBattleHandler.createTeam', 'battle.comBattleHandler.searchTeam'].indexOf(arg.route) !== -1) { rid = Math.random().toString(36).slice(-8); session.set('teamCode', rid); } else if (arg.route.indexOf('battle.comBattleHandler') !== -1) { if (arg.body.teamCode) { rid = arg.body.teamCode; } } } } let res = dispatch(rid, battleServers, 'battle'); cb(null, res.id); } export function guild(session: Session, msg: any, app: Application, cb: (err: Error, serverId?: string) => void) { let guildServers = app.getServersByType('guild'); if (!guildServers || guildServers.length === 0) { cb(new Error('can not find guild servers.')); return; } let rid = session.get('roleId'); if (msg.args && msg.args.length > 0) { for (let arg of msg.args) { if (!arg.route) continue; if (['guild.gateActivityHandler.getGateActivity', 'guild.gateActivityHandler.checkBattle', // 军团活动蛮夷入侵路由,按军团路由 'guild.gateActivityHandler.action', 'guild.gateActivityHandler.hitGate', 'guild.gateActivityHandler.battleEnd', 'guild.gateActivityHandler.debugGetPrivate', 'guild.gateActivityHandler.debugStartActivity', 'guild.gateActivityHandler.debugEndActivity' ].indexOf(arg.route) !== -1) { rid = session.get('guildCode'); } else if (['guild.cityActivityHandler.getCityStatus', 'guild.cityActivityHandler.declareCity', 'guild.cityActivityHandler.checkBattle', 'guild.cityActivityHandler.hitGate', 'guild.cityActivityHandler.battleEnd' ].indexOf(arg.route) !== -1) { if (arg.body.cityId) { rid = arg.body.cityId.toString(); } } else if (['guild.raceActivityHandler.getRaceActivity', 'guild.raceActivityHandler.join', 'guild.raceActivityHandler.getRace', 'guild.raceActivityHandler.useItem', 'guild.raceActivityHandler.battleEnd', ].indexOf(arg.route) !== -1) { rid = session.get('serverId').toString(); } } } let res = dispatch(rid, guildServers, 'guild'); cb(null, res.id); } export function activity(session: Session, msg: any, app: Application, cb: (err: Error, serverId?: string) => void) { let activityServers = app.getServersByType('activity'); if (!activityServers || activityServers.length === 0) { cb(new Error('can not find activity servers.')); return; } let res = dispatch(session.get('roleId'), activityServers, 'activity'); cb(null, res.id); } export function gm(session: Session, msg: any, app: Application, cb: (err: Error, serverId?: string) => void) { let gmServers = app.getServersByType('gm'); if (!gmServers || gmServers.length === 0) { cb(new Error('can not find gm servers.')); return; } let res = dispatch(session.get('roleId'), gmServers, 'gm'); cb(null, res.id); } export function order(session: Session, msg: any, app: Application, cb: (err: Error, serverId?: string) => void) { let orderServers = app.getServersByType('order'); if (!orderServers || orderServers.length === 0) { cb(new Error('can not find activity servers.')); return; } let res = dispatch(session.get('roleId'), orderServers, 'order'); cb(null, res.id); }