示例#1
0
        public void ProcessMessage(Message receivedMessage)
        {
            if (receivedMessage == null)
            {
                throw new ArgumentException("Error the received message is null");
            }

            switch (receivedMessage.MessageType)
            {
            case MessageType.Connect:
                if (receivedMessage.Callback == (int)MessageSubType.SuccessfulLogin)
                {
                    HandleConnectionToStateServer(receivedMessage);
                }
                GameFacade.Instance.RetrieveProxy <ConnectionProxy>().ReceiveMessage(receivedMessage);

                break;

            case MessageType.Create:
                if (mClientObjectRepository == null)
                {
                    throw new ArgumentException("Error. Client Object Repository is null, in handler for Create, message=" + receivedMessage.ToString());
                }
                mClientObjectRepository.ReceiveMessage(receivedMessage);
                break;

            case MessageType.Update:
                if (mClientObjectRepository == null)
                {
                    throw new Exception("Error. Client Object Repository is null, in handler for Update");
                }
                mClientObjectRepository.ReceiveMessage(receivedMessage);
                break;

            case MessageType.Delete:
                if (mClientObjectRepository == null)
                {
                    throw new Exception("Error. Client Object Repository is null, in handler for Delete");
                }
                mClientObjectRepository.ReceiveMessage(receivedMessage);
                break;

            case MessageType.Loading:
                GameFacade.Instance.RetrieveProxy <RoomManagerProxy>().ReceiveMessage(receivedMessage);
                break;

            case MessageType.Room:
                GameFacade.Instance.RetrieveMediator <RoomAPIMediator>().ReceiveMessage(receivedMessage);
                break;

            case MessageType.Friends:
                GameFacade.Instance.RetrieveMediator <FriendsMediator>().ReceiveMessage(receivedMessage);
                break;

            case MessageType.PaymentItems:
                GameFacade.Instance.RetrieveProxy <InventoryProxy>().ReceiveMessage(receivedMessage);
                break;

            case MessageType.FashionMinigame:
                FashionGame.FashionGameCommands.ProcessMessage(receivedMessage);
                break;

            case MessageType.AssetRepository:
                GameFacade.Instance.RetrieveProxy <ClientAssetRepository>().ReceiveMessage(receivedMessage);
                break;

            case MessageType.Heartbeat:
                //check if we've included a timestamp and if we have, log the delta between the time now and the time the message was sent
                if (receivedMessage.Data.Count > 0)
                {
                    ILogger  logger    = GameFacade.Instance.RetrieveMediator <LoggerMediator>().Logger;
                    TimeSpan timeSpan  = (TimeSpan)(DateTime.Now - CheckType.TryAssignType <DateTime>(receivedMessage.Data[0]));
                    string   logString = "Ping for client: " + mLocalSessionId + " : " + timeSpan.Duration().ToString();
                    logger.LogLine(logString);
                    Console.Log(logString);
                }
                break;

            case MessageType.Error:
                GameFacade.Instance.RetrieveMediator <ErrorHandlerMediator>().ReceiveMessage(receivedMessage);
                break;

            case MessageType.Escrow:
                GameFacade.Instance.RetrieveMediator <EscrowMediator>().ReceiveMessage(receivedMessage);
                break;
            }
        }