Files
ZYZ/game-server/app/servers/battle/handler/comBattleHandler.ts
2020-09-08 19:59:19 +08:00

96 lines
2.9 KiB
TypeScript

import { Application, BackendSession } from 'pinus';
export default function(app: Application) {
return new ComBattleHandler(app);
}
export class ComBattleHandler {
constructor(private app: Application) {
}
private bossHp: number = 10000;
async startBattle(msg: {}, session: BackendSession) {
const battleId = Math.random().toString(36).slice(-8);
let roleId = session.get('roleId');
let roleName = session.get('roleName');
let sid = session.get('sid');
console.log('role in startBattle: ', roleId, roleName, battleId);
let channelService = this.app.get('channelService');
let channel = channelService.getChannel(battleId, true);
let users = channel.getMembers();
if (users.indexOf(roleId) === -1) {
channel.add(roleId, sid);
}
users = channel.getMembers();
channel.pushMessage('onAdd', {users});
let tsid = channel.getMember(roleId)['sid'];
channelService.pushMessageByUids('bossHp', {data: 'datadata'}, [{
uid: roleId,
sid: tsid
}]);
return {
code: 200,
data: {
users,
battleId
}
}
}
/**
* Send messages to users
*
* @param {Object} msg message from client
* @param {Object} session
*
*/
async enterBattle(msg: {battleId: string , target: string}, session: BackendSession) {
let roleId = session.get('roleId');
let roleName = session.get('roleName');
let sid = session.get('sid');
console.log('role in enterBattle: ', roleId, roleName, msg, this.app.rpc);
let channelService = this.app.get('channelService');
let channel = channelService.getChannel(msg.battleId, false);
let users = channel.getMembers();
if (users.indexOf(roleId) === -1) {
channel.add(roleId, sid);
} else {
return {
code: 202,
data: '不能重复加入'
};
}
channel.pushMessage('onAddBattle', {users});
return {
code: 200,
data: users
}
}
async hurtHp(msg: {battleId: string, bossHurt: number, actorHurt: [{ actorId: number, actorHurt: number}]}, session: BackendSession) {
let roleId = session.get('roleId');
let roleName = session.get('roleName');
console.log('role in enterBattle: ', roleId, roleName, msg);
let channelService = this.app.get('channelService');
let channel = channelService.getChannel(msg.battleId, false);
this.bossHp -= msg.bossHurt;
if (this.bossHp < 0) {
this.bossHp = 0;
channel.pushMessage('bossHp', {data: 'boss 挂啦!!!!!'}, undefined);
}
channel.pushMessage('bossHp', {bossHp: this.bossHp}, undefined);
return {
code: 200,
data: this.bossHp
}
}
}