public void can_add_and_save_and_load_again() { using (var fs = new FileSystemTester()) { var set = new FileMetadataCache(); var store = new JsonStore(); var filename = "file-change-set.json"; var file = fs.Touch("file.txt"); set.Add(file); fs.Write(filename, s => store.Save(s, set)); var loadedSet = fs.Read(filename, store.Load<FileMetadataCache>); Assert.IsNotNull(loadedSet); Assert.AreEqual(1, loadedSet.Files.Count); var fileinfo = loadedSet.Files.ElementAt(0); Assert.AreEqual(file.Name, Path.GetFileName(fileinfo.FilePath)); Assert.AreEqual(file.Length, fileinfo.Length); Assert.AreEqual(file.LastWriteTimeUtc, fileinfo.LastWriteTimeUtc); } }
public void can_save_and_load() { using(var fs = new FileSystemTester()) { var set = new FileMetadataCache(); var store = new JsonStore(); var filename = "file-change-set.json"; fs.Write(filename, s => store.Save(s, set)); fs.Read(filename, store.Load<FileMetadataCache>); } }
public void modifiying_file_in_set_causes_has_changes_to_return_true() { using (var fs = new FileSystemTester()) { var set = new FileMetadataCache(); var store = new JsonStore(); var filename = "file-change-set.json"; var file = fs.Touch("file.txt"); set.Add(file); fs.Write(filename, s => store.Save(s, set)); var loadedSet = fs.Read(filename, store.Load<FileMetadataCache>); Assert.IsFalse(loadedSet.HasChanges()); fs.Touch(file.FullName); Assert.IsTrue(loadedSet.HasChanges()); } }
IEnumerator StatePlayerSelect() { if (debug) { Debug.Log("StatePlayerSelect"); } // load panel var panelGo = Instantiate(playerSelectPanelPrefab, GetCanvas().gameObject.transform); yield return(null); // wait a frame for panel initialization string selectedPlayer = ""; bool cancelled = false; // create string event listener to listen for callback event from player select modal var listener = panelGo.AddComponent <StringEventListener>(); listener.SetEvent(playerSelected); listener.Response.AddListener((msg) => { selectedPlayer = msg; }); var geListener = panelGo.AddComponent <GameEventListener>(); geListener.SetEvent(cancelSelected); geListener.Response.AddListener(() => { cancelled = true; }); // get list of player save files, then serialize to a single string var savedPlayerNames = JsonStore.ListByTag(JsonStore.SaveTag.Player); string serializedPlayerNames = ""; if (savedPlayerNames.Length > 0) { serializedPlayerNames = string.Join(":", savedPlayerNames); } // trigger event to ask for player to be selected wantPlayerSelect.Raise(serializedPlayerNames); // wait for player to be selected yield return(new WaitUntil(() => selectedPlayer != "" || cancelled)); // clean up Destroy(panelGo); // go back to main menu if cancelled if (cancelled) { StartCoroutine(StateMainMenu()); // otherwise, advance, based on game state } else { // if player is selected from existing saved players... load that player if (System.Array.Exists(savedPlayerNames, element => element == selectedPlayer)) { var json = JsonStore.Load(JsonStore.SaveTag.Player, selectedPlayer); playerInfo = PlayerInfo.FromJson(json); // otherwise create and save new player record } else { playerInfo = new PlayerInfo(); playerInfo.name = selectedPlayer; JsonStore.Save(JsonStore.SaveTag.Player, selectedPlayer, playerInfo.ToJson()); } // transition to match select StartCoroutine(StateMatchSelect()); } }
public void Save() { JsonStore.Save(JsonStore.SaveTag.Score, matchID, ToJson()); }
public void Save() { JsonStore.Save(JsonStore.SaveTag.Player, name, ToJson()); }