public int[][] Layer(string format, int id) { if (Intern()) { TextAsset t = UnityEngine.Resources.Load <TextAsset>(Dir() + format + id); return(Ncsv.Convert(Ncsv.Read(t.text))); } return(Ncsv.Convert(Ncsv.Read(File.ReadAllText(Dir() + format + id + ".csv")))); }
public IEnumerator ParseCsv(string path) { bool t = LSys.tem.translations != null; yield return(LSys.tem.Load.ShowMessage(t?S.T("loadingSys", Name()):"Loading " + Name())); //string[][] data = Ncsv.Read(Read(path)); //Debug.Log($"Library {id}: from {path}"); string[][] data = Ncsv.Csv2ArrayOwn(Read(path)); Debug.Log($"Library {id}: Reading {data.Length} elements with {data[0].Length} headers from {path}"); for (int l = 1; l < data.Length; l++) { if (l % 10 == 1) { yield return(LSys.tem.Load.ShowSubMessage(t?S.T("loadingSysSub", l, data.Length):$"Reading {l}/{data.Length}")); } //skip? if (string.IsNullOrEmpty(data[l][0]) || data[l][0].StartsWith("//")) { continue; } T ele = GetOrCreate(data[l][0]); //wrong size? if (data[l].Length > data[0].Length) { Debug.LogWarning($"{id}: {data[l][0]} has {data[l].Length} data and only {data[0].Length} header"); Debug.Log(String.Join(", ,", data[0])); Debug.Log(String.Join(", ,", data[l])); } for (int i = 1; i < data[l].Length; i++) { if (string.IsNullOrEmpty(data[l][i]) || i >= data[0].Length) { continue; } if (data[0][i].StartsWith("//")) { continue; } try { ParseElement(ele, data[0][i], data[l][i]); } catch (Exception e) { Debug.LogError(e); Debug.Log($"{l}/{i}: {data[l].Length}/{data[0].Length}"); Debug.Log(data[l][0] + ": " + ele); Debug.Log(data[0][i]); Debug.Log(data[l][i]); } } } yield return(LSys.tem.Load.ShowSubMessage("Tidy up " + Name())); AfterLoad(); }