示例#1
0
    public SaveData(Vector3Int date, Vector3 pos, Vector3Int time, float[] lighting, bool[] resets, int[] slots, float playerGold, int playerEnergy, ItemBase[] inventory,
                    ItemBase[] hotbar, ItemBase[] chest, Dictionary <string, Dictionary <Vector3Int, TileDataClass> > dataBase)
    {
        // Set up all the arrays we will be saving to
        Inventory = new ItemData[slots[0]];
        HotBar    = new ItemData[slots[1]];
        Chest     = new ItemData[slots[2]];
        Lighting  = new float[4];
        Farm      = new PlantData[dataBase.ElementAt(0).Value.Count];
        Mines     = new RockData[dataBase.ElementAt(1).Value.Count];
        Mines1    = new RockData[dataBase.ElementAt(2).Value.Count];
        Mines2    = new RockData[dataBase.ElementAt(3).Value.Count];
        Forest    = new TreeData[dataBase.ElementAt(4).Value.Count];

        Date[0]             = date.x; Date[1] = date.y; Date[2] = date.z;
        Time[0]             = time.x; Time[1] = time.y; Time[2] = time.z;
        PlayerPos[0]        = pos.x; PlayerPos[1] = pos.y; PlayerPos[2] = pos.z;
        WeeklyResets        = resets;
        InventorySlotAmount = slots;
        PlayerGold          = playerGold;
        PlayerEnergy        = playerEnergy;
        Lighting            = lighting;

        string TileName   = "";
        string PrefabName = "";

        for (int i = 0; i < slots[0]; i++)
        {
            if (inventory[i] != null)
            {
                if (inventory[i].GetTile() != null)
                {
                    TileName = inventory[i].GetTile().name;
                }
                if (inventory[i].GetPrefab() != null)
                {
                    PrefabName = inventory[i].GetPrefab().name;
                }

                Inventory[i].SetUp(inventory[i].GetName(), inventory[i].mItemType.ToString(),
                                   inventory[i].GetSrcImage(), TileName,
                                   inventory[i].GetSoundEffect().name, PrefabName, inventory[i].GetAmount(),
                                   inventory[i].GetStackable(), inventory[i].GetSellPrice(), inventory[i].GetDesc());
            }

            TileName   = "";
            PrefabName = "";
        }
        for (int i = 0; i < slots[1]; i++)
        {
            if (hotbar[i] != null)
            {
                if (hotbar[i].GetTile() != null)
                {
                    TileName = hotbar[i].GetTile().name;
                }
                if (hotbar[i].GetPrefab() != null)
                {
                    PrefabName = hotbar[i].GetPrefab().name;
                }


                HotBar[i].SetUp(hotbar[i].GetName(), hotbar[i].mItemType.ToString(), hotbar[i].GetSrcImage(),
                                TileName, hotbar[i].GetSoundEffect().name, PrefabName, hotbar[i].GetAmount(),
                                hotbar[i].GetStackable(), hotbar[i].GetSellPrice(), hotbar[i].GetDesc());
            }

            TileName   = "";
            PrefabName = "";
        }
        for (int i = 0; i < slots[2]; i++)
        {
            if (chest[i] != null)
            {
                if (chest[i].GetTile() != null)
                {
                    TileName = chest[i].GetTile().name;
                }
                if (chest[i].GetPrefab() != null)
                {
                    PrefabName = chest[i].GetPrefab().name;
                }

                Chest[i].SetUp(chest[i].GetName(), chest[i].mItemType.ToString(), chest[i].GetSrcImage(),
                               TileName, chest[i].GetSoundEffect().name, PrefabName, chest[i].GetAmount(),
                               chest[i].GetStackable(), chest[i].GetSellPrice(), chest[i].GetDesc());
            }

            TileName   = "";
            PrefabName = "";
        }

        int counter = 0;

        foreach (var var in dataBase.ElementAt(0).Value)
        {
            if (var.Value.GetPlant() != null)
            {
                PlantAbstractClass Plant         = var.Value.GetPlant();
                Vector3Int         Key           = new Vector3Int(var.Key.x, var.Key.y, var.Key.z);
                string[]           GrowthSprites = new string[Plant.mGrowthSprites.Length];
                GrowthSprites[0] = Plant.mGrowthSprites[0].name;
                GrowthSprites[1] = Plant.mGrowthSprites[1].name;
                GrowthSprites[2] = Plant.mGrowthSprites[2].name;
                Farm[counter].SetUp(Plant.mCurrentDays, Plant.mGrowthTime, Plant.GetType().ToString(),
                                    Plant.GetSrcImage(), Plant.GetAmount(), GrowthSprites, Key, Key, var.Value.Tile.name,
                                    Plant.mHarvestable, Plant.mGrowth, Plant.XMLName, Plant.mWatered);
            }
            counter++;
        }
        counter = 0;
        foreach (var var in dataBase.ElementAt(1).Value)
        {
            OreAbstractClass Ore = var.Value.GetOre();
            float[]          Key = new float[3]; Key[0] = var.Key.x; Key[1] = var.Key.y; Key[2] = var.Key.z;
            Mines[counter].SetUp(Ore.mItemType.ToString(), Ore.GetName(), Key, Key, var.Value.Tile.name, Ore.XMLName, Ore.GetAmount());
            counter++;
        }

        counter = 0;
        foreach (var var in dataBase.ElementAt(2).Value)
        {
            OreAbstractClass Ore = var.Value.GetOre();
            float[]          Key = new float[3]; Key[0] = var.Key.x; Key[1] = var.Key.y; Key[2] = var.Key.z;
            Mines1[counter].SetUp(Ore.mItemType.ToString(), Ore.GetName(), Key, Key, var.Value.Tile.name, Ore.XMLName, Ore.GetAmount());
            counter++;
        }
        counter = 0;
        foreach (var var in dataBase.ElementAt(3).Value)
        {
            OreAbstractClass Ore = var.Value.GetOre();
            float[]          Key = new float[3]; Key[0] = var.Key.x; Key[1] = var.Key.y; Key[2] = var.Key.z;
            Mines2[counter].SetUp(Ore.mItemType.ToString(), Ore.GetName(), Key, Key, var.Value.Tile.name, Ore.XMLName, Ore.GetAmount());
            counter++;
        }
        counter = 0;
        foreach (var var in dataBase.ElementAt(4).Value)
        {
            ItemBase Wood = var.Value.GetItem();
            float[]  Key  = new float[3]; Key[0] = var.Key.x; Key[1] = var.Key.y; Key[2] = var.Key.z;
            Forest[counter].SetUp(Wood.mItemType.ToString(), Wood.GetName(), Key, Key, var.Value.Tile.name, Wood.GetName(), Wood.GetAmount());
            counter++;
        }
        counter = 0;
    }