Exemple #1
0
 private void LogPlayerFeedback(PlayerFeedbackEvent playerFeedbackEvent)
 {
     try
     {
         var playerConfig       = _scenario.Configuration.PlayerConfiguration.SingleOrDefault(pc => pc.ExternalId == playerFeedbackEvent.PlayerExternalId);
         var rankedPlayerConfig = _scenario.Configuration.PlayerConfiguration.SingleOrDefault(pc => pc.ExternalId == playerFeedbackEvent.RankedPlayerExternalId);
         if (playerConfig != null && rankedPlayerConfig != null)
         {
             var player       = _context.InstancePlayers.Find(_game.Id, playerConfig.Id);
             var rankedPlayer = _context.InstancePlayers.Find(_game.Id, rankedPlayerConfig.Id);
             if (player != null && rankedPlayer != null)
             {
                 var playerFeedback = new PlayerFeedback()
                 {
                     Player            = player,
                     RankedPlayer      = rankedPlayer,
                     LeadershipRank    = playerFeedbackEvent.PlayerRankings[0],
                     CommunicationRank = playerFeedbackEvent.PlayerRankings[1],
                     CooperationRank   = playerFeedbackEvent.PlayerRankings[2],
                 };
                 _context.PlayerFeedback.Add(playerFeedback);
             }
         }
     }
     catch (Exception ex)
     {
         // TODO: log
     }
 }
Exemple #2
0
        private void ProcessFeedbackMessage(Message message)
        {
            if (message is PlayerFeedbackMessage feedbackMessage)
            {
                var player = PlayerManager.Get(feedbackMessage.PlayerPhotonId);
                player.State = (int)ClientState.FeedbackSent;
                PlayerManager.UpdatePlayer(player);

                if (_simulationLifecycleManager.ECSRoot.ECS.TryGetSystem <EventSystem>(out var eventSystem))
                {
                    foreach (var feedbackPlayer in feedbackMessage.RankedPlayerPhotonIdBySection)
                    {
                        var feedbackEvent = new PlayerFeedbackEvent
                        {
                            PlayerExternalId       = feedbackMessage.PlayerPhotonId,
                            RankedPlayerExternalId = feedbackPlayer.Key,
                            PlayerRankings         = feedbackPlayer.Value
                        };
                        eventSystem.Publish(feedbackEvent);
                    }
                }

                PlayerFeedbackSentEvent?.Invoke(PlayerManager.Players);
                return;
            }

            throw new Exception($"Unhandled Simulation ClientState Message: ${message}");
        }