private void UpdateLevelEditor()
 {
     if (SpaceLevelEditor.Activate)
     {
         SpaceLevelEditor.Tick();
     }
 }
        private void StopLevelEditor(bool aborted)
        {
            SpaceLevelEditor.Stop();

            if (aborted)
            {
                SpaceLevelEditor.Abort();
            }
        }
        private RuntimeLevel initialLevel; // The last level that was loaded.

        public LevelManager(Script script, MenuManager menuManager) : base(script)
        {
            script.Tick    += OnTick;
            script.Aborted += OnAborted;

            MenuManager      = menuManager;
            SpaceLevelEditor = new SpaceLevelEditor(menuManager);

            SubscribeToMenuEvents();
        }
        private void BeginLevelLoad()
        {
            if (Level == null)
            {
                if (IsLevelLoaded)
                {
                    IsLevelLoaded = false;
                }

                return;
            }

            if (!IsLevelLoaded)
            {
                if (!Game.IsScreenFadingOut)
                {
                    Game.FadeScreenOut(screenFadeTime);
                }

                if (Game.IsScreenFadedOut)
                {
                    // DEBUGGING
                    Game.Player.Character.Position       = Level.LevelMetadata.Position;
                    Game.Player.Character.FreezePosition = true;

                    if (initialLevel != null)
                    {
                        initialLevel.Stop();

                        initialLevel = null;
                    }

                    LoadLevel(Level);

                    IsLevelLoaded = true;

                    if (SpaceLevelEditor.Activate)
                    {
                        SpaceLevelEditor.Init();
                    }

                    Game.FadeScreenIn(screenFadeTime);
                }
            }
        }
        private void OnFileSelected(object sender, NativeMenuItemEventArgs e)
        {
            if (e.MenuItem == null)
            {
                return;
            }

            var levelMetadata = (SpaceLevel)e.MenuItem.Tag;

            if (levelMetadata == null)
            {
                return;
            }

            Level = new RuntimeLevel(levelMetadata);

            SpaceLevelEditor.BeginEdit(Level);
        }
 public override void ReadSettings(ScriptSettings scriptSettings)
 {
     screenFadeTime = scriptSettings.GetValue("levels", "screen_fade_time", screenFadeTime);
     scriptSettings.SetValue("levels", "screen_fade_time", screenFadeTime);
     SpaceLevelEditor.ReadSettings(scriptSettings);
 }