예제 #1
0
    // Load the game from a save file
    public SaveDataPacket Load()
    {
        SaveDataPacket packet = JsonUtility.FromJson <SaveDataPacket>(File.ReadAllText("GameSave.json"));

        Environment environment = mMap;

        MapGenerationPayload.size.x = packet.WorldWidth;
        MapGenerationPayload.size.y = packet.WorldHeight;

        return(packet);
    }
예제 #2
0
    // Generate the world
    // If the world is from a file, load it
    public void Generate()
    {
        if (MapGenerationPayload != null)
        {
            if (MapGenerationPayload.loadFromFile)
            {
                SaveDataPacket saveGame = Load();
                // Load from file
                mMap.GenerateWorld(mCharacter, MapGenerationPayload, saveGame);

                // Load players inventory
                {
                    for (int i = 0; i < saveGame.Inventory.Length; i++)
                    {
                        foreach (Item item in ItemInstances)
                        {
                            if (item.itemName == saveGame.Inventory[i].N)
                            {
                                mCharacter.inventory[i]       = Instantiate(item);
                                mCharacter.inventory[i].count = saveGame.Inventory[i].C;
                            }
                        }
                    }
                    mCharacter.UpdateBar();
                }

                // Load players money
                {
                    shop.SetCurrency(saveGame.Money);
                }

                // Load Time info
                {
                    mDayTime = saveGame.Time;
                }
            }
            else
            {
                // New Game
                mMap.GenerateWorld(mCharacter, MapGenerationPayload);
                shop.SetCurrency(500);

                // Give the player there starting items
                foreach (Item i in PlayerStartingItems)
                {
                    mCharacter.AddToInventory(i, 1);
                }
            }
        }
    }
예제 #3
0
    // Save the current game to a file
    public void Save()
    {
        Environment environment = mMap;

        SaveDataPacket packet = new SaveDataPacket();


        // Player Data
        packet.Money   = shop.GetCurrency();
        packet.Time    = mDayTime;
        packet.PlayerX = mCharacter.CurrentPosition.PositionTile.x;
        packet.PlayerY = mCharacter.CurrentPosition.PositionTile.y;

        packet.Inventory = new ItemSaveData[mCharacter.inventory.Length];
        for (int i = 0; i < mCharacter.inventory.Length; i++)
        {
            if (mCharacter.inventory[i] != null)
            {
                packet.Inventory[i].N = mCharacter.inventory[i].itemName;
                packet.Inventory[i].C = mCharacter.inventory[i].count;
            }
        }

        // Entity Data
        Entity[] entities = environment.GetEntities();
        packet.Entities = new EntitySaveData[entities.Length];
        for (int i = 0; i < entities.Length; i++)
        {
            packet.Entities[i].N = entities[i].entityName;
            packet.Entities[i].X = entities[i].CurrentPosition.PositionTile.x;
            packet.Entities[i].Y = entities[i].CurrentPosition.PositionTile.y;
        }

        // World Data
        environment.Save(ref packet);

        // Save to the JSON file
        string jsonData = JsonUtility.ToJson(packet, false);

        File.WriteAllText("GameSave.json", jsonData);
    }