// 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); }
// 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); } } } }
// 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); }