Exemple #1
0
        public static FieldTemplate Parse(int templateId, PackageCollection collection)
        {
            var mapEntry = collection.Resolve($"Map/Map/Map{templateId.ToString("D8")[0]}/{templateId:D8}.img");

            mapEntry = mapEntry ?? collection.Resolve($"Map/Map/Map{templateId.ToString("D9")[0]}/{templateId:D9}.img");

            var link = mapEntry.ResolveFor <int>("info/link");

            return(link.HasValue ? Parse(link.Value, collection) : Parse(templateId, mapEntry));
        }
Exemple #2
0
        public static Map Parse(int id, MapName name, PackageCollection collection, List <int> attemptedIds = null)
        {
            if (attemptedIds == null)
            {
                attemptedIds = new List <int>();
            }

            Stopwatch watch  = Stopwatch.StartNew();
            Map       result = new Map();

            result.Id = id;

            if (name != null)
            {
                result.Id         = name.Id;
                result.Name       = name.Name;
                result.StreetName = name.StreetName;
            }

            WZProperty mapEntry = collection.Resolve($"Map/Map/Map{id.ToString("D8")[0]}/{id.ToString("D8")}.img");

            mapEntry        = mapEntry ?? collection.Resolve($"Map/Map/Map{id.ToString("D9")[0]}/{id.ToString("D9")}.img");
            mapEntry        = mapEntry ?? collection.Resolve($"Map/Map/Map{result.Id.ToString("D8")[0]}/{result.Id.ToString("D8")}.img");
            mapEntry        = mapEntry ?? collection.Resolve($"Map/Map/Map{result.Id.ToString("D9")[0]}/{result.Id.ToString("D9")}.img");
            result.mapEntry = mapEntry;

            int?linkedTo = mapEntry.ResolveFor <int>("info/link");

            if (linkedTo.HasValue && !attemptedIds.Contains(linkedTo.Value))
            {
                watch.Stop();
                attemptedIds.Add(id);
                attemptedIds.Add(result.Id);
                return(Parse(linkedTo.Value, name, collection, attemptedIds));
            }

            Parse(mapEntry, result);

            watch.Stop();
            Package.Logging($"Map Parse took {watch.ElapsedMilliseconds}");

            return(result);
        }
        public static SetItemInfoTemplate Parse(int templateId, PackageCollection collection)
        {
            var entry = collection.Resolve($"Etc/SetItemInfo.img/{templateId}");

            return(Parse(templateId, entry));
        }
Exemple #4
0
        public static MobTemplate Parse(int templateId, PackageCollection collection)
        {
            var mobEntry = collection.Resolve($"Mob/{templateId:D7}.img");

            return(Parse(templateId, mobEntry));
        }
Exemple #5
0
        public static NPCTemplate Parse(int templateId, PackageCollection collection)
        {
            var npcEntry = collection.Resolve($"Npc/{templateId:D7}.img");

            return(Parse(templateId, npcEntry));
        }
Exemple #6
0
        public static ItemTemplate Parse(int templateId, PackageCollection collection)
        {
            WZProperty   prop    = null;
            ItemTemplate item    = null;
            var          type    = templateId / 1000000;
            var          subType = templateId % 1000000 / 10000;
            var          header  = templateId / 10000;

            switch (type)
            {
            case 1:
                item = new ItemEquipTemplate();
                prop = collection.Resolve("Character").Children
                       .SelectMany(c => c.Children)
                       .FirstOrDefault(c => c.Name == $"{templateId:D8}.img");
                break;

            case 2:
                prop = collection.Resolve($"Item/Consume/{header:D4}.img/{templateId:D8}");
                switch (subType)
                {
                case 0:
                case 1:
                case 2:
                case 5:
                case 21:
                case 36:
                case 38:
                case 45:
                    item = new StatChangeItemTemplate();
                    break;

                case 3:
                    item = new PortalScrollItemTemplate();
                    break;

                case 4:
                    item = new UpgradeItemTemplate();
                    break;

                case 10:
                    item = new MobSummonItemTemplate();
                    break;

                case 12:
                    item = new PetFoodItemTemplate();
                    break;

                case 26:
                    item = new TamingMobFoodItemTemplate();
                    break;

                case 27:
                    item = new BridleItemTemplate();
                    break;

                case 28:
                case 29:
                    item = new SkillLearnItemTemplate();
                    break;
                }

                break;

            case 3:
                prop = collection.Resolve($"Item/Install/{header:D4}.img/{templateId:D8}");
                if (subType == 1)
                {
                    item = new PortableChairItemTemplate();
                }
                break;

            case 4:
                prop = collection.Resolve($"Item/Etc/{header:D4}.img/{templateId:D8}");
                break;

            case 5:     // TODO
                switch (subType)
                {
                case 0:
                    item = new PetItemTemplate();
                    prop = collection.Resolve($"Item/Pet/{templateId:D7}.img");
                    break;
                }

                prop = prop ?? collection.Resolve($"Item/Cash/{header:D4}.img/{templateId:D8}");
                break;
            }

            if (item == null)
            {
                item = new ItemBundleTemplate();
            }

            item.Parse(templateId, prop);
            return(item);
        }
Exemple #7
0
 public static IEnumerable <MapMark> Parse(PackageCollection mapWz)
 => mapWz.Resolve("Map/MapHelper.img/mark").Children.Select(mark => new MapMark()
 {
     Mark = mark.ResolveForOrNull <Image <Rgba32> >(), Name = mark.NameWithoutExtension
 });
Exemple #8
0
        public static ItemOptionTemplate Parse(int templateId, PackageCollection collection)
        {
            var entry = collection.Resolve($"Item/ItemOption.img/{templateId:D6}");

            return(Parse(templateId, entry));
        }
 public static SkillTemplate Parse(int templateId, PackageCollection collection)
 {
     var entry = collection.Resolve($"Skill/{templateId / 10000:D3}.img/skill/{templateId:D7}");
     return Parse(templateId, entry);
 }