示例#1
0
    public void Setup(SaveDataManifest manifest, UnityAction <SaveDataManifest> selectionCallback)
    {
        saveDataManifest = manifest;
        nameText.text    = saveDataManifest.Name;

        selectButton.onClick.AddListener(() => selectionCallback(saveDataManifest));
    }
    public void UpdateManifest()
    {
        // Players
        PlayerSaveInfo[] playerSaveInfos = PhotonNetwork.playerList.Select(x => new PlayerSaveInfo(x.NickName, (int)(x.CustomProperties["UniqueID"] ?? -1))).ToArray();

        // Chunks
        List <Tuple <string, byte[]> > worldFiles = FileLoader.LoadFiles(WorldDataPath); // TODO: We dont want to do this every time we are saving the manifest

        ChunkSaveInfo[] chunkSaveInfos = worldFiles.Select(x => new ChunkSaveInfo(x.Item1)).ToArray();

        SaveDataManifest saveDataManifest = new SaveDataManifest
        {
            Save_TimeStamp = DaytimeController.Instance?.CurrentTime.Ticks ?? 0,

            GameTime = (long)PhotonNetwork.room.CustomProperties["gameTime"],
            Seed     = (int)PhotonNetwork.room.CustomProperties["seed"],
            Name     = (string)PhotonNetwork.room.CustomProperties["saveName"],

            Players = playerSaveInfos,
            Chunks  = chunkSaveInfos
        };

        // Save the manifest locally
        SaveManifest(saveDataManifest);

        // Send the manifest to the other players
        PhotonNetwork.RaiseEvent(0, new byte[0], true, null); // TODO: SENDING EMPTY MANIFEST (DO WE EVEN NEED TO SEND THIS?)
    }
示例#3
0
    private void AddSaveManifest(SaveDataManifest saveDataManifest)
    {
        GameObject saveFileListingObj = Instantiate(saveFileListingPrefab, layoutGroup.transform, false);

        SaveFileListing saveFileListing = saveFileListingObj.GetComponent <SaveFileListing>();

        saveFileListing.Setup(saveDataManifest, OnSaveSelected);

        saveFileListingButtons.Add(saveFileListing);
    }
    public SaveDataManifest[] LoadAllManifests()
    {
        string[] files = Directory.GetFiles(SaveFileFolder, "*.manifest");

        List <SaveDataManifest> manifests = new List <SaveDataManifest>();

        for (int i = 0; i < files.Length; i++)
        {
            Tuple <string, byte[]> fileData = FileLoader.LoadFile(files[i]);
            if (fileData != null)
            {
                string json = System.Text.Encoding.UTF8.GetString(fileData.Item2);

                SaveDataManifest manifest = (SaveDataManifest)JsonUtility.FromJson(json, typeof(SaveDataManifest));
                if (manifest != null)
                {
                    manifests.Add(manifest);
                }
            }
        }
        return(manifests.ToArray());
    }
示例#5
0
 private void OnSaveSelected(SaveDataManifest saveDataManifest)
 {
     SelectedSave = saveDataManifest;
 }
    /// <summary>
    /// Saves the manifest to disk.
    /// </summary>
    /// <param name="saveDataManifest"></param>
    private void SaveManifest(SaveDataManifest saveDataManifest)
    {
        string json = JsonUtility.ToJson(saveDataManifest);

        WriteToFile($"{RoomFolderName}.manifest", SaveFileFolder, System.Text.Encoding.UTF8.GetBytes(json));
    }