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}"); }
public override void OnLeave(ILeaveGameCallInfo info) { if (PlayerManager.Players.Count == 0) { Shutdown(true); } else { _simulationLifecycleManager.ECSRoot.ECS.PlayerDisconnected(info.ActorNr - 1); PlayerFeedbackSentEvent?.Invoke(PlayerManager.Players); } base.OnLeave(info); }