//! Saves the player's location and money.
    public void SavePlayerData()
    {
        playerInventory.SaveData();
        GameObject.Find("LanderCargo").GetComponent <InventoryManager>().SaveData();
        FileBasedPrefs.SetBool(stateManager.worldName + "oldWorld", true);

        if (PlayerPrefsX.GetPersistentBool("multiplayer") == true)
        {
            PlayerPrefsX.SetPersistentVector3(stateManager.worldName + "playerPosition", transform.position);
            PlayerPrefs.SetInt(stateManager.worldName + "money", money);
        }
        else
        {
            PlayerPrefsX.SetVector3(stateManager.worldName + "playerPosition", transform.position);
            FileBasedPrefs.SetInt(stateManager.worldName + "money", money);
        }
    }
    void BoolTests()
    {
        FileBasedPrefs.SetBool("test", true);

        if (!FileBasedPrefs.GetBool("test").Equals(true))
        {
            Debug.LogException(new System.Exception("SetBoolFailed"));
            return;
        }

        FileBasedPrefs.SetBool("test", true);

        if (!FileBasedPrefs.GetBool("test").Equals(true))
        {
            Debug.LogException(new System.Exception("ReplaceBoolFailed"));
            return;
        }

        if (!FileBasedPrefs.HasKeyForBool("test"))
        {
            Debug.LogException(new System.Exception("HasKeyForBoolFailed"));
            return;
        }

        FileBasedPrefs.DeleteBool("test");

        if (!FileBasedPrefs.GetBool("test").Equals(false))
        {
            Debug.LogException(new System.Exception("DeleteBoolFailed"));
            return;
        }

        FileBasedPrefs.SetBool("test", true);

        if (!FileBasedPrefs.GetBool("test").Equals(true))
        {
            Debug.LogException(new System.Exception("ReplaceBoolFailed"));
            return;
        }

        Debug.Log("Bool Tests Passed");
    }
Example #3
0
    public void SaveGame() //30 переменных
    {
        int random = Random.Range(1, 3);

        if (random != 1)
        {
            MatchThree.main.bed = false;
            TexSaveGame.text    = LeanLocalization.GetTranslationText("Parametrs/SaveBedBroken");
            ChangeBG.main.UpdateStatusDevice();
            AudioAssistant.Shot("Break");
        }
        else
        {
            TexSaveGame.text = LeanLocalization.GetTranslationText("Parametrs/SaveBedWork");
        }

        FileBasedPrefs.SetInt("LifeDays", MatchThree.main.LifeDays);
        FileBasedPrefs.SetInt("TimeHour", MatchThree.main.TimeHour);
        FileBasedPrefs.SetInt("TimeMinute", MatchThree.main.TimeMinute);
        FileBasedPrefs.SetInt("LastNalogDay", LastNalogDay);

        FileBasedPrefs.SetInt("eat", MatchThree.main.eat);
        FileBasedPrefs.SetInt("energy", MatchThree.main.energy);
        FileBasedPrefs.SetInt("coffee", MatchThree.main.coffee);
        FileBasedPrefs.SetInt("hygiene", MatchThree.main.hygiene);
        FileBasedPrefs.SetInt("money", MatchThree.main.money);

        FileBasedPrefs.SetBool("coffeevarka", MatchThree.main.coffeevarka);
        FileBasedPrefs.SetBool("multvarka", MatchThree.main.multvarka);
        FileBasedPrefs.SetBool("icebox", MatchThree.main.icebox);
        FileBasedPrefs.SetBool("shower", MatchThree.main.shower);
        FileBasedPrefs.SetBool("bed", MatchThree.main.bed);
        FileBasedPrefs.SetBool("computer", MatchThree.main.computer);

        FileBasedPrefs.SetFloat("IncriseMoney", (float)IncriseMoney);

        FileBasedPrefs.SetFloat("Nalogi", (float)Nalogi);
        FileBasedPrefs.SetFloat("NDS", (float)NDS);
        FileBasedPrefs.SetFloat("Priceincrease", (float)Priceincrease);
        FileBasedPrefs.SetFloat("Rentincrease", (float)Rentincrease);

        FileBasedPrefs.SetInt("numproducts", numproducts);
        FileBasedPrefs.SetInt("numcoffee", numcoffee);

        FileBasedPrefs.SetInt("MovesinGame", MovesinGame);
        FileBasedPrefs.SetInt("GameWins", GameWins);
        FileBasedPrefs.SetInt("MoneyProfit", MoneyProfit);
        FileBasedPrefs.SetInt("MoneyOutgo", MoneyOutgo);

        FileBasedPrefs.SetBool("FirstKitchen", flowchart.GetBooleanVariable("FirstKitchen"));
        FileBasedPrefs.SetBool("FirstShower", flowchart.GetBooleanVariable("FirstShower"));
        FileBasedPrefs.SetBool("FirstBed", flowchart.GetBooleanVariable("FirstBed"));
        FileBasedPrefs.SetBool("Firstcabinet", flowchart.GetBooleanVariable("Firstcabinet"));

        FileBasedPrefs.SetBool("HaveCompDialog", flowchart.GetBooleanVariable("HaveCompDialog"));  // Показывался ли диалог со сломаным пк

        //Есть сохранение
        FileBasedPrefs.SetBool("HaveSaveFile", true);
        HaveSaveFile = true;

        UIAssistant.main.ShowPage("CompleteSave");

        Debug.Log(Application.persistentDataPath);
    }
    //! Called once per frame by unity engine.
    public void Update()
    {
        if (FileBasedPrefs.initialized == true)
        {
            if (FileBasedPrefs.GetBool(GetComponent <StateManager>().worldName + "Initialized") == false)
            {
                if (lander.GetComponent <InventoryManager>().initialized == true)
                {
                    lander.GetComponent <InventoryManager>().AddItem("Solar Panel", 9);
                    lander.GetComponent <InventoryManager>().AddItem("Universal Conduit", 8);
                    lander.GetComponent <InventoryManager>().AddItem("Storage Container", 4);
                    lander.GetComponent <InventoryManager>().AddItem("Smelter", 3);
                    lander.GetComponent <InventoryManager>().AddItem("Universal Extractor", 2);
                    lander.GetComponent <InventoryManager>().AddItem("Dark Matter Conduit", 1);
                    lander.GetComponent <InventoryManager>().AddItem("Dark Matter Collector", 1);
                    FileBasedPrefs.SetBool(GetComponent <StateManager>().worldName + "Initialized", true);
                }
            }
            else
            {
                if (loadedBlockPhysics == false)
                {
                    if (PlayerPrefsX.GetPersistentBool("multiplayer") == false)
                    {
                        blockPhysics = PlayerPrefsX.GetPersistentBool("blockPhysics");
                    }
                    else
                    {
                        blockPhysics = false;
                    }
                    loadedBlockPhysics = true;
                }
                if (loadedHazardsEnabled == false)
                {
                    hazardsEnabled       = PlayerPrefsX.GetPersistentBool("hazardsEnabled");
                    loadedHazardsEnabled = true;
                }
                if (loadedMeteorTimer == false)
                {
                    meteorShowerTimer = FileBasedPrefs.GetFloat(GetComponent <StateManager>().worldName + "meteorShowerTimer");
                    loadedMeteorTimer = true;
                }
                if (loadedPirateTimer == false)
                {
                    pirateAttackTimer = FileBasedPrefs.GetFloat(GetComponent <StateManager>().worldName + "pirateAttackTimer");
                    loadedPirateTimer = true;
                }
            }

            // A save game request is pending.
            if (dataSaveRequested == true)
            {
                if (GetComponent <StateManager>().saving == false && GetComponent <StateManager>().AddressManagerBusy() == false)
                {
                    UnityEngine.Debug.Log("Saving world...");
                    GetComponent <StateManager>().SaveData();
                    dataSaveRequested = false;
                }
                else if (GetComponent <StateManager>().AddressManagerBusy() == true)
                {
                    if (GetComponent <GameManager>().simulationSpeed < 0.1f)
                    {
                        userSimSpeed  = GetComponent <GameManager>().simulationSpeed;
                        resetSimSpeed = true;
                    }
                    GetComponent <GameManager>().simulationSpeed = 0.1f;
                }
            }
            else if (resetSimSpeed == true)
            {
                GetComponent <GameManager>().simulationSpeed = userSimSpeed;
                resetSimSpeed = false;
            }

            // Used to ensure components are removed before combining meshes.
            if (replacingMeshFilters == true)
            {
                mfDelay += 1 * Time.deltaTime;
                if (mfDelay > 1)
                {
                    meshManager.CombineMeshes();
                    mfDelay = 0;
                    replacingMeshFilters = false;
                }
            }

            if (GetComponent <StateManager>().worldLoaded == true)
            {
                hazardManager.UpdateHazards();
            }

            if (memoryCoroutineBusy == false)
            {
                memoryCoroutine = StartCoroutine(ManageMemory());
            }
        }
    }
Example #5
0
    private IEnumerator PaintMesh(GameObject[] holders, string name)
    {
        playerController.machineGUIopen = false;
        BlockDictionary blockDictionary = new BlockDictionary(playerController);
        Color           color           = new Color(playerController.paintRed, playerController.paintGreen, playerController.paintBlue);

        foreach (GameObject holder in holders)
        {
            holder.GetComponent <Renderer>().material.color = color;
            FileBasedPrefs.SetBool(playerController.stateManager.worldName + name + holder.GetComponent <MeshPainter>().ID + "painted", true);
            yield return(null);
        }
        int interval = 0;

        if (name == "glassHolder")
        {
            Glass[] allGlassBlocks = Object.FindObjectsOfType <Glass>();
            foreach (Glass block in allGlassBlocks)
            {
                block.GetComponent <Renderer>().material.color = color;
                interval++;
                if (interval >= 500)
                {
                    interval = 0;
                    yield return(null);
                }
            }
        }
        if (name == "brickHolder")
        {
            Transform[] allBuiltObjects = playerController.gameManager.builtObjects.GetComponentsInChildren <Transform>(true);
            foreach (Transform block in allBuiltObjects)
            {
                if (block.GetComponent <Brick>() != null)
                {
                    block.GetComponent <Renderer>().material.color = color;
                    interval++;
                    if (interval >= 500)
                    {
                        interval = 0;
                        yield return(null);
                    }
                }
            }
        }
        if (name == "ironHolder")
        {
            Transform[] allBuiltObjects = playerController.gameManager.builtObjects.GetComponentsInChildren <Transform>(true);
            foreach (Transform block in allBuiltObjects)
            {
                if (block.GetComponent <IronBlock>() != null)
                {
                    block.GetComponent <Renderer>().material.color = color;
                    interval++;
                    if (interval >= 500)
                    {
                        interval = 0;
                        yield return(null);
                    }
                }
            }
        }
        if (name == "steelHolder")
        {
            Transform[] allBuiltObjects = playerController.gameManager.builtObjects.GetComponentsInChildren <Transform>(true);
            foreach (Transform block in allBuiltObjects)
            {
                if (block.GetComponent <Steel>() != null)
                {
                    block.GetComponent <Renderer>().material.color = color;
                    interval++;
                    if (interval >= 500)
                    {
                        interval = 0;
                        yield return(null);
                    }
                }
            }
        }
    }
    //! Saves the world.
    public IEnumerator SaveDataCoroutine()
    {
        stateManager.dataSaved = false;
        stateManager.saving    = true;
        currentObject          = 0;
        int        saveInterval  = 0;
        int        objectID      = 0;
        string     worldID       = "";
        string     objectName    = "";
        List <int> machineIdList = new List <int>();
        List <int> blockIdList   = new List <int>();

        GameObject[]  machines     = GameObject.FindGameObjectsWithTag("Machine");
        Transform[]   blocks       = stateManager.builtObjects.GetComponentsInChildren <Transform>(true);
        MeshPainter[] meshPainters = Object.FindObjectsOfType <MeshPainter>();

        if (totalObjects == 0)
        {
            totalObjects = machines.Length + blocks.Length + meshPainters.Length;
        }

        foreach (GameObject go in machines)
        {
            if (go != null)
            {
                if (go.transform.parent != stateManager.builtObjects.transform)
                {
                    Vector3    objectPosition = go.transform.position;
                    Quaternion objectRotation = go.transform.rotation;
                    if (go.GetComponent <Auger>() != null)
                    {
                        objectName = stateManager.worldName + "Auger";
                        worldID    = go.GetComponent <Auger>().ID;
                        if (worldID != "unassigned" && worldID != "")
                        {
                            objectID = int.Parse(worldID.Substring(objectName.Length));
                            machineIdList.Add(objectID);
                            int   speed  = go.GetComponent <Auger>().speed;
                            float amount = go.GetComponent <Auger>().amount;
                            FileBasedPrefs.SetInt(worldID + "speed", speed);
                            FileBasedPrefs.SetFloat(worldID + "amount", amount);
                            FileBasedPrefs.SetBool(worldID + "falling", go.GetComponent <PhysicsHandler>().falling);
                            FileBasedPrefs.SetBool(worldID + "fallingStack", go.GetComponent <PhysicsHandler>().fallingStack);
                        }
                    }
                    if (go.GetComponent <ElectricLight>() != null)
                    {
                        objectName = stateManager.worldName + "ElectricLight";
                        worldID    = go.GetComponent <ElectricLight>().ID;
                        if (worldID != "unassigned" && worldID != "")
                        {
                            objectID = int.Parse(worldID.Substring(objectName.Length));
                            machineIdList.Add(objectID);
                            FileBasedPrefs.SetBool(worldID + "falling", go.GetComponent <PhysicsHandler>().falling);
                            FileBasedPrefs.SetBool(worldID + "fallingStack", go.GetComponent <PhysicsHandler>().fallingStack);
                        }
                    }
                    if (go.GetComponent <DarkMatterCollector>() != null)
                    {
                        objectName = stateManager.worldName + "DarkMatterCollector";
                        worldID    = go.GetComponent <DarkMatterCollector>().ID;
                        if (worldID != "unassigned" && worldID != "")
                        {
                            objectID = int.Parse(worldID.Substring(objectName.Length));
                            machineIdList.Add(objectID);
                            int   speed            = go.GetComponent <DarkMatterCollector>().speed;
                            float darkMatterAmount = go.GetComponent <DarkMatterCollector>().darkMatterAmount;
                            FileBasedPrefs.SetInt(worldID + "speed", speed);
                            FileBasedPrefs.SetFloat(worldID + "darkMatterAmount", darkMatterAmount);
                            FileBasedPrefs.SetBool(worldID + "falling", go.GetComponent <PhysicsHandler>().falling);
                            FileBasedPrefs.SetBool(worldID + "fallingStack", go.GetComponent <PhysicsHandler>().fallingStack);
                        }
                    }
                    if (go.GetComponent <DarkMatterConduit>() != null)
                    {
                        objectName = stateManager.worldName + "DarkMatterConduit";
                        worldID    = go.GetComponent <DarkMatterConduit>().ID;
                        if (worldID != "unassigned" && worldID != "")
                        {
                            objectID = int.Parse(worldID.Substring(objectName.Length));
                            machineIdList.Add(objectID);
                            string inputID          = go.GetComponent <DarkMatterConduit>().inputID;
                            string outputID         = go.GetComponent <DarkMatterConduit>().outputID;
                            int    speed            = go.GetComponent <DarkMatterConduit>().speed;
                            float  darkMatterAmount = go.GetComponent <DarkMatterConduit>().darkMatterAmount;
                            int    range            = go.GetComponent <DarkMatterConduit>().range;
                            FileBasedPrefs.SetString(worldID + "inputID", inputID);
                            FileBasedPrefs.SetString(worldID + "outputID", outputID);
                            FileBasedPrefs.SetInt(worldID + "speed", speed);
                            FileBasedPrefs.SetInt(worldID + "range", range);
                            FileBasedPrefs.SetFloat(worldID + "darkMatterAmount", darkMatterAmount);
                            FileBasedPrefs.SetBool(worldID + "falling", go.GetComponent <PhysicsHandler>().falling);
                            FileBasedPrefs.SetBool(worldID + "fallingStack", go.GetComponent <PhysicsHandler>().fallingStack);
                        }
                    }
                    if (go.GetComponent <RailCart>() != null)
                    {
                        objectName = stateManager.worldName + "RailCart";
                        worldID    = go.GetComponent <RailCart>().ID;
                        if (worldID != "unassigned" && worldID != "")
                        {
                            objectID = int.Parse(worldID.Substring(objectName.Length));
                            machineIdList.Add(objectID);
                            string  targetID      = go.GetComponent <RailCart>().targetID;
                            Vector3 startPosition = go.GetComponent <RailCart>().startPosition;
                            if (go.GetComponent <InventoryManager>() != null)
                            {
                                go.GetComponent <InventoryManager>().SaveData();
                            }
                            FileBasedPrefs.SetString(worldID + "targetID", targetID);
                            PlayerPrefsX.SetVector3(worldID + "startPosition", startPosition);
                        }
                    }
                    if (go.GetComponent <RailCartHub>() != null)
                    {
                        objectName = stateManager.worldName + "RailCartHub";
                        worldID    = go.GetComponent <RailCartHub>().ID;
                        if (worldID != "unassigned" && worldID != "")
                        {
                            objectID = int.Parse(worldID.Substring(objectName.Length));
                            machineIdList.Add(objectID);
                            string inputID    = go.GetComponent <RailCartHub>().inputID;
                            string outputID   = go.GetComponent <RailCartHub>().outputID;
                            int    range      = go.GetComponent <RailCartHub>().range;
                            bool   centralHub = go.GetComponent <RailCartHub>().centralHub;
                            bool   stop       = go.GetComponent <RailCartHub>().stop;
                            int    circuit    = go.GetComponent <RailCartHub>().circuit;
                            float  stopTime   = go.GetComponent <RailCartHub>().stopTime;
                            FileBasedPrefs.SetString(worldID + "inputID", inputID);
                            FileBasedPrefs.SetString(worldID + "outputID", outputID);
                            FileBasedPrefs.SetInt(worldID + "range", range);
                            FileBasedPrefs.SetInt(worldID + "circuit", circuit);
                            FileBasedPrefs.SetBool(worldID + "centralHub", centralHub);
                            FileBasedPrefs.SetBool(worldID + "stop", stop);
                            FileBasedPrefs.SetFloat(worldID + "stopTime", stopTime);
                            FileBasedPrefs.SetBool(worldID + "falling", go.GetComponent <PhysicsHandler>().falling);
                            FileBasedPrefs.SetBool(worldID + "fallingStack", go.GetComponent <PhysicsHandler>().fallingStack);
                        }
                    }
                    if (go.GetComponent <UniversalConduit>() != null)
                    {
                        objectName = stateManager.worldName + "UniversalConduit";
                        worldID    = go.GetComponent <UniversalConduit>().ID;
                        if (worldID != "unassigned" && worldID != "")
                        {
                            objectID = int.Parse(worldID.Substring(objectName.Length));
                            machineIdList.Add(objectID);
                            string inputID  = go.GetComponent <UniversalConduit>().inputID;
                            string outputID = go.GetComponent <UniversalConduit>().outputID;
                            string type     = go.GetComponent <UniversalConduit>().type;
                            int    speed    = go.GetComponent <UniversalConduit>().speed;
                            int    range    = go.GetComponent <UniversalConduit>().range;
                            float  amount   = go.GetComponent <UniversalConduit>().amount;
                            FileBasedPrefs.SetString(worldID + "inputID", inputID);
                            FileBasedPrefs.SetString(worldID + "outputID", outputID);
                            FileBasedPrefs.SetString(worldID + "type", type);
                            FileBasedPrefs.SetInt(worldID + "speed", speed);
                            FileBasedPrefs.SetInt(worldID + "range", range);
                            FileBasedPrefs.SetFloat(worldID + "amount", amount);
                            FileBasedPrefs.SetBool(worldID + "falling", go.GetComponent <PhysicsHandler>().falling);
                            FileBasedPrefs.SetBool(worldID + "fallingStack", go.GetComponent <PhysicsHandler>().fallingStack);
                        }
                    }
                    if (go.GetComponent <HeatExchanger>() != null)
                    {
                        objectName = stateManager.worldName + "HeatExchanger";
                        worldID    = go.GetComponent <HeatExchanger>().ID;
                        if (worldID != "unassigned" && worldID != "")
                        {
                            objectID = int.Parse(worldID.Substring(objectName.Length));
                            machineIdList.Add(objectID);
                            string inputID   = go.GetComponent <HeatExchanger>().inputID;
                            string outputID  = go.GetComponent <HeatExchanger>().outputID;
                            string inputType = go.GetComponent <HeatExchanger>().inputType;
                            int    speed     = go.GetComponent <HeatExchanger>().speed;
                            float  amount    = go.GetComponent <HeatExchanger>().amount;
                            FileBasedPrefs.SetString(worldID + "inputID", inputID);
                            FileBasedPrefs.SetString(worldID + "outputID", outputID);
                            FileBasedPrefs.SetString(worldID + "inputType", inputType);
                            FileBasedPrefs.SetInt(worldID + "speed", speed);
                            FileBasedPrefs.SetFloat(worldID + "amount", amount);
                            FileBasedPrefs.SetBool(worldID + "falling", go.GetComponent <PhysicsHandler>().falling);
                            FileBasedPrefs.SetBool(worldID + "fallingStack", go.GetComponent <PhysicsHandler>().fallingStack);
                        }
                    }
                    if (go.GetComponent <Retriever>() != null)
                    {
                        objectName = stateManager.worldName + "Retriever";
                        worldID    = go.GetComponent <Retriever>().ID;
                        if (worldID != "unassigned" && worldID != "")
                        {
                            objectID = int.Parse(worldID.Substring(objectName.Length));
                            machineIdList.Add(objectID);
                            string inputID  = go.GetComponent <Retriever>().inputID;
                            string outputID = go.GetComponent <Retriever>().outputID;
                            int    speed    = go.GetComponent <Retriever>().speed;
                            float  amount   = go.GetComponent <Retriever>().amount;
                            FileBasedPrefs.SetString(worldID + "inputID", inputID);
                            FileBasedPrefs.SetString(worldID + "outputID", outputID);
                            FileBasedPrefs.SetInt(worldID + "speed", speed);
                            FileBasedPrefs.SetFloat(worldID + "amount", amount);
                            FileBasedPrefs.SetBool(worldID + "falling", go.GetComponent <PhysicsHandler>().falling);
                            FileBasedPrefs.SetBool(worldID + "fallingStack", go.GetComponent <PhysicsHandler>().fallingStack);
                            if (go.GetComponent <InventoryManager>() != null)
                            {
                                go.GetComponent <InventoryManager>().SaveData();
                            }
                        }
                    }
                    if (go.GetComponent <AutoCrafter>() != null)
                    {
                        objectName = stateManager.worldName + "AutoCrafter";
                        worldID    = go.GetComponent <AutoCrafter>().ID;
                        if (worldID != "unassigned" && worldID != "")
                        {
                            objectID = int.Parse(worldID.Substring(objectName.Length));
                            machineIdList.Add(objectID);
                            string inputID = go.GetComponent <AutoCrafter>().inputID;
                            int    speed   = go.GetComponent <AutoCrafter>().speed;
                            FileBasedPrefs.SetString(worldID + "inputID", inputID);
                            FileBasedPrefs.SetInt(worldID + "speed", speed);
                            FileBasedPrefs.SetBool(worldID + "falling", go.GetComponent <PhysicsHandler>().falling);
                            FileBasedPrefs.SetBool(worldID + "fallingStack", go.GetComponent <PhysicsHandler>().fallingStack);
                            if (go.GetComponent <InventoryManager>() != null)
                            {
                                go.GetComponent <InventoryManager>().SaveData();
                            }
                        }
                    }
                    if (go.GetComponent <Smelter>() != null)
                    {
                        objectName = stateManager.worldName + "Smelter";
                        worldID    = go.GetComponent <Smelter>().ID;
                        if (worldID != "unassigned" && worldID != "")
                        {
                            objectID = int.Parse(worldID.Substring(objectName.Length));
                            machineIdList.Add(objectID);
                            string inputID    = go.GetComponent <Smelter>().inputID;
                            string outputID   = go.GetComponent <Smelter>().outputID;
                            string inputType  = go.GetComponent <Smelter>().inputType;
                            string outputType = go.GetComponent <Smelter>().outputType;
                            int    speed      = go.GetComponent <Smelter>().speed;
                            float  amount     = go.GetComponent <Smelter>().amount;
                            FileBasedPrefs.SetString(worldID + "inputID", inputID);
                            FileBasedPrefs.SetString(worldID + "outputID", outputID);
                            FileBasedPrefs.SetString(worldID + "inputType", inputType);
                            FileBasedPrefs.SetString(worldID + "outputType", outputType);
                            FileBasedPrefs.SetInt(worldID + "speed", speed);
                            FileBasedPrefs.SetFloat(worldID + "amount", amount);
                            FileBasedPrefs.SetBool(worldID + "falling", go.GetComponent <PhysicsHandler>().falling);
                            FileBasedPrefs.SetBool(worldID + "fallingStack", go.GetComponent <PhysicsHandler>().fallingStack);
                        }
                    }
                    if (go.GetComponent <Turret>() != null)
                    {
                        objectName = stateManager.worldName + "Turret";
                        worldID    = go.GetComponent <Turret>().ID;
                        if (worldID != "unassigned" && worldID != "")
                        {
                            objectID = int.Parse(worldID.Substring(objectName.Length));
                            machineIdList.Add(objectID);
                            int speed = go.GetComponent <Turret>().speed;
                            FileBasedPrefs.SetInt(worldID + "speed", speed);
                            FileBasedPrefs.SetBool(worldID + "falling", go.GetComponent <PhysicsHandler>().falling);
                            FileBasedPrefs.SetBool(worldID + "fallingStack", go.GetComponent <PhysicsHandler>().fallingStack);
                        }
                    }
                    if (go.GetComponent <MissileTurret>() != null)
                    {
                        objectName = stateManager.worldName + "MissileTurret";
                        worldID    = go.GetComponent <MissileTurret>().ID;
                        if (worldID != "unassigned" && worldID != "")
                        {
                            objectID = int.Parse(worldID.Substring(objectName.Length));
                            machineIdList.Add(objectID);
                            int    speed      = go.GetComponent <MissileTurret>().speed;
                            string ammoType   = go.GetComponent <MissileTurret>().ammoType;
                            int    ammoAmount = go.GetComponent <MissileTurret>().ammoAmount;
                            FileBasedPrefs.SetString(worldID + "ammoType", ammoType);
                            FileBasedPrefs.SetInt(worldID + "ammoAmount", ammoAmount);
                            FileBasedPrefs.SetInt(worldID + "speed", speed);
                            FileBasedPrefs.SetBool(worldID + "falling", go.GetComponent <PhysicsHandler>().falling);
                            FileBasedPrefs.SetBool(worldID + "fallingStack", go.GetComponent <PhysicsHandler>().fallingStack);
                        }
                    }
                    if (go.GetComponent <PowerSource>() != null)
                    {
                        if (go.GetComponent <PowerSource>().type == "Solar Panel")
                        {
                            objectName = stateManager.worldName + "SolarPanel";
                        }
                        else if (go.GetComponent <PowerSource>().type == "Generator")
                        {
                            objectName = stateManager.worldName + "Generator";
                        }
                        else if (go.GetComponent <PowerSource>().type == "Reactor Turbine")
                        {
                            objectName = stateManager.worldName + "ReactorTurbine";
                        }
                        worldID = go.GetComponent <PowerSource>().ID;
                        if (worldID != "unassigned" && worldID != "")
                        {
                            objectID = int.Parse(worldID.Substring(objectName.Length));
                            machineIdList.Add(objectID);
                            string outputID   = go.GetComponent <PowerSource>().outputID;
                            string fuelType   = go.GetComponent <PowerSource>().fuelType;
                            int    fuelAmount = go.GetComponent <PowerSource>().fuelAmount;
                            FileBasedPrefs.SetString(worldID + "outputID", outputID);
                            FileBasedPrefs.SetString(worldID + "fuelType", fuelType);
                            FileBasedPrefs.SetInt(worldID + "fuelAmount", fuelAmount);
                            FileBasedPrefs.SetBool(worldID + "falling", go.GetComponent <PhysicsHandler>().falling);
                            FileBasedPrefs.SetBool(worldID + "fallingStack", go.GetComponent <PhysicsHandler>().fallingStack);
                        }
                    }
                    if (go.GetComponent <NuclearReactor>() != null)
                    {
                        objectName = stateManager.worldName + "NuclearReactor";
                        worldID    = go.GetComponent <NuclearReactor>().ID;
                        if (worldID != "unassigned" && worldID != "")
                        {
                            objectID = int.Parse(worldID.Substring(objectName.Length));
                            machineIdList.Add(objectID);
                            FileBasedPrefs.SetBool(worldID + "falling", go.GetComponent <PhysicsHandler>().falling);
                            FileBasedPrefs.SetBool(worldID + "fallingStack", go.GetComponent <PhysicsHandler>().fallingStack);
                        }
                    }
                    if (go.GetComponent <PowerConduit>() != null)
                    {
                        objectName = stateManager.worldName + "PowerConduit";
                        worldID    = go.GetComponent <PowerConduit>().ID;
                        if (worldID != "unassigned" && worldID != "")
                        {
                            objectID = int.Parse(worldID.Substring(objectName.Length));
                            machineIdList.Add(objectID);
                            string inputID     = go.GetComponent <PowerConduit>().inputID;
                            string outputID1   = go.GetComponent <PowerConduit>().outputID1;
                            string outputID2   = go.GetComponent <PowerConduit>().outputID2;
                            bool   dualOutput  = go.GetComponent <PowerConduit>().dualOutput;
                            int    range       = go.GetComponent <PowerConduit>().range;
                            int    powerAmount = go.GetComponent <PowerConduit>().powerAmount;
                            FileBasedPrefs.SetString(worldID + "inputID", inputID);
                            FileBasedPrefs.SetString(worldID + "outputID1", outputID1);
                            FileBasedPrefs.SetString(worldID + "outputID2", outputID2);
                            FileBasedPrefs.SetBool(worldID + "dualOutput", dualOutput);
                            FileBasedPrefs.SetInt(worldID + "range", range);
                            FileBasedPrefs.SetBool(worldID + "falling", go.GetComponent <PhysicsHandler>().falling);
                            FileBasedPrefs.SetBool(worldID + "fallingStack", go.GetComponent <PhysicsHandler>().fallingStack);
                        }
                    }
                    if (go.GetComponent <AlloySmelter>() != null)
                    {
                        objectName = stateManager.worldName + "AlloySmelter";
                        worldID    = go.GetComponent <AlloySmelter>().ID;
                        if (worldID != "unassigned" && worldID != "")
                        {
                            objectID = int.Parse(worldID.Substring(objectName.Length));
                            machineIdList.Add(objectID);
                            string inputID1     = go.GetComponent <AlloySmelter>().inputID1;
                            string inputID2     = go.GetComponent <AlloySmelter>().inputID2;
                            string inputType1   = go.GetComponent <AlloySmelter>().inputType1;
                            string inputType2   = go.GetComponent <AlloySmelter>().inputType2;
                            string outputType   = go.GetComponent <AlloySmelter>().outputType;
                            string outputID     = go.GetComponent <AlloySmelter>().outputID;
                            int    speed        = go.GetComponent <AlloySmelter>().speed;
                            float  amount       = go.GetComponent <AlloySmelter>().amount;
                            float  amount2      = go.GetComponent <AlloySmelter>().amount2;
                            float  outputAmount = go.GetComponent <AlloySmelter>().outputAmount;
                            FileBasedPrefs.SetString(worldID + "inputID1", inputID1);
                            FileBasedPrefs.SetString(worldID + "inputID2", inputID2);
                            FileBasedPrefs.SetString(worldID + "inputType1", inputType1);
                            FileBasedPrefs.SetString(worldID + "inputType2", inputType2);
                            FileBasedPrefs.SetString(worldID + "outputType", outputType);
                            FileBasedPrefs.SetString(worldID + "outputID", outputID);
                            FileBasedPrefs.SetInt(worldID + "speed", speed);
                            FileBasedPrefs.SetFloat(worldID + "amount", amount);
                            FileBasedPrefs.SetFloat(worldID + "amount2", amount2);
                            FileBasedPrefs.SetFloat(worldID + "amount", outputAmount);
                            FileBasedPrefs.SetBool(worldID + "falling", go.GetComponent <PhysicsHandler>().falling);
                            FileBasedPrefs.SetBool(worldID + "fallingStack", go.GetComponent <PhysicsHandler>().fallingStack);
                        }
                    }
                    if (go.GetComponent <Press>() != null)
                    {
                        objectName = stateManager.worldName + "Press";
                        worldID    = go.GetComponent <Press>().ID;
                        if (worldID != "unassigned" && worldID != "")
                        {
                            objectID = int.Parse(worldID.Substring(objectName.Length));
                            machineIdList.Add(objectID);
                            string inputID    = go.GetComponent <Press>().inputID;
                            string inputType  = go.GetComponent <Press>().inputType;
                            string outputType = go.GetComponent <Press>().outputType;
                            string outputID   = go.GetComponent <Press>().outputID;
                            int    speed      = go.GetComponent <Press>().speed;
                            float  amount     = go.GetComponent <Press>().amount;
                            FileBasedPrefs.SetString(worldID + "inputID", inputID);
                            FileBasedPrefs.SetString(worldID + "inputType", inputType);
                            FileBasedPrefs.SetString(worldID + "outputType", outputType);
                            FileBasedPrefs.SetString(worldID + "outputID", outputID);
                            FileBasedPrefs.SetInt(worldID + "speed", speed);
                            FileBasedPrefs.SetFloat(worldID + "amount", amount);
                            FileBasedPrefs.SetBool(worldID + "falling", go.GetComponent <PhysicsHandler>().falling);
                            FileBasedPrefs.SetBool(worldID + "fallingStack", go.GetComponent <PhysicsHandler>().fallingStack);
                        }
                    }
                    if (go.GetComponent <Extruder>() != null)
                    {
                        objectName = stateManager.worldName + "Extruder";
                        worldID    = go.GetComponent <Extruder>().ID;
                        if (worldID != "unassigned" && worldID != "")
                        {
                            objectID = int.Parse(worldID.Substring(objectName.Length));
                            machineIdList.Add(objectID);
                            string inputID    = go.GetComponent <Extruder>().inputID;
                            string inputType  = go.GetComponent <Extruder>().inputType;
                            string outputType = go.GetComponent <Extruder>().outputType;
                            string outputID   = go.GetComponent <Extruder>().outputID;
                            int    speed      = go.GetComponent <Extruder>().speed;
                            float  amount     = go.GetComponent <Extruder>().amount;
                            FileBasedPrefs.SetString(worldID + "inputID", inputID);
                            FileBasedPrefs.SetString(worldID + "inputType", inputType);
                            FileBasedPrefs.SetString(worldID + "outputType", outputType);
                            FileBasedPrefs.SetString(worldID + "outputID", outputID);
                            FileBasedPrefs.SetInt(worldID + "speed", speed);
                            FileBasedPrefs.SetFloat(worldID + "amount", amount);
                            FileBasedPrefs.SetBool(worldID + "falling", go.GetComponent <PhysicsHandler>().falling);
                            FileBasedPrefs.SetBool(worldID + "fallingStack", go.GetComponent <PhysicsHandler>().fallingStack);
                        }
                    }
                    if (go.GetComponent <GearCutter>() != null)
                    {
                        objectName = stateManager.worldName + "GearCutter";
                        worldID    = go.GetComponent <GearCutter>().ID;
                        if (worldID != "unassigned" && worldID != "")
                        {
                            objectID = int.Parse(worldID.Substring(objectName.Length));
                            machineIdList.Add(objectID);
                            string inputID    = go.GetComponent <GearCutter>().inputID;
                            string inputType  = go.GetComponent <GearCutter>().inputType;
                            string outputType = go.GetComponent <GearCutter>().outputType;
                            string outputID   = go.GetComponent <GearCutter>().outputID;
                            int    speed      = go.GetComponent <GearCutter>().speed;
                            float  amount     = go.GetComponent <GearCutter>().amount;
                            FileBasedPrefs.SetString(worldID + "inputID", inputID);
                            FileBasedPrefs.SetString(worldID + "inputType", inputType);
                            FileBasedPrefs.SetString(worldID + "outputType", outputType);
                            FileBasedPrefs.SetString(worldID + "outputID", outputID);
                            FileBasedPrefs.SetInt(worldID + "speed", speed);
                            FileBasedPrefs.SetFloat(worldID + "amount", amount);
                            FileBasedPrefs.SetBool(worldID + "falling", go.GetComponent <PhysicsHandler>().falling);
                            FileBasedPrefs.SetBool(worldID + "fallingStack", go.GetComponent <PhysicsHandler>().fallingStack);
                        }
                    }
                    if (go.GetComponent <UniversalExtractor>() != null)
                    {
                        objectName = stateManager.worldName + "UniversalExtractor";
                        worldID    = go.GetComponent <UniversalExtractor>().ID;
                        if (worldID != "unassigned" && worldID != "")
                        {
                            objectID = int.Parse(worldID.Substring(objectName.Length));
                            machineIdList.Add(objectID);
                            int    speed  = go.GetComponent <UniversalExtractor>().speed;
                            float  amount = go.GetComponent <UniversalExtractor>().amount;
                            string type   = go.GetComponent <UniversalExtractor>().type;
                            FileBasedPrefs.SetInt(worldID + "speed", speed);
                            FileBasedPrefs.SetFloat(worldID + "amount", amount);
                            FileBasedPrefs.SetString(worldID + "type", type);
                            FileBasedPrefs.SetBool(worldID + "falling", go.GetComponent <PhysicsHandler>().falling);
                            FileBasedPrefs.SetBool(worldID + "fallingStack", go.GetComponent <PhysicsHandler>().fallingStack);
                        }
                    }
                    if (stateManager.IsStorageContainer(go))
                    {
                        objectName = stateManager.worldName + "StorageContainer";
                        worldID    = go.GetComponent <InventoryManager>().ID;
                        if (worldID != "unassigned" && worldID != "")
                        {
                            objectID = int.Parse(worldID.Substring(objectName.Length));
                            machineIdList.Add(objectID);
                            go.GetComponent <InventoryManager>().SaveData();
                            FileBasedPrefs.SetBool(worldID + "falling", go.GetComponent <PhysicsHandler>().falling);
                            FileBasedPrefs.SetBool(worldID + "fallingStack", go.GetComponent <PhysicsHandler>().fallingStack);
                        }
                    }
                    if (go.GetComponent <StorageComputer>() != null)
                    {
                        objectName = stateManager.worldName + "StorageComputer";
                        worldID    = go.GetComponent <StorageComputer>().ID;
                        if (worldID != "unassigned" && worldID != "")
                        {
                            objectID = int.Parse(worldID.Substring(objectName.Length));
                            machineIdList.Add(objectID);
                            FileBasedPrefs.SetBool(worldID + "falling", go.GetComponent <PhysicsHandler>().falling);
                            FileBasedPrefs.SetBool(worldID + "fallingStack", go.GetComponent <PhysicsHandler>().fallingStack);
                        }
                    }
                    if (go.GetComponent <Door>() != null)
                    {
                        if (go.GetComponent <Door>().type == "Door")
                        {
                            objectName = stateManager.worldName + "Door";
                        }
                        else if (go.GetComponent <Door>().type == "Quantum Hatchway")
                        {
                            Debug.Log("Saving hatch");
                            objectName = stateManager.worldName + "QuantumHatchway";
                        }
                        worldID = go.GetComponent <Door>().ID;
                        if (worldID != "unassigned" && worldID != "")
                        {
                            objectID = int.Parse(worldID.Substring(objectName.Length));
                            machineIdList.Add(objectID);
                            int    audioClip = go.GetComponent <Door>().audioClip;
                            int    texture   = go.GetComponent <Door>().textureIndex;
                            string material  = go.GetComponent <Door>().material;
                            bool   edited    = go.GetComponent <Door>().edited;
                            FileBasedPrefs.SetInt(worldID + "audioClip", audioClip);
                            FileBasedPrefs.SetInt(worldID + "texture", texture);
                            FileBasedPrefs.SetString(worldID + "material", material);
                            FileBasedPrefs.SetBool(worldID + "edited", edited);
                            FileBasedPrefs.SetBool(worldID + "falling", go.GetComponent <PhysicsHandler>().falling);
                            FileBasedPrefs.SetBool(worldID + "fallingStack", go.GetComponent <PhysicsHandler>().fallingStack);
                        }
                    }
                    if (go.GetComponent <ModMachine>() != null)
                    {
                        objectName = stateManager.worldName + "ModMachine";
                        worldID    = go.GetComponent <ModMachine>().ID;
                        if (worldID != "unassigned" && worldID != "")
                        {
                            objectID = int.Parse(worldID.Substring(objectName.Length));
                            machineIdList.Add(objectID);
                            int    speed       = go.GetComponent <ModMachine>().speed;
                            float  amount      = go.GetComponent <ModMachine>().amount;
                            string machineName = go.GetComponent <ModMachine>().machineName;
                            string inputID     = go.GetComponent <ModMachine>().inputID;
                            string outputID    = go.GetComponent <ModMachine>().outputID;
                            string inputType   = go.GetComponent <ModMachine>().inputType;
                            string outputType  = go.GetComponent <ModMachine>().outputType;
                            FileBasedPrefs.SetString(worldID + "machineName", machineName);
                            FileBasedPrefs.SetString(worldID + "inputID", inputID);
                            FileBasedPrefs.SetString(worldID + "outputID", outputID);
                            FileBasedPrefs.SetString(worldID + "inputType", inputType);
                            FileBasedPrefs.SetString(worldID + "outputType", outputType);
                            FileBasedPrefs.SetInt(worldID + "speed", speed);
                            FileBasedPrefs.SetFloat(worldID + "amount", amount);
                            FileBasedPrefs.SetBool(worldID + "falling", go.GetComponent <PhysicsHandler>().falling);
                            FileBasedPrefs.SetBool(worldID + "fallingStack", go.GetComponent <PhysicsHandler>().fallingStack);
                        }
                    }
                    if (go.GetComponent <ProtectionBlock>() != null)
                    {
                        worldID = go.GetComponent <ProtectionBlock>().ID;
                        List <string> userNames = go.GetComponent <ProtectionBlock>().GetUserNames();
                        if (worldID != "unassigned" && worldID != "" && userNames != null)
                        {
                            PlayerPrefsX.SetStringArray(worldID + "userNames", userNames.ToArray());
                            FileBasedPrefs.SetBool(worldID + "falling", go.GetComponent <PhysicsHandler>().falling);
                            FileBasedPrefs.SetBool(worldID + "fallingStack", go.GetComponent <PhysicsHandler>().fallingStack);
                            objectName = stateManager.worldName + "ProtectionBlock";
                            objectID   = int.Parse(worldID.Substring(objectName.Length));
                            machineIdList.Add(objectID);
                        }
                    }

                    FileBasedPrefs.SetString(stateManager.worldName + "machine" + objectID + "Name", objectName);
                    PlayerPrefsX.SetVector3(stateManager.worldName + "machine" + objectID + "Position", objectPosition);
                    PlayerPrefsX.SetQuaternion(stateManager.worldName + "machine" + objectID + "Rotation", objectRotation);

                    currentObject++;
                    saveInterval++;
                    if (saveInterval >= totalObjects * 0.05f)
                    {
                        yield return(null);

                        saveInterval = 0;
                    }
                }
            }
        }

        foreach (Transform T in blocks)
        {
            if (T != null)
            {
                Vector3    objectPosition = T.position;
                Quaternion objectRotation = T.rotation;
                if (T.gameObject.GetComponent <IronBlock>() != null)
                {
                    if (T.gameObject.name.Equals("IronRamp(Clone)"))
                    {
                        objectName = stateManager.worldName + "IronRamp";
                    }
                    else
                    {
                        objectName = stateManager.worldName + "IronBlock";
                    }
                    worldID = T.gameObject.GetComponent <IronBlock>().ID;
                    if (worldID != "unassigned" && worldID != "")
                    {
                        objectID = int.Parse(worldID.Substring(objectName.Length));
                        blockIdList.Add(objectID);
                        FileBasedPrefs.SetString(stateManager.worldName + "block" + objectID + "Name", objectName);
                        PlayerPrefsX.SetVector3(stateManager.worldName + "block" + objectID + "Position", objectPosition);
                        PlayerPrefsX.SetQuaternion(stateManager.worldName + "block" + objectID + "Rotation", objectRotation);
                        FileBasedPrefs.SetBool(worldID + "falling", T.gameObject.GetComponent <PhysicsHandler>().falling);
                        FileBasedPrefs.SetBool(worldID + "fallingStack", T.gameObject.GetComponent <PhysicsHandler>().fallingStack);
                    }
                }
                if (T.gameObject.GetComponent <Steel>() != null)
                {
                    if (T.gameObject.name.Equals("SteelRamp(Clone)"))
                    {
                        objectName = stateManager.worldName + "SteelRamp";
                    }
                    else
                    {
                        objectName = stateManager.worldName + "Steel";
                    }
                    worldID = T.gameObject.GetComponent <Steel>().ID;
                    if (worldID != "unassigned" && worldID != "")
                    {
                        objectID = int.Parse(worldID.Substring(objectName.Length));
                        blockIdList.Add(objectID);
                        FileBasedPrefs.SetString(stateManager.worldName + "block" + objectID + "Name", objectName);
                        PlayerPrefsX.SetVector3(stateManager.worldName + "block" + objectID + "Position", objectPosition);
                        PlayerPrefsX.SetQuaternion(stateManager.worldName + "block" + objectID + "Rotation", objectRotation);
                        FileBasedPrefs.SetBool(worldID + "falling", T.gameObject.GetComponent <PhysicsHandler>().falling);
                        FileBasedPrefs.SetBool(worldID + "fallingStack", T.gameObject.GetComponent <PhysicsHandler>().fallingStack);
                    }
                }
                if (T.gameObject.GetComponent <Brick>() != null)
                {
                    objectName = stateManager.worldName + "Brick";
                    worldID    = T.gameObject.GetComponent <Brick>().ID;
                    if (worldID != "unassigned" && worldID != "")
                    {
                        objectID = int.Parse(worldID.Substring(objectName.Length));
                        blockIdList.Add(objectID);
                        FileBasedPrefs.SetString(stateManager.worldName + "block" + objectID + "Name", objectName);
                        PlayerPrefsX.SetVector3(stateManager.worldName + "block" + objectID + "Position", objectPosition);
                        PlayerPrefsX.SetQuaternion(stateManager.worldName + "block" + objectID + "Rotation", objectRotation);
                        FileBasedPrefs.SetBool(worldID + "falling", T.gameObject.GetComponent <PhysicsHandler>().falling);
                        FileBasedPrefs.SetBool(worldID + "fallingStack", T.gameObject.GetComponent <PhysicsHandler>().fallingStack);
                    }
                }
                if (T.gameObject.GetComponent <Glass>() != null)
                {
                    objectName = stateManager.worldName + "Glass";
                    worldID    = T.gameObject.GetComponent <Glass>().ID;
                    if (worldID != "unassigned" && worldID != "")
                    {
                        objectID = int.Parse(worldID.Substring(objectName.Length));
                        blockIdList.Add(objectID);
                        FileBasedPrefs.SetString(stateManager.worldName + "block" + objectID + "Name", objectName);
                        PlayerPrefsX.SetVector3(stateManager.worldName + "block" + objectID + "Position", objectPosition);
                        PlayerPrefsX.SetQuaternion(stateManager.worldName + "block" + objectID + "Rotation", objectRotation);
                        FileBasedPrefs.SetBool(worldID + "falling", T.gameObject.GetComponent <PhysicsHandler>().falling);
                        FileBasedPrefs.SetBool(worldID + "fallingStack", T.gameObject.GetComponent <PhysicsHandler>().fallingStack);
                    }
                }
                if (T.gameObject.GetComponent <ModBlock>() != null)
                {
                    objectName = stateManager.worldName + "ModBlock";
                    worldID    = T.gameObject.GetComponent <ModBlock>().ID;
                    if (worldID != "unassigned" && worldID != "")
                    {
                        objectID = int.Parse(worldID.Substring(objectName.Length));
                        blockIdList.Add(objectID);
                        string blockName = T.gameObject.GetComponent <ModBlock>().blockName;
                        FileBasedPrefs.SetString(worldID + "blockName", blockName);
                        FileBasedPrefs.SetString(stateManager.worldName + "block" + objectID + "Name", objectName);
                        PlayerPrefsX.SetVector3(stateManager.worldName + "block" + objectID + "Position", objectPosition);
                        PlayerPrefsX.SetQuaternion(stateManager.worldName + "block" + objectID + "Rotation", objectRotation);
                        FileBasedPrefs.SetBool(worldID + "falling", T.gameObject.GetComponent <PhysicsHandler>().falling);
                        FileBasedPrefs.SetBool(worldID + "fallingStack", T.gameObject.GetComponent <PhysicsHandler>().fallingStack);
                    }
                }

                currentObject++;
                saveInterval++;
                if (saveInterval >= totalObjects * 0.05f)
                {
                    yield return(null);

                    saveInterval = 0;
                }
            }
        }

        foreach (MeshPainter painter in meshPainters)
        {
            painter.SaveData();
            currentObject++;
            saveInterval++;
            if (saveInterval >= totalObjects * 0.05f)
            {
                yield return(null);

                saveInterval = 0;
            }
        }

        if (machineIdList.Count > 0)
        {
            PlayerPrefsX.SetIntArray(stateManager.worldName + "machineIdList", machineIdList.ToArray());
        }

        if (blockIdList.Count > 0)
        {
            PlayerPrefsX.SetIntArray(stateManager.worldName + "blockIdList", blockIdList.ToArray());
        }

        FileBasedPrefs.ManuallySave();
        stateManager.dataSaved = true;
        stateManager.saving    = false;
        currentObject          = 0;
        totalObjects           = 0;
    }