Exemple #1
0
        //method for sending proper info
        private void SendInfoMessageToClient(ClientInfoType messageType, IMakaoGameClientService proxy, object dataToSend)
        {
            var logger = NLog.LogManager.GetCurrentClassLogger();

            logger.Info("Sending info to specific player in the room: " + messageType.ToString());

            switch (messageType)
            {
            case ClientInfoType.PlayersDataChanged: proxy.UpdateTheCurrentListOfPlayers(); break;

            case ClientInfoType.ClosedByHost: proxy.RoomWasDeleted(DeletionReason.ClosedByHost); break;

            case ClientInfoType.PlayersReadinessChanged:
                proxy.UpdatePlayersGameReadinessData((ActualizedPlayersReadinessDataRequest)dataToSend); break;

            case ClientInfoType.JoiningTimeout: proxy.RoomWasDeleted(DeletionReason.JoiningTimeout); break;

            case ClientInfoType.ReadinessTimeout: proxy.RoomWasDeleted(DeletionReason.ReadinessTimeout); break;

            case ClientInfoType.CheckAliveness: CheckAlivenessOfPlayer(proxy); break;

            case ClientInfoType.LostConnectionToClient: proxy.RoomWasDeleted(DeletionReason.LostConnection); break;

            case ClientInfoType.PlayerLeftGame: proxy.RoomWasDeleted(DeletionReason.PlayerLeftGame); break;
            }
        }
Exemple #2
0
        //spread info about room removal
        public void DeleteTheRoom(ClientInfoType messageType)
        {
            var logger = NLog.LogManager.GetCurrentClassLogger();

            logger.Info("Start sending info about removal of room. Amount of players: " +
                        MakaoEngineHostDataPlaceholders.PlayersData.Count.ToString());
            SendInfoToAllCLients(messageType, null);
        }
Exemple #3
0
        //send info to all clients
        private void SendInfoToAllCLients(ClientInfoType messageType, object dataToSend)
        {
            foreach (PlayerData item in MakaoEngineHostDataPlaceholders.PlayersData)
            {
                var logger = NLog.LogManager.GetCurrentClassLogger();
                logger.Info(string.Format("Sending message of type: {0}, to player: {1} [{2}], endpoint: {3}.",
                                          messageType.ToString(), item.PlayerName, item.PlayerNumber.ToString(), item.PlayerEndpoint));

                ChannelFactoryCreation(item.PlayerEndpoint, messageType, dataToSend);
            }
        }
Exemple #4
0
 //create new channel factory
 private void ChannelFactoryCreation(Uri endpoint, ClientInfoType messageType, object dataToSend)
 {
     try
     {
         ChannelFactory <IMakaoGameClientService> factory = new ChannelFactory <IMakaoGameClientService>
                                                                (new BasicHttpBinding(), new EndpointAddress(endpoint));
         IMakaoGameClientService proxy = factory.CreateChannel();
         SendInfoMessageToClient(messageType, proxy, dataToSend);
     }
     catch (Exception ex)
     {
         var logger = NLog.LogManager.GetCurrentClassLogger();
         logger.Error("Couldn't connect to the client endpoint while sending info" +
                      " to every current player from list: " + messageType + "; " + ex.Message);
     }
 }
Exemple #5
0
 public object GetClientInfo(ClientInfoType type)
 {
     if (ClientInfo != null && ClientInfo.Length > 0)
     {
         object[] info = (object[])ClientInfo[0];
         if (info != null)
         {
             return info[(int)type];
         }
     }
     return null;
 }