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 } } }