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)); }
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)); }
public static MobTemplate Parse(int templateId, PackageCollection collection) { var mobEntry = collection.Resolve($"Mob/{templateId:D7}.img"); return(Parse(templateId, mobEntry)); }
public static NPCTemplate Parse(int templateId, PackageCollection collection) { var npcEntry = collection.Resolve($"Npc/{templateId:D7}.img"); return(Parse(templateId, npcEntry)); }
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); }
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 });
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); }