コード例 #1
0
        /// <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));
            }
        }
コード例 #2
0
        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));
            }
        }
コード例 #3
0
 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));
             }
         }
     }
 }