public IEnumerator LoadFile(string worldPath) { string totalPath = System.IO.Path.Combine(Application.persistentDataPath, "UserData", GameManager.instance.userID, "UserBinaries", "OfflineData", "Worlds", worldPath); print("TOTAL PATH" + totalPath); yield return(new WaitUntil(() => SceneManager.GetActiveScene().buildIndex == 1)); progressText.text = "Planning out the excavation"; if (File.Exists(System.IO.Path.Combine(totalPath, "world.tas"))) { BinaryFormatter bf = new BinaryFormatter(); byte[] bytes = File.ReadAllBytes(System.IO.Path.Combine(totalPath, "world.tas")); System.IO.Stream stream = new System.IO.MemoryStream(bytes); world = (WorldData)bf.Deserialize(stream); bytes = new byte[0]; if (File.Exists(System.IO.Path.Combine(totalPath, "info.tas"))) { bytes = File.ReadAllBytes(System.IO.Path.Combine(totalPath, "info.tas")); stream = new System.IO.MemoryStream(bytes); worldInfo = (WorldDataMenu)bf.Deserialize(stream); StartCoroutine(LoadWorld()); } } }
void SaveWorld(WorldData newWorld, WorldDataMenu newWorldMenu) { UnityEngine.Windows.Directory.CreateDirectory(Path.Combine(Application.persistentDataPath, "UserData")); UnityEngine.Windows.Directory.CreateDirectory(Path.Combine(Application.persistentDataPath, "UserData", GameManager.instance.userID)); UnityEngine.Windows.Directory.CreateDirectory(Path.Combine(Application.persistentDataPath, "UserData", GameManager.instance.userID, "UserBinaries")); UnityEngine.Windows.Directory.CreateDirectory(Path.Combine(Application.persistentDataPath, "UserData", GameManager.instance.userID, "UserBinaries", "OfflineData")); UnityEngine.Windows.Directory.CreateDirectory(Path.Combine(Application.persistentDataPath, "UserData", GameManager.instance.userID, "UserBinaries", "OfflineData", "Worlds")); string path = Path.Combine(Application.persistentDataPath, "UserData", GameManager.instance.userID, "UserBinaries", "OfflineData", "Worlds", worldName); if (!UnityEngine.Windows.Directory.Exists(path)) { UnityEngine.Windows.Directory.CreateDirectory(path); } BinaryFormatter bf = new BinaryFormatter(); FileStream file = File.Create(Path.Combine(path, "world.tas")); bf.Serialize(file, newWorld); file.Close(); FileStream fileInfo = File.Create(Path.Combine(path, "info.tas")); bf.Serialize(fileInfo, newWorldMenu); fileInfo.Close(); print("World saved"); print(Application.persistentDataPath); }
void SaveWorld(WorldData worldData, WorldDataMenu worldInfo) { print("Saving world"); UnityEngine.Windows.Directory.CreateDirectory(Path.Combine(Application.persistentDataPath, "UserData")); UnityEngine.Windows.Directory.CreateDirectory(Path.Combine(Application.persistentDataPath, "UserData", GameManager.instance.userID)); UnityEngine.Windows.Directory.CreateDirectory(Path.Combine(Application.persistentDataPath, "UserData", GameManager.instance.userID, "UserBinaries")); UnityEngine.Windows.Directory.CreateDirectory(Path.Combine(Application.persistentDataPath, "UserData", GameManager.instance.userID, "UserBinaries", "OfflineData")); UnityEngine.Windows.Directory.CreateDirectory(Path.Combine(Application.persistentDataPath, "UserData", GameManager.instance.userID, "UserBinaries", "OfflineData", "Worlds")); string path = Path.Combine(Application.persistentDataPath, "UserData", GameManager.instance.userID, "UserBinaries", "OfflineData", "Worlds", worldInfo.name); UnityEngine.Windows.Directory.CreateDirectory(path + ".incomplete"); BinaryFormatter bf = new BinaryFormatter(); FileStream file = File.Create(Path.Combine(path + ".incomplete", "world.tas")); bf.Serialize(file, worldData); file.Close(); FileStream fileInfo = File.Create(Path.Combine(path + ".incomplete", "info.tas")); bf.Serialize(fileInfo, worldInfo); fileInfo.Close(); UnityEngine.Windows.Directory.Delete(path); Directory.Move(path + ".incomplete", path); print("World saved"); print(Application.persistentDataPath); }
void GenerateWorldData() { print("Generating world data..."); WorldData worldData = new WorldData(); WorldDataMenu worldInfo = new WorldDataMenu(); worldInfo.name = World.instance.name; if (World.instance.worldType == World.WorldType.Flat) { worldInfo.worldType = WorldDataMenu.WorldType.Flat; } else if (World.instance.worldType == World.WorldType.Normal) { worldInfo.worldType = WorldDataMenu.WorldType.Normal; } if (World.instance.worldGameMode == World.WorldGameMode.Survival) { worldInfo.worldGameMode = WorldDataMenu.WorldGameMode.Survival; } else if (World.instance.worldGameMode == World.WorldGameMode.Creative) { worldInfo.worldGameMode = WorldDataMenu.WorldGameMode.Creative; worldInfo.cheatsEnabled = true; } if (World.instance.worldDifficulty == World.WorldDifficulty.Peaceful) { worldInfo.worldDifficulty = WorldDataMenu.WorldDifficulty.Peaceful; } else if (World.instance.worldDifficulty == World.WorldDifficulty.Easy) { worldInfo.worldDifficulty = WorldDataMenu.WorldDifficulty.Easy; } else if (World.instance.worldDifficulty == World.WorldDifficulty.Normal) { worldInfo.worldDifficulty = WorldDataMenu.WorldDifficulty.Normal; } else if (World.instance.worldDifficulty == World.WorldDifficulty.Hard) { worldInfo.worldDifficulty = WorldDataMenu.WorldDifficulty.Hard; } worldInfo.worldX = World.instance.worldX; worldInfo.worldY = World.instance.worldY; worldInfo.worldZ = World.instance.worldZ; worldData.data = World.instance.data; worldData.playerData.Add(Players.instance.players[0].GetComponent <PlayerInventory>().GetPlayerData()); worldInfo.creationDate = World.instance.creationDate; worldInfo.lastSaved = DateTime.UtcNow; print("World data generated"); SaveWorld(worldData, worldInfo); }
void CreateWorld() { print("Create world"); WorldData newWorld = new WorldData(); WorldDataMenu newWorldInfo = new WorldDataMenu(); newWorldInfo.name = worldName; if (worldType == WorldType.Flat) { newWorldInfo.worldType = WorldDataMenu.WorldType.Flat; } else if (worldType == WorldType.Normal) { newWorldInfo.worldType = WorldDataMenu.WorldType.Normal; } if (worldGameMode == WorldGameMode.Survival) { newWorldInfo.worldGameMode = WorldDataMenu.WorldGameMode.Survival; } else if (worldGameMode == WorldGameMode.Creative) { newWorldInfo.worldGameMode = WorldDataMenu.WorldGameMode.Creative; newWorldInfo.cheatsEnabled = true; } newWorldInfo.worldDifficulty = WorldDataMenu.WorldDifficulty.Peaceful; newWorldInfo.worldX = worldX; newWorldInfo.worldY = worldY; newWorldInfo.worldZ = worldZ; newWorldInfo.creationDate = DateTime.UtcNow; newWorldInfo.lastSaved = DateTime.UtcNow; print("Before world gen"); if (newWorldInfo.worldType == WorldDataMenu.WorldType.Flat) { newWorld.data = WorldGenerationFlat(); } else if (newWorldInfo.worldType == WorldDataMenu.WorldType.Normal) { newWorld.data = WorldGenerationNormal(); } newWorld.playerData.Add(CreatePlayerData()); print("Before save world"); SaveWorld(newWorld, newWorldInfo); }
void GetWorldData(List <string> worlds) { print("Getting world data..."); worldDatas = new List <MenuWorldData>(); for (int i = 0; i < worlds.Count; i++) { if (File.Exists(Path.Combine(Application.persistentDataPath, "UserData", GameManager.instance.userID, "UserBinaries", "OfflineData", "Worlds", worlds[i], "info.tas"))) { try { BinaryFormatter bf = new BinaryFormatter(); byte[] bytes = UnityEngine.Windows.File.ReadAllBytes(Path.Combine(Application.persistentDataPath, "UserData", GameManager.instance.userID, "UserBinaries", "OfflineData", "Worlds", worlds[i], "info.tas")); Stream stream = new System.IO.MemoryStream(bytes); WorldDataMenu worldData = (WorldDataMenu)bf.Deserialize(stream); bytes = new byte[0]; byte gamemode = 0; if (worldData.worldGameMode == WorldDataMenu.WorldGameMode.Survival) { gamemode = 0; } else if (worldData.worldGameMode == WorldDataMenu.WorldGameMode.Creative) { gamemode = 1; } MenuWorldData menuWorldData = new MenuWorldData(worlds[i], worldData.name, worldData.cheatsEnabled, worldData.creationDate, worldData.lastSaved, worldData.playtime, gamemode); worldDatas.Add(menuWorldData); } catch (Exception e) { Debug.LogError($"Unable to load world: '{worlds[i]}' - {e}"); } } } if (worldDatas.Count > 0) { DisplayWorldData(); } }