lap storage working
This commit is contained in:
1 parent
db59cd1377
commit
c611014b88
2 files changed
+59
-56
No files matched your search
+58
-51
@@ -2,6 +2,8 @@ using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
|
||||
using System.IO;
|
||||
|
||||
using UnityEngine;
|
||||
using UnityEditor;
|
||||
using UnityEngine.SceneManagement;
|
||||
@@ -36,43 +38,65 @@ public struct Lap {
|
||||
}
|
||||
}
|
||||
|
||||
static class LapStorageService {
|
||||
static Dictionary<string, LapJSON> lapsByMap;
|
||||
static string lapStoragePath = Path.Combine(Application.persistentDataPath, "lapStorage.json");
|
||||
|
||||
static void GetPlayerLaps() {
|
||||
// read json
|
||||
// assign it to lapStorage
|
||||
}
|
||||
|
||||
// laps.count
|
||||
static int NumberOfCompletions() {}
|
||||
|
||||
// finds your PB in all completions
|
||||
static int Rank() {}
|
||||
|
||||
// open json
|
||||
public static void PersistLap(Lap lap) {
|
||||
bool found = lapsByMap.TryGetValue(lap.Map, out var lapJson);
|
||||
if (!found)
|
||||
lapJson = new LapJSON { Map = lap.Map, Laps = new List<Lap>() };
|
||||
LapJson.Laps.Add(lap);
|
||||
lapsByMap[lap.Map] = lapJson;
|
||||
|
||||
LapStorage lapStorage = new LapStorage { Laps = lapsByMap.Values.ToList() };
|
||||
File.WriteAllText(lapStoragePath, JsonUtility.ToJson(lapStorage));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
[Serializable]
|
||||
public class LapJSON {
|
||||
public string Map;
|
||||
public List<Lap> Laps;
|
||||
public List<Lap> Laps = new();
|
||||
}
|
||||
|
||||
public class LapStorage {
|
||||
public List<LapJSON> Laps;
|
||||
public List<LapJSON> Laps = new();
|
||||
}
|
||||
|
||||
static class LapStorageService {
|
||||
// static Dictionary<string, LapJSON> lapsByMap = new Dictionary<string, LapJSON>();
|
||||
static Dictionary<string, LapJSON> lapsByMap = new();
|
||||
static string lapStoragePath = Path.Combine(Application.persistentDataPath, "lapStorage.json");
|
||||
|
||||
static LapStorageService() {
|
||||
LapStorage lapStorage = new LapStorage();
|
||||
|
||||
try {
|
||||
string json = File.ReadAllText(lapStoragePath);
|
||||
JsonUtility.FromJsonOverwrite(json, lapStorage);
|
||||
} catch {
|
||||
Debug.Log("No existing lapStorage.json");
|
||||
}
|
||||
|
||||
lapsByMap = lapStorage.Laps.ToDictionary((lapJson) => lapJson.Map);
|
||||
}
|
||||
|
||||
public static LapJSON GetPlayerLaps(string mapName) {
|
||||
LapJSON currentLaps;
|
||||
bool found = lapsByMap.TryGetValue(mapName, out currentLaps);
|
||||
if (!found)
|
||||
return new LapJSON { Map = mapName, Laps = new List<Lap>() };
|
||||
return currentLaps;
|
||||
}
|
||||
|
||||
static void Persist() {
|
||||
LapStorage lapStorage = new LapStorage { Laps = lapsByMap.Values.ToList() };
|
||||
File.WriteAllText(lapStoragePath, JsonUtility.ToJson(lapStorage));
|
||||
}
|
||||
|
||||
// laps.count
|
||||
public static int NumberOfCompletions() { return 0; }
|
||||
|
||||
// finds your PB in all completions
|
||||
public static int Rank() { return 1; }
|
||||
|
||||
public static void PersistLap(Lap lap) {
|
||||
LapJSON lapJson;
|
||||
bool found = lapsByMap.TryGetValue(lap.Map, out lapJson);
|
||||
if (!found)
|
||||
lapJson = new LapJSON { Map = lap.Map, Laps = new List<Lap>() };
|
||||
|
||||
// Add lap and persist
|
||||
lapJson.Laps.Add(lap);
|
||||
lapsByMap[lap.Map] = lapJson;
|
||||
Persist();
|
||||
}
|
||||
}
|
||||
|
||||
public class Timing: MonoBehaviour {
|
||||
@@ -90,7 +114,7 @@ public class Timing: MonoBehaviour {
|
||||
|
||||
public LapStorage lapStorage;
|
||||
|
||||
string mapName;
|
||||
public string mapName;
|
||||
|
||||
void Awake() {
|
||||
lapTimes = new();
|
||||
@@ -102,9 +126,7 @@ public class Timing: MonoBehaviour {
|
||||
// set map name
|
||||
Scene scene = SceneManager.GetActiveScene();
|
||||
mapName = scene.name;
|
||||
|
||||
Debug.Log("Track Sector Count - " + sectors.Length);
|
||||
Persist();
|
||||
}
|
||||
|
||||
void Update() {
|
||||
@@ -178,11 +200,12 @@ public class Timing: MonoBehaviour {
|
||||
Awake();
|
||||
|
||||
Debug.Log($"Ending lap Sectors={sectorTimes.Count} Name={mapName} Lap={lapTimes.Count}");
|
||||
|
||||
Lap l = new Lap { Map = mapName, Number = lapTimes.Count, Sectors = sectorTimes };
|
||||
Debug.Log($"EndLap {l}");
|
||||
lapTimes.Add(l);
|
||||
Persist();
|
||||
|
||||
LapStorageService.PersistLap(l);
|
||||
Debug.Log($"Laps Stored {LapStorageService.GetPlayerLaps(mapName)}");
|
||||
}
|
||||
|
||||
public SectorColour GetSectorColour(SectorTime s) {
|
||||
@@ -197,21 +220,5 @@ public class Timing: MonoBehaviour {
|
||||
false => SectorColour.Yellow,
|
||||
};
|
||||
}
|
||||
|
||||
void Load() {
|
||||
try {
|
||||
string json = File.ReadAllText(lapStoragePath);
|
||||
JsonUtility.FromJsonOverwrite(json, lapStorage);
|
||||
} catch {
|
||||
// file doesn't exist yet
|
||||
return Persist();
|
||||
}
|
||||
}
|
||||
|
||||
void Persist() {
|
||||
LapJSON lapJson = new LapJSON { Map = mapName, Laps = lapTimes };
|
||||
string lapJsonStr = JsonUtility.ToJson(lapJson);
|
||||
Debug.Log($"Lap JSON {lapJsonStr}");
|
||||
}
|
||||
}
|
||||
|
||||
@@ -49,12 +49,8 @@ public class ShipUi : MonoBehaviour {
|
||||
if (sectors == null)
|
||||
Debug.LogWarning("null sectors");
|
||||
|
||||
// timing not ready yet or smth?
|
||||
if (timing.lapTimes == null)
|
||||
return;
|
||||
|
||||
timeSheet.Clear();
|
||||
foreach (Lap lap in timing.lapTimes) {
|
||||
foreach (Lap lap in LapStorageService.GetPlayerLaps(timing.mapName).Laps) {
|
||||
Label l = new Label();
|
||||
l.text = $"{lap}";
|
||||
timeSheet.Add(l);
|
||||
|
||||
Reference in new issue
Block a user