コード例 #1
0
        public void UpdateRoomGameStatus(ERoomGameStatus status, ERoomEnterStatus enter)
        {
            _logger.InfoFormat("Update Room Status {0}=>{1}", GameStatus, status);
            GameStatus = status;

            var e = RoomEvent.AllocEvent <UpdateRoomGameStatusEvent>();

            e.HallRoomId = HallRoomId;
            e.Status     = (int)status;
            e.CanEnter   = (int)enter;

            _dispatcher.AddEvent(e);
        }
コード例 #2
0
        public override void GameOver(bool forceOver)
        {
            var evt = RoomEvent.AllocEvent <GameOverEvent>();

            evt.HallRoomId = HallRoomId;
            evt.Message    = null;
            _dispatcher.AddEvent(evt);
        }
コード例 #3
0
        public void Handle(INetworkChannel networkChannel, object messagName, ResponseRegisterBattleServerMessage msg)
        {
            var e = RoomEvent.AllocEvent <HallServerConnectEvent>();

            _dispatcher.AddEvent(e);

            _logger.InfoFormat("Receive Response Register Battle Server Message, Has Hall Server");
        }
コード例 #4
0
        public void CheckStateOnReceivePlayerMessage()
        {
            if (_hasHallServer)
            {
                if (IsRoomGameExit())
                {
                    var e = RoomEvent.AllocEvent <MandatoryLogOutEvent>();
                    e.LogOutReason = MandatoryLogOutEvent.Reason.GameExit;
                    e.PlayerId     = 0;
                    e.HallRoomId   = _hallRoomId;
                    e.RoomId       = _roomId;

                    _dispatcher.AddEvent(e);
                    _logger.Info("The room game has exited!");
                }
            }
        }
コード例 #5
0
        private void DisposeClientConnect()
        {
            DisposeChannel(_clientChannel);
            _clientChannel = null;

            var evt = RoomEvent.AllocEvent <HallServerDisconnectEvent>();

            _dispatcher.AddEvent(evt);

            _logger.ErrorFormat("Disconnect From Allocation Server.");
        }
コード例 #6
0
        public void Handle(INetworkChannel networkChannel, object messagName, LongData roomId, RoomPlayer player)
        {
            var e = RoomEvent.AllocEvent <JoinRoomEvent>();

            e.HallRoomId = roomId.Value;
            e.RoomPlayer = player;

            _dispatcher.AddEvent(e);

            _logger.InfoFormat("Receive Join Room Message Hall Room Id {0} Map Id {1}", roomId, player.Id);
        }
コード例 #7
0
        private void CreateRoom(CreateRoomEvent e)
        {
            bool success = false;

            if (_room == null && (e.IsDummy || e.Message != null))
            {
                try
                {
                    _room = _roomFactory.Create(e.Message);
                    FinishRoomCreate(e.Message);
                    success = true;
                }
                catch (Exception exception)
                {
                    _logger.Error("Create Room Failed: ", exception);
                }
            }

            if (!success)
            {
                var evt = RoomEvent.AllocEvent <CreateRoomResponseEvent>();
                evt.Success = false;
                evt.ErrCode = _room != null ? ErrorCode.CreateRoom_ServerRoom_Exist : ErrorCode.CreateRoom_Message_Error;
                _dispatcher.AddEvent(evt);
            }
        }
コード例 #8
0
        public void Handle(INetworkChannel networkChannel, object messagName, RequestCreateRoomMessage messageData)
        {
            var e = RoomEvent.AllocEvent <CreateRoomEvent>();

            e.Message = messageData as RequestCreateRoomMessage;
            _dispatcher.AddEvent(e);

            if (e.Message != null)
            {
                _logger.InfoFormat("Receive Create Room Message Hall Room Id {0} Map Id {1}", e.Message.HallRoomId, e.Message.MapId);
            }
            else
            {
                _logger.ErrorFormat("Receive Create Room Message is Null");
            }
        }
コード例 #9
0
        public void Handle(INetworkChannel networkChannel, object messagName, RequestJoinRoomListMessage message)
        {
            var e = RoomEvent.AllocEvent <JoinRoomListEvent>();

            e.HallRoomId = message.HallRoomId;
            int count          = message.Players.Count;
            var roomPlayerList = new RoomPlayer[count];

            for (int i = 0; i < count; ++i)
            {
                roomPlayerList[i] = message.Players[i];
            }
            e.RoomPlayerList = roomPlayerList;

            _dispatcher.AddEvent(e);

            _logger.InfoFormat("Receive Join Room List Message Hall Room Id {0} Count {1}", e.HallRoomId, count);
        }
コード例 #10
0
 private void CreateRoom(CreateRoomEvent e)
 {
     if (_room != null || (!e.IsDummy && e.Message == null))
     {
         var evt = RoomEvent.AllocEvent <CreateRoomResponseEvent>();
         evt.Success = false;
         evt.ErrCode = _room != null ? ErrorCode.CreateRoom_ServerRoom_Exist : ErrorCode.CreateRoom_Message_Error;
         _dispatcher.AddEvent(evt);
     }
     else
     {
         _room = _roomFactory.Create(e.Message);
         FinishRoomCreate(e.Message);
     }
 }
コード例 #11
0
ファイル: LoginServer.cs プロジェクト: yangfan111/common
        private void NetworkChannelOnMessageReceived(INetworkChannel channel, int messageType, object messageBody)
        {
            if (messageType == (int)EClient2ServerMessage.Login)
            {
                LoginMessage message = (LoginMessage)messageBody;
                if (message == null)
                {
                    _logger.InfoFormat("Illegal login message");
                    channel.Disconnect();
                }
                else
                {
                    _logger.InfoFormat("Received Log in Message ... token:{0} {1}", message.Token, message.LoginStage);
                    var e = RoomEvent.AllocEvent <LoginServerEvent>();
                    e.Channel = channel;
                    e.Message = message;
                    _dispatcher.AddEvent(e);
                }
            }

            _networkMonitor.CheckStateOnReceivePlayerMessage();
        }