/// <summary> /// Loads existing map using in-game ID. (Alt+F2) /// </summary> public static Map Load(int id) { int fid, sid; if (!Common.E(id, out fid, out sid)) { return(null); } using (FileStream stream = new FileStream(Paths.MapData.Format(fid), FileMode.Open)) { XLDNavigator nav = XLDNavigator.ReadToIndex(stream, (short)sid); int size = nav.SubfileLength; if (size == 0) { return(null); } return(new Map(id, nav)); } }
protected override T GetEntry(int id) { int fi, si; if (Common.E(id, out fi, out si)) { using (XLDNavigator nav = this.XLDPath.OpenXLD(fi)) { nav.GoToSubfile((short)si); if (nav.SubfileLength == 0) { return(default(T)); } return(init(id, nav, nav.SubfileLength)); } } else { return(default(T)); } }
protected override IEnumerable <KeyValuePair <int, T> > GetPairEnumerator() { foreach (var pair in this.XLDPath.EnumerateFiles()) { using (XLDNavigator nav = new XLDNavigator(pair.Value)) { for (short i = 0; i < nav.NumSubfiles; i++) { nav.GoToSubfile(i); int id = Common.E(pair.Key, i); T value; if (nav.SubfileLength == 0) { value = default(T); } else { value = init(id, nav, nav.SubfileLength); } yield return(new KeyValuePair <int, T>(id, value)); } } } }