private void Awake() { // populate list with saved data string s = PlayerPrefs.GetString("stats"); if (!s.Equals("")) { ScoreDataList <ScoreData> leaderboards = JsonUtility.FromJson <ScoreDataList <ScoreData> >(s); List <ScoreData> scores = new List <ScoreData>(leaderboards.items); scores.Sort(new ScoreDataComparer()); foreach (ScoreData i in scores) { if (!i.name.Equals("")) { GameObject g = Instantiate(textPrefab, textHolder); Text t = g.GetComponent <Text>(); t.text = string.Format("{0}\nHigh Score: {1}\nTrees Saved: {2}\nTowns Saved: {3}\nFastest Time: {4} minutes\nTime Flown: {5} minutes", i.name, i.highScore, i.treesSaved, i.peopleSaved, i.fastestTime, i.totalMinutesFlown); } } } else { GameObject g = Instantiate(textPrefab, textHolder); Text t = g.GetComponent <Text>(); t.text = "No Scores Yet!"; } }
public void loadData() { if (!File.Exists(Application.dataPath + "/dataset.json")) { Debug.Log("No settings file found, creating new one."); sdatalist = new ScoreDataList(); string jsonExport = JsonUtility.ToJson(sdatalist); File.WriteAllText(Application.dataPath + "/dataset.json", jsonExport); } else { Debug.Log("Settings file found, loading settings."); string jsonImport = File.ReadAllText(Application.dataPath + "/dataset.json"); sdatalist = JsonUtility.FromJson <ScoreDataList>(jsonImport); foreach (ScoreData scoredata in sdatalist.scoredatalist) { updateDatainUI(scoredata); } } }
public void EndGame() { gameEnded = true; Time.timeScale = 0; hud.enabled = false; FadeOut(); // 9 trees per forest tile int treesSaved = 9 * map.GetTilesInState(MapTile.TileState.healthy, MapTile.TileType.forest); int treesTotal = 9 * map.GetTilesOfType(MapTile.TileType.forest); int townsSaved = map.GetTilesInState(MapTile.TileState.healthy, MapTile.TileType.town); int townsTotal = map.GetTilesOfType(MapTile.TileType.town); int minutesPassed = (int)FindObjectOfType <SkyManager>().GetTimePassed(); treeText.text = string.Format("Trees saved: {0}/{1}", treesSaved, treesTotal, treesSaved, treesSaved * 100); peopleText.text = string.Format("Towns saved: {0}/{1}", townsSaved, townsTotal, townsSaved, townsSaved * 5000); timeText.text = string.Format("Time: {0} minutes", minutesPassed); int score = treesSaved * 100 + townsSaved * 5000; totalScore.text = string.Format("Score: {0} points", score); winScreen.enabled = true; // Save Scores string playerName = PlayerPrefs.GetString("name", "Human"); string statstr = PlayerPrefs.GetString("stats", ""); if (!statstr.Equals("")) { ScoreDataList <ScoreData> scoreData = JsonUtility.FromJson <ScoreDataList <ScoreData> >(statstr); List <ScoreData> items = new List <ScoreData>(scoreData.items); ScoreData newScore = new ScoreData(); foreach (ScoreData item in items.ToArray()) { if (item.name.Equals(playerName)) { newScore = item; items.Remove(item); } } newScore.name = playerName; newScore.highScore = score > newScore.highScore ? score : newScore.highScore; newScore.fastestTime = (minutesPassed < newScore.fastestTime || newScore.fastestTime == 0) ? minutesPassed : newScore.fastestTime; newScore.totalMinutesFlown += minutesPassed; newScore.treesSaved += 9 * treesSaved; newScore.peopleSaved += townsSaved; items.Add(newScore); scoreData.items = items.ToArray(); string serialized = JsonUtility.ToJson(scoreData); Debug.LogFormat("saving scores: {0}", serialized); PlayerPrefs.SetString("stats", serialized); PlayerPrefs.Save(); } else { List <ScoreData> items = new List <ScoreData>(); ScoreData newScore = new ScoreData(); newScore.name = playerName; newScore.highScore = score > newScore.highScore ? score : newScore.highScore; newScore.fastestTime = (minutesPassed < newScore.fastestTime || newScore.fastestTime == 0) ? minutesPassed : newScore.fastestTime; newScore.totalMinutesFlown += minutesPassed; newScore.treesSaved += 9 * treesSaved; newScore.peopleSaved += townsSaved; items.Add(newScore); ScoreDataList <ScoreData> scoreData = new ScoreDataList <ScoreData>(); scoreData.items = items.ToArray(); string serialized = JsonUtility.ToJson(scoreData); Debug.LogFormat("saving scores: {0}", serialized); PlayerPrefs.SetString("stats", serialized); PlayerPrefs.Save(); } }