public void Load(string metapath, yElement metain, string[] txt) { int len = UnityYAMLAsset.GameBase.Length + 1; Path = metapath.Substring(len, metapath.Length - len - 5); meta = metain; List <int> addrlist = new List <int>(); List <ulong> idlist = new List <ulong>(); len = txt.Length; for (int i = 2; i < len; i++) { if (txt[i].StartsWith("--- !u!")) { addrlist.Add(i); string[] paar = txt[i].Substring(7).Split(kongge, StringSplitOptions.RemoveEmptyEntries); ulong idd = ulong.Parse(paar[1]); idlist.Add(idd); Blocks[idd] = new yBlock(this, int.Parse(paar[0]), idd); } } addrlist.Add(len); len = addrlist.Count - 1; for (int i = 0; i < len; i++) { int start = addrlist[i]; int end = addrlist[i + 1]; Blocks[idlist[i]].Load(StringGroup.Parse(txt, start + 1, end), Blocks); } isDummy = false; }
public static YAMLfile Create(string path) { if (!File.Exists(path)) { path = UnityYAMLAsset.GameBase + '\\' + path; } string azet = path.Substring(0, path.Length - 5).ToLower(); if (!File.Exists(azet)) { return(null); } var tmpmeta = new yElement(StringGroup.Parse(File.ReadAllLines(path), 0, -1).substr, null, null, 0); bool isDm = false; string rtig = null; string[] txt = null; foreach (var tig in nonYAML) { if (azet.EndsWith(tig)) { isDm = true; rtig = tig; goto aftalo; } } txt = File.ReadAllLines(azet); if (!txt[0].StartsWith("%YAML")) { return(null); } aftalo: azet = ((yValue)tmpmeta.Fields["guid"]).ToString(); YAMLfile yaoi; if (!UnityYAMLAsset.Guid2File.TryGetValue(azet, out yaoi)) { if (isDm) { yaoi = new YAMLfile(path, tmpmeta, rtig); } else { yaoi = new YAMLfile(path, tmpmeta, txt); } UnityYAMLAsset.Guid2File[azet] = yaoi; } if (yaoi.isDummy) { if (isDm) { yaoi.LoadnonYAML(path, tmpmeta, rtig); } else { yaoi.Load(path, tmpmeta, txt); } } return(yaoi); }