public void CChannelEnterReq(GameSession session, CChannelEnterReqMessage message) { var channel = GameServer.Instance.ChannelManager[message.Channel]; if (channel == null) { session.Send(new SServerResultInfoAckMessage(ServerResult.NonExistingChannel)); return; } try { channel.Join(session.Player); } catch (ChannelLimitReachedException) { session.Send(new SServerResultInfoAckMessage(ServerResult.ChannelLimitReached)); } catch (ChannelException ex) { _logger.Error() .Account(session) .Exception(ex) .Write(); session.Send(new SServerResultInfoAckMessage(ServerResult.JoinChannelFailed)); } }
public async Task <bool> OnHandle(MessageContext context, CChannelEnterReqMessage message) { var session = context.GetSession <Session>(); var plr = session.Player; var channel = _channelService[message.Channel]; if (channel == null) { session.Send(new SServerResultInfoAckMessage(ServerResult.NonExistingChannel)); return(true); } var result = channel.Join(plr); switch (result) { case ChannelJoinError.OK: plr.Session.Send(new SServerResultInfoAckMessage(ServerResult.ChannelEnter)); break; case ChannelJoinError.AlreadyInChannel: plr.Session.Send(new SServerResultInfoAckMessage(ServerResult.JoinChannelFailed)); break; case ChannelJoinError.ChannelFull: plr.Session.Send(new SServerResultInfoAckMessage(ServerResult.ChannelLimitReached)); break; } return(true); }
public void CChannelEnterReq(GameSession session, CChannelEnterReqMessage message) { var channel = GameServer.Instance.ChannelManager[message.Channel]; if (channel == null) { session.SendAsync(new SServerResultInfoAckMessage(ServerResult.NonExistingChannel)); return; } try { channel.Join(session.Player); } catch (ChannelLimitReachedException) { session.SendAsync(new SServerResultInfoAckMessage(ServerResult.ChannelLimitReached)); } }