예제 #1
0
 //
 public void NextScenario()
 {
     //endscenario
     if (outerProceedButton.activeSelf) outerProceedButton.SetActive(false);
     timer = 0f;
     if (framedElement != null) DisableShowframe();         
     if (showArrow.gameObject.activeSelf) showArrow.gameObject.SetActive(false);
     if (!grcaster.enabled) grcaster.enabled = true;
     mcc.ChangeChosenObject(ChosenObjectType.None);
     //
     if (currentScenario.step != TutorialStep.UpgradeHQ)
     {
         var nextStep = currentScenario.step + 1;
         StartScenario(TutorialScenario.GetScenario(nextStep));
     }
     else
     {
         GameMaster.realMaster.ChangePlayMode(GameStartSettings.GetModeChangingSettings(GameMode.Survival, Difficulty.Easy, StartFoundingType.Nothing));
         var qs = currentScenario.DefineQuestSection();
         if (qs == QuestSection.Endgame) mcc.questUI.BlockQuestPosition(qs);
         GameMaster.realMaster.UnbindScenario(currentScenario);
         currentScenario = null;
         Destroy(gameObject);
     }
 }
예제 #2
0
    public static GameStartSettings GetEditorStartSettings(byte i_size)
    {
        var cgs = new GameStartSettings();

        cgs.gameMode = GameMode.Editor;
        cgs.chunkGenerationSettings = ChunkGenerationSettings.GetGenerationSettings(ChunkGenerationMode.EditorPreset, i_size);
        return(cgs);
    }
예제 #3
0
    /// <summary>
    /// starts new editor session and loads terrain preset
    /// </summary>
    public static GameStartSettings GetEditorStartSettings(string i_savename)
    {
        var cgs = new GameStartSettings();

        cgs.gameMode = GameMode.Editor;
        cgs.chunkGenerationSettings = ChunkGenerationSettings.GetLoadingSettings(i_savename);
        return(cgs);
    }
예제 #4
0
    public void StartGame()
    {
        GameStartSettings gss = new GameStartSettings(newGameGenMode, (byte)sizeSlider.value, (Difficulty)difficultyDropdown.value, roughnessSlider.value);

        GameMaster.gameStartSettings = gss;
        GameMaster.savename          = string.Empty;
        SceneManager.LoadScene(SaveSystemUI.GAME_LEVEL_NUMBER);
    }
예제 #5
0
    public static GameStartSettings GetDefaultStartSettings()
    {
        var cgs = new GameStartSettings();

        cgs.gameMode = GameMode.Survival;
        cgs.chunkGenerationSettings = ChunkGenerationSettings.GetDefaultSettings();
        cgs.subIndex0 = (byte)StartFoundingType.Zeppelin;
        return(cgs);
    }
예제 #6
0
 public void PlayWithThisTerrain()
 {
     if (visualBorderDrawn)
     {
         GameMaster.realMaster.mainChunk.HideBorderLine();
     }
     GameMaster.realMaster.SaveTerrain("lastCreatedTerrain");
     GameMaster.realMaster.ChangePlayMode(GameStartSettings.GetModeChangingSettings(GameMode.Survival, Difficulty.Normal, StartFoundingType.Zeppelin));
 }
예제 #7
0
    public static GameStartSettings GetModeChangingSettings(GameMode newMode, Difficulty i_difficulty, StartFoundingType i_foundingType)
    {
        var cgs = new GameStartSettings();

        cgs.gameMode = newMode;
        cgs.chunkGenerationSettings = ChunkGenerationSettings.GetNoActionSettings();
        cgs.difficulty = i_difficulty;
        cgs.subIndex0  = (byte)i_foundingType;
        return(cgs);
    }
예제 #8
0
    public void ChangePlayMode(GameStartSettings gss)
    {
        startSettings = null;
        _applyingGameStartSettings = gss;
        startSettings   = null;
        sessionPrepared = false;

        Awake();
        PrepareSession();
    }
예제 #9
0
    public static GameStartSettings GetLoadingSettings(GameMode i_gameMode, string i_savename)
    {
        var cgs = new GameStartSettings();

        cgs.gameMode = i_gameMode;
        cgs.loadGame = true;
        cgs.chunkGenerationSettings = ChunkGenerationSettings.GetNoActionSettings();
        cgs.savename = i_savename;
        return(cgs);
    }
예제 #10
0
    public static GameStartSettings GetStartSettings(GameMode i_mode, ChunkGenerationSettings i_chunkSettings, Difficulty i_difficulty, StartFoundingType i_start)
    {
        var cgs = new GameStartSettings();

        cgs.gameMode = i_mode;
        cgs.chunkGenerationSettings = i_chunkSettings;
        cgs.difficulty = i_difficulty;
        cgs.subIndex0  = (byte)i_start;
        return(cgs);
    }
예제 #11
0
파일: MenuUI.cs 프로젝트: Hengle/VoxelGame
    public void StartGame()
    {
        if (newGameGenMode == ChunkGenerationMode.TerrainLoading & GameMaster.savename == string.Empty)
        {
            return;
        }
        GameStartSettings gss = new GameStartSettings(newGameGenMode, (byte)sizeSlider.value, (Difficulty)difficultyDropdown.value);

        GameMaster.gameStartSettings = gss;
        GameMaster.ChangeScene(GameMaster.PLAY_SCENE_INDEX);
    }
예제 #12
0
    public static GameStartSettings GetTutorialSettings()
    {
        var gss = new GameStartSettings();

        gss.gameMode    = GameMode.Scenario;
        gss.subIndex0   = (byte)ScenarioType.Embedded;
        gss.subIndex1   = (byte)EmbeddedScenarioType.Tutorial;
        gss.loadTerrain = true;
        gss.savename    = "tutorialTerrain";
        gss.difficulty  = Difficulty.Utopia;
        return(gss);
    }
예제 #13
0
 // SCENERY CHANGING
 public static void StartNewGame(GameStartSettings gss)
 {
     if (realMaster == null)
     {
         _applyingGameStartSettings = gss;
         ChangeScene(PLAY_SCENE_INDEX);
     }
     else
     {
         if (gss.NeedLoading())
         {
             realMaster.gameMode = gss.DefineGameMode();
             realMaster.LoadGame(gss.GetSavenameFullpath());
         }
         else
         {
             realMaster.ClearPreviousSessionData();
             _applyingGameStartSettings = gss;
             realMaster.Awake();
             realMaster.PrepareSession();
         }
     }
 }
예제 #14
0
 public void SaveLoadButton()
 {
     if (lastSelectedIndex == -1)
     {
         return;
     }
     if (saveMode)
     {
         submitWindow.SetActive(true);
         submitQuestionText.text = Localization.GetWord(LocalizedWord.Rewrite) + '?';
         submitButtonText.text   = Localization.GetWord(LocalizedWord.Yes);
         rejectButtonText.text   = Localization.GetWord(LocalizedWord.Cancel);
         deleteSubmit            = false;
     }
     else
     {
         if (terrainsLoading)
         {// ЗАГРУЗКА  УРОВНЕЙ  ДЛЯ  РЕДАКТОРА
             string fullPath = GetTerrainsPath() + '/' + saveNames[lastSelectedIndex] + '.' + TERRAIN_FNAME_EXTENSION;
             if (ingame)
             {
                 if (GameMaster.realMaster.LoadTerrain(fullPath))
                 {
                     gameObject.SetActive(false);
                 }
             }
             else
             {
                 // теоретический сценарий, не должен использоваться
                 if (File.Exists(fullPath))
                 {
                     GameMaster.SetSavename(saveNames[lastSelectedIndex]);
                     GameStartSettings gss = new GameStartSettings(ChunkGenerationMode.TerrainLoading);
                     GameMaster.gameStartSettings = gss;
                     GameMaster.ChangeScene(GameMaster.EDITOR_SCENE_INDEX);
                 }
                 else
                 {
                     saveNames[lastSelectedIndex] = "File not exist";
                 }
             }
         }
         else
         {// ЗАГРУЗКА  УРОВНЕЙ  ДЛЯ  ИГРЫ
             string fullPath = GetSavesPath() + '/' + saveNames[lastSelectedIndex] + '.' + SAVE_FNAME_EXTENSION;
             if (ingame)
             {
                 if (GameMaster.realMaster.LoadGame(fullPath))
                 {
                     gameObject.SetActive(false);
                     GameLogUI.MakeAnnouncement(Localization.GetAnnouncementString(GameAnnouncements.GameLoaded));
                 }
             }
             else
             {
                 if (File.Exists(fullPath))
                 {
                     GameMaster.SetSavename(saveNames[lastSelectedIndex]);
                     GameStartSettings gss = new GameStartSettings(ChunkGenerationMode.GameLoading);
                     GameMaster.gameStartSettings = gss;
                     GameMaster.ChangeScene(GameMaster.PLAY_SCENE_INDEX);
                 }
                 else
                 {
                     saveNames[lastSelectedIndex] = "File not exist";
                 }
             }
         }
     }
 }
예제 #15
0
    public void SaveLoadButton()
    {
        int sid = listController.selectedButtonIndex;

        if (sid == -1)
        {
            return;
        }
        if (saveMode)
        {
            submitWindow.SetActive(true);
            submitQuestionText.text = Localization.GetWord(LocalizedWord.Rewrite) + '?';
            submitButtonText.text   = Localization.GetWord(LocalizedWord.Yes);
            rejectButtonText.text   = Localization.GetWord(LocalizedWord.Cancel);
            deleteSubmit            = false;
        }
        else
        {
            bool   ingame = GameMaster.realMaster != null;
            string name   = savenames[sid];
            if (workWithTerrains)
            {// ЗАГРУЗКА  УРОВНЕЙ  ДЛЯ  РЕДАКТОРА
                string fullPath = GetTerrainSaveFullpath(name);
                if (ingame)
                {
                    if (GameMaster.realMaster.LoadTerrain(fullPath))
                    {
                        gameObject.SetActive(false);
                    }
                }
                else
                {
                    // теоретический сценарий, не должен использоваться
                    if (File.Exists(fullPath))
                    {
                        GameMaster.StartNewGame(
                            GameStartSettings.GetEditorStartSettings(name)
                            );
                    }
                    else
                    {
                        PrepareSavesList();
                    }
                }
            }
            else
            {// ЗАГРУЗКА  УРОВНЕЙ  ДЛЯ  ИГРЫ
                string fullPath = GetGameSaveFullpath(name);
                if (ingame)
                {
                    if (GameMaster.realMaster.LoadGame(fullPath))
                    {
                        gameObject.SetActive(false);
                        UIController.GetCurrent().GetMainCanvasController().ChangeActiveWindow(ActiveWindowMode.NoWindow);
                        AnnouncementCanvasController.MakeAnnouncement(Localization.GetAnnouncementString(GameAnnouncements.GameLoaded));
                    }
                }
                else
                {
                    if (File.Exists(fullPath))
                    {
                        GameMaster.StartNewGame(
                            GameStartSettings.GetLoadingSettings(GameMode.Survival, name)
                            );
                    }
                    else
                    {
                        PrepareSavesList();
                    }
                }
            }
        }
    }
예제 #16
0
    void PrepareSession()
    {
        if (sessionPrepared)
        {
            return;
        }
        bool activateEventTracker = false;

        switch (gameMode)
        {
        case GameMode.Survival:
        {
            uicontroller.ChangeUIMode(UIMode.Standart, true);
            difficulty = startSettings.DefineDifficulty();
            SetDefaultValues();
            var cgs         = startSettings.GetChunkGenerationSettings();
            var chunkAction = cgs.preparingActionMode;
            if (chunkAction != ChunkPreparingAction.NoAction)
            {
                if (chunkAction == ChunkPreparingAction.Load)
                {
                    LoadTerrain(SaveSystemUI.GetTerrainsPath() + '/' + cgs.GetTerrainName() + '.' + SaveSystemUI.TERRAIN_FNAME_EXTENSION);
                }
                else
                {
                    mainChunk = Constructor.ConstructChunk(cgs);
                    var slist = mainChunk.GetSurfaces();
                    if (slist != null)
                    {
                        geologyModule.SpreadMinerals(slist);
                    }
                    mainChunk.InitializeNature().FirstLifeformGeneration(Chunk.chunkSize * Chunk.chunkSize * 500f);
                }
            }
            //
            var fcm = FollowingCamera.main;
            fcm.CameraToStartPosition();
            fcm.ResetTouchRightBorder();
            fcm.CameraRotationBlock(false);
            warProximity   = 0.01f;
            layerCutHeight = Chunk.chunkSize; prevCutHeight = layerCutHeight;
            //
            switch (startSettings.DefineFoundingType())
            {
            case StartFoundingType.Zeppelin:
            {
                Zeppelin.CreateNew();
                AnnouncementCanvasController.MakeAnnouncement(Localization.GetAnnouncementString(GameAnnouncements.SetLandingPoint));
                break;
            }

            case StartFoundingType.Headquarters:
            {
                Plane sb   = mainChunk.GetRandomSurface();
                int   xpos = sb.pos.x;
                int   zpos = sb.pos.z;

                Structure s;
                if (testMode)
                {
                    s = HeadQuarters.GetHQ(6);
                    weNeedNoResources = true;
                }
                else
                {
                    weNeedNoResources = false;
                    s = HeadQuarters.GetHQ(1);
                }

                Plane b = mainChunk.GetHighestSurfacePlane(xpos, zpos);
                s.SetBasement(b, PixelPosByte.zero);


                sb = mainChunk.GetNearestUnoccupiedSurface(b.pos);
                StorageHouse firstStorage = Structure.GetStructureByID(Structure.STORAGE_0_ID) as StorageHouse;
                firstStorage.SetBasement(sb, PixelPosByte.zero);
                SetStartResources();
                break;
            }
            }
            fcm.WeNeedUpdate();
            activateEventTracker = true;
            break;
        }

        case GameMode.Editor:
        {
            uicontroller.ChangeUIMode(UIMode.Editor, true);
            mainChunk = new GameObject("chunk").AddComponent <Chunk>();
            int size = Chunk.chunkSize;
            int[,,] blocksArray = new int[size, size, size];
            size /= 2;
            blocksArray[size, size, size] = ResourceType.STONE_ID;
            mainChunk.Rebuild(blocksArray);
            FollowingCamera.main.CameraToStartPosition();
            break;
        }

        case GameMode.Scenario:
        {
            uicontroller.ChangeUIMode(UIMode.Standart, true);
            switch (startSettings.GetScenarioType())
            {
            case ScenarioType.Embedded:
            {
                switch ((EmbeddedScenarioType)startSettings.GetSecondSubIndex())
                {
                case EmbeddedScenarioType.Tutorial:
                {
                    gameRules = GameRules.GetTutorialRules();
                    LoadTerrainFromAssets(TutorialScenarioNS.TutorialScenario.tutorialTerrainName);
                    TutorialScenarioNS.TutorialUI.Initialize();
                    break;
                }
                }
                break;
            }
            }
            activateEventTracker = true;
            FollowingCamera.main.CameraToStartPosition();
            break;
        }
        }
        if (activateEventTracker)
        {
            eventTracker = new EventChecker();
        }

        startSettings   = null;
        sessionPrepared = true;
        if (testMode)
        {
            AnnouncementCanvasController.MakeAnnouncement("game master loaded");
        }
        autosaveTimer = AUTOSAVE_TIME;
    }
예제 #17
0
    //

    private void Awake()
    {
        gameRules = GameRules.defaultRules;
        if (testMode && test_gameStartSettings != null)
        {
            _applyingGameStartSettings = test_gameStartSettings;
            test_gameStartSettings     = null;
        }
        if (_applyingGameStartSettings == null && startSettings == null)
        {
            _applyingGameStartSettings = GameStartSettings.GetDefaultStartSettings();
        }
        if (startSettings == null)
        {
            startSettings = _applyingGameStartSettings;
            _applyingGameStartSettings = null;
        }
        gameMode = startSettings.DefineGameMode();
        if (gameMode == GameMode.MainMenu)
        {
            Destroy(gameObject);
            return;
        }
        if (realMaster != null & realMaster != this)
        {
            Destroy(realMaster);
            realMaster = this;
            return;
        }
        realMaster    = this;
        sceneClearing = false;
        //
        uicontroller = UIController.GetCurrent();
        //
        if (PoolMaster.current == null)
        {
            PoolMaster pm = gameObject.AddComponent(typeof(PoolMaster)) as PoolMaster;
            pm.Load();
        }
        if (gameMode == GameMode.Survival)
        {
            globalMap = InitializeGlobalMap();
        }
        if (environmentMaster == null)
        {
            environmentMaster = new GameObject("Environment master").AddComponent <EnvironmentMaster>();
        }
        environmentMaster.Prepare();

        if (audiomaster == null)
        {
            audiomaster = gameObject.AddComponent <Audiomaster>();
            audiomaster.Prepare();
        }
        if (geologyModule == null)
        {
            geologyModule = gameObject.AddComponent <GeologyModule>();
        }

        Screen.sleepTimeout = SleepTimeout.NeverSleep;
    }
예제 #18
0
 public void Editor_Start()
 {
     GameMaster.StartNewGame(GameStartSettings.GetEditorStartSettings(editor_chunkSizeValue));
 }
예제 #19
0
    void Start()
    {
        if (gameStarted)
        {
            return;
        }

        if (gameMode != GameMode.Editor)
        {
            difficulty = gameStartSettings.difficulty;
            SetDefaultValues();
            //byte chunksize = gss.chunkSize;
            byte chunksize;
            chunksize = gameStartSettings.chunkSize;
            if (testMode && savenameToLoad != string.Empty)
            {
                gameStartSettings = new GameStartSettings(ChunkGenerationMode.GameLoading);
                savename          = savenameToLoad;
            }
            if (gameStartSettings.generationMode != ChunkGenerationMode.GameLoading)
            {
                if (gameStartSettings.generationMode != ChunkGenerationMode.DontGenerate)
                {
                    if (gameStartSettings.generationMode != ChunkGenerationMode.TerrainLoading)
                    {
                        Constructor.ConstructChunk(chunksize, gameStartSettings.generationMode);
                        // Constructor.ConstructBlock(chunksize);
                        if (gameStartSettings.generationMode == ChunkGenerationMode.Peak)
                        {
                            environmentMaster.PrepareIslandBasis(ChunkGenerationMode.Peak);
                        }
                    }
                    else
                    {
                        LoadTerrain(SaveSystemUI.GetTerrainsPath() + '/' + savename + '.' + SaveSystemUI.TERRAIN_FNAME_EXTENSION);
                    }
                }
                FollowingCamera.main.ResetTouchRightBorder();
                FollowingCamera.main.CameraRotationBlock(false);
                warProximity   = 0.01f;
                layerCutHeight = Chunk.chunkSize; prevCutHeight = layerCutHeight;
                switch (startGameWith)
                {
                case GameStart.Zeppelin:
                    Instantiate(Resources.Load <GameObject>("Prefs/Zeppelin"));
                    if (needTutorial)
                    {
                        GameLogUI.EnableDecisionWindow(null, Localization.GetTutorialHint(LocalizedTutorialHint.Landing));
                    }
                    else
                    {
                        GameLogUI.MakeAnnouncement(Localization.GetAnnouncementString(GameAnnouncements.SetLandingPoint));
                    }
                    break;

                case GameStart.Headquarters:
                    var   sblocks = mainChunk.surfaces;
                    Plane sb      = sblocks[Random.Range(0, sblocks.Length)];
                    int   xpos    = sb.pos.x;
                    int   zpos    = sb.pos.z;

                    Structure s;
                    if (testMode)
                    {
                        s = HeadQuarters.GetHQ(6);
                        weNeedNoResources = true;
                    }
                    else
                    {
                        weNeedNoResources = false;
                        s = HeadQuarters.GetHQ(1);
                    }

                    Plane b = mainChunk.GetHighestSurfacePlane(xpos, zpos);
                    s.SetBasement(b, PixelPosByte.zero);


                    sb = mainChunk.GetHighestSurfacePlane(xpos - 1, zpos + 1);
                    if (sb == null)
                    {
                        sb = mainChunk.GetHighestSurfacePlane(xpos, zpos + 1);
                        if (sb == null)
                        {
                            sb = mainChunk.GetHighestSurfacePlane(xpos + 1, zpos + 1);
                            if (sb == null)
                            {
                                sb = mainChunk.GetHighestSurfacePlane(xpos - 1, zpos);
                                if (sb == null)
                                {
                                    sb = mainChunk.GetHighestSurfacePlane(xpos + 1, zpos);
                                    if (sb == null)
                                    {
                                        sb = mainChunk.GetHighestSurfacePlane(xpos - 1, zpos - 1);
                                        if (sb == null)
                                        {
                                            sb = mainChunk.GetHighestSurfacePlane(xpos, zpos - 1);
                                            if (sb == null)
                                            {
                                                sb = mainChunk.GetHighestSurfacePlane(xpos + 1, zpos - 1);
                                                if (sb == null)
                                                {
                                                    print("bad generation, do something!");
                                                }
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }
                    StorageHouse firstStorage = Structure.GetStructureByID(Structure.STORAGE_0_ID) as StorageHouse;
                    firstStorage.SetBasement(sb, PixelPosByte.zero);
                    SetStartResources();
                    break;
                }
                FollowingCamera.main.WeNeedUpdate();
            }
            else
            {
                LoadGame(SaveSystemUI.GetSavesPath() + '/' + savename + ".sav");
            }
        }
        else
        {
            gameObject.AddComponent <PoolMaster>().Load();
            mainChunk = new GameObject("chunk").AddComponent <Chunk>();
            int size = Chunk.chunkSize;
            int[,,] blocksArray = new int[size, size, size];
            size /= 2;
            blocksArray[size, size, size] = ResourceType.STONE_ID;
            mainChunk.CreateNewChunk(blocksArray);
        }

        { // set look point
            FollowingCamera.camBasisTransform.position = sceneCenter;
        }
        gameStarted = true;
    }
예제 #20
0
 static GameStartSettings()
 {
     Empty = new GameStartSettings(ChunkGenerationMode.Standart, 16, Difficulty.Normal);
 }
예제 #21
0
 public GameStartSettings GetStartSettings()
 {
     //if (scenarioID == 0)
     return(GameStartSettings.GetTutorialSettings());
 }
예제 #22
0
    public void StartGame()
    {
        ChunkGenerationSettings cgs = null;

        switch (chunkPrepareAction)
        {
        case ChunkPreparingAction.Generate: cgs = ChunkGenerationSettings.GetGenerationSettings(chunkGenerationMode, (byte)sizeSlider.value); break;

        case ChunkPreparingAction.Load: cgs = ChunkGenerationSettings.GetLoadingSettings(selectedSaveName); break;

        default: cgs = ChunkGenerationSettings.GetNoActionSettings(); break;
        }
        //

        //
        switch (selectedGameMode)
        {
        case GameMode.Survival:
        {
            if (GameConstants.NeedTutorialNote())
            {
                askWindowText.text   = Localization.GetPhrase(LocalizedPhrase.AskNeedTutorial);
                askWindow_left.text  = Localization.GetWord(LocalizedWord.Tutorial);
                askWindow_leftAction = () => {
                    GameMaster.StartNewGame(GameStartSettings.GetTutorialSettings());
                    askWindow.SetActive(false);
                };
                askWindow_right.text  = Localization.GetWord(LocalizedWord.Cancel);
                askWindow_rightAction = () =>
                {
                    GameConstants.DisableTutorialNote();
                    this.StartGame();
                    askWindow.SetActive(false);
                };
                askWindow.SetActive(true);
                return;
            }
            //
            GameMaster.StartNewGame(
                GameStartSettings.GetStartSettings(GameMode.Survival, cgs, (Difficulty)difficultyDropdown.value, StartFoundingType.Zeppelin)
                );
            break;
        }

        case GameMode.Editor:
        {
            GameMaster.StartNewGame(
                GameStartSettings.GetStartSettings(GameMode.Editor, cgs, (Difficulty)difficultyDropdown.value, StartFoundingType.Zeppelin)
                );
            break;
        }

        case GameMode.Scenario:
        {
            if (ng_selectedScenarioIndex != -1)
            {
                GameMaster.StartNewGame(
                    scenariosRepresentators[ng_selectedScenarioIndex].GetStartSettings()
                    );
            }
            break;
        }
        }
    }
예제 #23
0
 public void SaveLoadButton()
 {
     if (lastSelectedIndex == -1)
     {
         return;
     }
     if (saveMode)
     {
         submitWindow.SetActive(true);
         submitQuestionText.text = Localization.GetWord(LocalizedWord.Rewrite) + '?';
         submitButtonText.text   = Localization.GetWord(LocalizedWord.Yes);
         rejectButtonText.text   = Localization.GetWord(LocalizedWord.Cancel);
         deleteSubmit            = false;
     }
     else
     {
         if (terrainsLoading)
         {// ЗАГРУЗКА  УРОВНЕЙ  ДЛЯ  РЕДАКТОРА
             string fullPath = Application.persistentDataPath + "/Terrains/" + saveNames[lastSelectedIndex] + '.' + TERRAIN_FNAME_EXTENSION;
             if (ingame)
             {
                 if (GameMaster.realMaster.LoadTerrain(fullPath))
                 {
                     gameObject.SetActive(false);
                 }
             }
             else
             {
                 // теоретический сценарий, не должен использоваться
                 if (File.Exists(fullPath))
                 {
                     GameMaster.savename = saveNames[lastSelectedIndex];
                     GameStartSettings gss = new GameStartSettings(ChunkGenerationMode.TerrainLoading);
                     GameMaster.gameStartSettings = gss;
                     SceneManager.LoadScene(EDITOR_LEVEL_NUMBER);
                 }
                 else
                 {
                     saveNames[lastSelectedIndex] = "File not exist";
                 }
             }
         }
         else
         {// ЗАГРУЗКА  УРОВНЕЙ  ДЛЯ  ИГРЫ
             string fullPath = Application.persistentDataPath + "/Saves/" + saveNames[lastSelectedIndex] + '.' + SAVE_FNAME_EXTENSION;
             if (ingame)
             {
                 if (GameMaster.realMaster.LoadGame(fullPath))
                 {
                     gameObject.SetActive(false);
                     UIController.current.MakeAnnouncement(Localization.GetAnnouncementString(GameAnnouncements.GameLoaded));
                 }
                 else
                 {
                     string s = Localization.GetAnnouncementString(GameAnnouncements.LoadingFailed);
                     UIController.current.MakeAnnouncement(s);
                     saveNames[lastSelectedIndex] = s;
                 }
             }
             else
             {
                 if (File.Exists(fullPath))
                 {
                     GameMaster.savename = saveNames[lastSelectedIndex];
                     GameStartSettings gss = new GameStartSettings(ChunkGenerationMode.GameLoading);
                     GameMaster.gameStartSettings = gss;
                     SceneManager.LoadScene(GAME_LEVEL_NUMBER);
                 }
                 else
                 {
                     saveNames[lastSelectedIndex] = "File not exist";
                 }
             }
         }
     }
 }