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