Beispiel #1
0
        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"))));
        }
Beispiel #2
0
        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();
        }