Ejemplo n.º 1
0
    public string GetSavenameFullpath()
    {
        if (savename != null)
        {
            switch (gameMode)
            {
            case GameMode.Survival:
                if (chunkGenerationSettings.preparingActionMode != ChunkPreparingAction.Load)
                {
                    return(SaveSystemUI.GetGameSaveFullpath(savename));
                }
                else
                {
                    return(SaveSystemUI.GetTerrainSaveFullpath(savename));
                }

            case GameMode.Editor: return(SaveSystemUI.GetTerrainSaveFullpath(savename));

            default: if (loadTerrain)
                {
                    return(SaveSystemUI.GetTerrainSaveFullpath(savename));
                }
                else
                {
                    return(SaveSystemUI.GetGameSaveFullpath(savename));
                }
            }
        }
        return(string.Empty);
    }
Ejemplo n.º 2
0
    private void Start()
    {
        buttonsImages[(int)currentAction].overrideSprite = PoolMaster.gui_overridingSprite;
        for (int i = 0; i < buttonsImages.Length; i++)
        {
            ClickAction ca = (ClickAction)i;
            buttonsImages[i].GetComponent <Button>().onClick.AddListener(() => this.ChangeClickAction(ca));
        }
        materialButtonImage.uvRect = ResourceType.GetResourceIconRect(chosenMaterialId);
        materialNameTextField.text = Localization.GetResourceName(chosenMaterialId);
        if (saveSystem == null)
        {
            saveSystem = SaveSystemUI.Initialize(UIController.GetCurrent().GetCurrentCanvasTransform());
        }
        if (!actionsPanel.activeSelf)
        {
            ActionsPanel();
        }

        FollowingCamera.main.ResetTouchRightBorder();
        FollowingCamera.main.CameraRotationBlock(false);
        touchscreen = FollowingCamera.touchscreen;
        touchZone.SetActive(touchscreen);
        LocalizeTitles();
    }
Ejemplo n.º 3
0
    public bool SaveGame(string name)
    { // заменить потом на persistent -  постоянный путь
        SetPause(true);

        string path = SaveSystemUI.GetSavesPath() + '/';

        if (!Directory.Exists(path))
        {
            Directory.CreateDirectory(path);
        }
        FileStream fs = File.Create(path + name + '.' + SaveSystemUI.SAVE_FNAME_EXTENSION);

        savename = name;
        //сразу передавать файловый поток для записи, чтобы не забивать озу
        #region gms mainPartFilling
        fs.Write(System.BitConverter.GetBytes(GameConstants.SAVE_SYSTEM_VERSION), 0, 4);
        // start writing
        fs.Write(System.BitConverter.GetBytes(gameSpeed), 0, 4);
        fs.Write(System.BitConverter.GetBytes(lifeGrowCoefficient), 0, 4);
        fs.Write(System.BitConverter.GetBytes(demolitionLossesPercent), 0, 4);
        fs.Write(System.BitConverter.GetBytes(lifepowerLossesPercent), 0, 4);
        fs.Write(System.BitConverter.GetBytes(LUCK_COEFFICIENT), 0, 4);
        fs.Write(System.BitConverter.GetBytes(sellPriceCoefficient), 0, 4);
        fs.Write(System.BitConverter.GetBytes(tradeVesselsTrafficCoefficient), 0, 4);
        fs.Write(System.BitConverter.GetBytes(upgradeDiscount), 0, 4);
        fs.Write(System.BitConverter.GetBytes(upgradeCostIncrease), 0, 4);
        fs.Write(System.BitConverter.GetBytes(warProximity), 0, 4);
        //40
        fs.WriteByte((byte)difficulty);    // 41
        fs.WriteByte((byte)startGameWith); // 42
        fs.WriteByte(prevCutHeight);       //43
        fs.WriteByte(day);                 // 44
        fs.WriteByte(month);               //45
        fs.Write(System.BitConverter.GetBytes(year), 0, 4);
        fs.Write(System.BitConverter.GetBytes(timeGone), 0, 4);
        fs.Write(System.BitConverter.GetBytes(gearsDegradeSpeed), 0, 4);
        fs.Write(System.BitConverter.GetBytes(labourTimer), 0, 4);
        fs.Write(System.BitConverter.GetBytes(RecruitingCenter.GetHireCost()), 0, 4);
        //65 (+4) end
        #endregion

        DockSystem.SaveDockSystem(fs);
        globalMap.Save(fs);
        environmentMaster.Save(fs);
        Artifact.SaveStaticData(fs);
        Crew.SaveStaticData(fs);
        mainChunk.SaveChunkData(fs);
        colonyController.Save(fs); // <------- COLONY CONTROLLER

        QuestUI.current.Save(fs);
        Expedition.SaveStaticData(fs);
        Knowledge.GetCurrent().Save(fs);
        fs.Position = 0;
        double hashsum = GetHashSum(fs, false);
        fs.Write(System.BitConverter.GetBytes(hashsum), 0, 8);
        fs.Close();
        SetPause(false);
        return(true);
    }
Ejemplo n.º 4
0
 private void Start()
 {
     buttonsImages[(int)currentAction].overrideSprite = PoolMaster.gui_overridingSprite;
     materialButtonImage.uvRect = ResourceType.GetTextureRect(chosenMaterialId);
     materialNameTextField.text = Localization.GetResourceName(chosenMaterialId);
     SaveSystemUI.Check(transform.root);
     SaveSystemUI.current.ingame = true;
 }
Ejemplo n.º 5
0
 public static void Check(Transform canvas)
 {
     if (current == null)
     {
         GameObject mainContainer = Instantiate(Resources.Load <GameObject>("UIPrefs/SaveSystemModule"), canvas);
         current = mainContainer.GetComponent <SaveSystemUI>();
     }
 }
Ejemplo n.º 6
0
 private void Awake()
 {
     if (current != null & current != this)
     {
         Destroy(current);
     }
     current = this;
 }
 private void Start()
 {
     if (saveSystem == null)
     {
         saveSystem = SaveSystemUI.Initialize(savePanelSpace);
     }
     LocalizeTitles();
     if (optionsPanel.activeSelf)
     {
         optionsPanel.SetActive(false);
     }
 }
Ejemplo n.º 8
0
    public bool SaveTerrain(string name)
    {
        string path = SaveSystemUI.GetTerrainsPath() + '/';

        if (!Directory.Exists(path))
        {
            Directory.CreateDirectory(path);
        }
        Stream fs = File.Create(path + name + '.' + SaveSystemUI.TERRAIN_FNAME_EXTENSION);

        fs.Write(System.BitConverter.GetBytes(GameConstants.SAVE_SYSTEM_VERSION), 0, 4);
        mainChunk.SaveChunkData(fs);
        fs.Close();
        return(true);
    }
Ejemplo n.º 9
0
    private void Start()
    {
        buttonsImages[(int)currentAction].overrideSprite = PoolMaster.gui_overridingSprite;
        materialButtonImage.uvRect = ResourceType.GetResourceIconRect(chosenMaterialId);
        materialNameTextField.text = Localization.GetResourceName(chosenMaterialId);
        if (saveSystem == null)
        {
            saveSystem = SaveSystemUI.Initialize(transform.root);
        }
        saveSystem.ingame = true;
        ActionsPanel();

        FollowingCamera.main.ResetTouchRightBorder();
        FollowingCamera.main.CameraRotationBlock(false);
        touchscreen = FollowingCamera.touchscreen;
        touchZone.SetActive(touchscreen);
        LocalizeTitles();
    }
Ejemplo n.º 10
0
    public void Start()
    {
        int k = 0;

        if (PlayerPrefs.HasKey(GameConstants.BASE_SETTINGS_PLAYERPREF))
        {
            k = PlayerPrefs.GetInt(GameConstants.BASE_SETTINGS_PLAYERPREF);
        }

        if ((k & 2) == 0)  // first launch
        {
            LODController.SetLODdistance(0.5f);
            GameObject g = Instantiate(Resources.Load <GameObject>("UIPrefs/firstLaunchPanel"), transform);
            g.GetComponent <FirstLaunchUI>().menuScript = this;
            transform.GetChild(0).gameObject.SetActive(false);
            authorsButton.gameObject.SetActive(false);
        }
        else
        {
            if (saveSystem == null)
            {
                saveSystem = SaveSystemUI.Initialize(transform.root);
            }

            availableGenerationModes = new List <ChunkGenerationMode>()
            {
                ChunkGenerationMode.Standart, ChunkGenerationMode.Cube, ChunkGenerationMode.Peak
            };
            List <string> genModenames = new List <string>();
            foreach (ChunkGenerationMode cmode in availableGenerationModes)
            {
                genModenames.Add(cmode.ToString());
            }
            generationTypeDropdown.AddOptions(genModenames);
            generationTypeDropdown.value = 0;
            newGameGenMode = availableGenerationModes[0];
            LocalizeTitles();
            transform.GetChild(0).gameObject.SetActive(true);
        }
        GameMaster.SetPause(false);
    }
Ejemplo n.º 11
0
    void Awake()
    {
        current = this;
        LocalizeButtonTitles();
        selectionFrame         = Instantiate(Resources.Load <GameObject>("Prefs/structureFrame")).transform;
        selectionFrameMaterial = selectionFrame.GetChild(0).GetComponent <MeshRenderer>().sharedMaterial;
        selectionFrame.gameObject.SetActive(false);
        iconsTexture     = Resources.Load <Texture>("Textures/Icons");
        resourcesTexture = Resources.Load <Texture>("Textures/resourcesIcons");
        buildingsTexture = Resources.Load <Texture>("Textures/buildingIcons");
        questUI          = _questUI;
        if (flyingMoneyOriginalPoint == Vector3.zero)
        {
            flyingMoneyOriginalPoint = moneyFlyingText.rectTransform.position;
        }

        SaveSystemUI.Check(transform.root);

        if (!localized)
        {
            LocalizeButtonTitles();
        }
    }
Ejemplo n.º 12
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;
    }
Ejemplo n.º 13
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;
    }
Ejemplo n.º 14
0
    public void NG_UsePresetButton()
    {
        newGameGenMode = ChunkGenerationMode.TerrainLoading;
        GameMaster.SetSavename(string.Empty);
        generationPanel.SetActive(false);
        generateButtonImage.overrideSprite = null;
        gameStartButton.interactable       = false;

        //preparing terrains list
        string        directoryPath  = SaveSystemUI.GetTerrainsPath();
        Transform     contentHolder  = terrainPresetsPanel.transform.GetChild(0).GetChild(0);
        RectTransform zeroButton     = contentHolder.GetChild(0).GetComponent <RectTransform>();
        bool          no_saves_found = true;

        if (Directory.Exists(directoryPath))
        {
            terrainSavenames = Directory.GetFiles(directoryPath, "*." + SaveSystemUI.TERRAIN_FNAME_EXTENSION);
            if (terrainSavenames.Length != 0)
            {
                no_saves_found = false;
                int c = contentHolder.childCount;
                int i = 0;
                zeroButton.GetComponent <Button>().interactable = true;
                for (; i < terrainSavenames.Length; i++)
                {
                    string s            = terrainSavenames[i];
                    int    lastSlashPos = s.LastIndexOf('\\'); // в редакторе так
                    if (lastSlashPos == -1)
                    {
                        lastSlashPos = s.LastIndexOf('/');
                    }
                    terrainSavenames[i] = s.Substring(lastSlashPos + 1, s.Length - lastSlashPos - 5); //  от последнего слеша до ".sav"
                    Transform t;
                    if (i < c)
                    {
                        t = contentHolder.GetChild(i); // 0 - example
                    }
                    else
                    {
                        t = Instantiate(zeroButton, contentHolder).transform;
                        t.transform.localPosition = zeroButton.localPosition + Vector3.down * (zeroButton.rect.height * i + 16);
                    }
                    t.gameObject.SetActive(true);
                    t.GetComponent <Button>().onClick.RemoveAllListeners(); // т.к. на example тоже может висеть listener
                    t.GetChild(0).GetComponent <Text>().text = terrainSavenames[i];
                    int index = i;
                    t.GetComponent <Button>().onClick.AddListener(() =>
                    {
                        this.NG_SelectTerrain(index);
                    });
                    t.GetComponent <Image>().overrideSprite = null;
                }
                if (i < c)
                {
                    i++;
                    for (; i < c; i++)
                    {
                        contentHolder.GetChild(i).gameObject.SetActive(false);
                    }
                }
            }
        }
        if (no_saves_found)
        {
            terrainSavenames = null;
            zeroButton.GetChild(0).GetComponent <Text>().text = Localization.GetPhrase(LocalizedPhrase.NoSavesFound);
            zeroButton.GetComponent <Button>().interactable   = false;
            zeroButton.GetComponent <Image>().overrideSprite  = null;
            zeroButton.gameObject.SetActive(true);
            if (contentHolder.childCount > 1)
            {
                while (contentHolder.childCount > 1)
                {
                    Destroy(contentHolder.GetChild(1));
                }
            }
        }
        terrainPresetsPanel.SetActive(true);
        usePresetsButtonImage.overrideSprite = overridingSprite;
    }
Ejemplo n.º 15
0
 private void Start()
 {
     currentGraphicsLevel = QualitySettings.GetQualityLevel();
     SaveSystemUI.Check(transform.root);
 }