Example #1
0
        public static void StopMultiplayer()
        {
            if (Multiplayer.session != null)
            {
                Multiplayer.session.Stop();
                Multiplayer.session = null;
                Prefs.Apply();
            }

            Multiplayer.game = null;

            TickPatch.ClearSkipping();
            TickPatch.Timer       = 0;
            TickPatch.tickUntil   = 0;
            TickPatch.accumulator = 0;

            Find.WindowStack?.WindowOfType <ServerBrowser>()?.Cleanup(true);

            foreach (var entry in Sync.bufferedChanges)
            {
                entry.Value.Clear();
            }

            ClearCaches();

            if (Multiplayer.arbiterInstance)
            {
                Multiplayer.arbiterInstance = false;
                Application.Quit();
            }
        }