public void AttemptToStartMode() { if (StartingModeDelay) { return; } if (Cancellable.CheckCancelled(OnCheckIfModeCanStartEvent)) { StartingModeTime = Network.time; return; } if (StartingModeTime == -1.0 || Network.time - StartingModeTime < StartingModeTimeout) { foreach (var player in ValidPlayers) { if (!player.Stuck && !player.HasLoadedLevel(true)) { return; } } } StartingModeDelay = true; // StartModeAfterDelay is a fix for the mode sometimes starting so early that the loading screen won't disappear DistanceServerMainStarter.Instance.StartCoroutine(StartModeAfterDelay(5.0f)); }
void AttemptToAdvanceLevel() { if (Server.StartingLevel || !Server.HasModeStarted) { Log.Debug($"Mode not started, not advancing normally."); return; } if (Server.ValidPlayers.Count == 0) { Log.Debug($"No players, not advancing normally."); return; } if (ServerStage != Stage.Started) { return; } if (Cancellable.CheckCancelled(OnCheckIfLevelCanAdvanceEvent)) { return; } Log.Debug("Advancing level from AttemptToAdvanceLevel"); AdvanceLevel(); }