Ejemplo n.º 1
0
    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());
            }
        }
    }
Ejemplo n.º 2
0
    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);
    }
Ejemplo n.º 3
0
    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);
    }
Ejemplo n.º 4
0
    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);
    }
Ejemplo n.º 5
0
    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);
    }
Ejemplo n.º 6
0
    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();
        }
    }