Esempio n. 1
0
        public static Special Parse(WZProperty stringWz)
        {
            int id;

            if (!int.TryParse(stringWz.NameWithoutExtension, out id))
            {
                return(null);
            }
            Special    item      = new Special(id);
            WZProperty specialWz = stringWz.ResolveOutlink($"Item/Special/{id.ToString("D8").Substring(0, 4)}.img/{id.ToString("D8")}");

            item.MetaInfo    = ItemInfo.Parse(specialWz);
            item.Description = ItemDescription.Parse(stringWz, id);

            return(item);
        }
Esempio n. 2
0
        public static Pet Parse(WZProperty stringWz)
        {
            int id;

            if (!int.TryParse(stringWz.NameWithoutExtension, out id))
            {
                return(null);
            }

            Pet        p        = new Pet(id);
            WZProperty petEntry = stringWz.ResolveOutlink($"Item/Pet/{id}");

            p.frameBooks  = petEntry.Children.Where(c => c.NameWithoutExtension != "info").ToDictionary(c => c.NameWithoutExtension, c => FrameBook.Parse(c));
            p.Description = ItemDescription.Parse(stringWz, id);
            p.MetaInfo    = ItemInfo.Parse(petEntry);

            return(p ?? null);
        }
Esempio n. 3
0
        public static Consume Parse(WZProperty stringWz)
        {
            int id;

            if (!int.TryParse(stringWz.NameWithoutExtension, out id))
            {
                return(null);
            }

            Consume item = new Consume(id);

            WZProperty itemWz = stringWz.ResolveOutlink($"Item/Consume/{id.ToString("D8").Substring(0, 4)}.img/{id.ToString("D8")}");

            if (itemWz.Children.Any(c => c.NameWithoutExtension.Equals("info")))
            {
                item.MetaInfo = ItemInfo.Parse(itemWz);
            }
            item.Description = ItemDescription.Parse(stringWz, id);

            return(item);
        }
Esempio n. 4
0
        public static Cash Parse(WZProperty stringWz)
        {
            int id;

            if (!int.TryParse(stringWz.NameWithoutExtension, out id))
            {
                return(null);
            }

            Cash item = new Cash(id);

            WZProperty itemWz = stringWz.ResolveOutlink($"Item/Cash/{id.ToString("D8").Substring(0, 4)}.img/{id.ToString("D8")}");

            if (itemWz != null)
            {
                item.MetaInfo = ItemInfo.Parse(itemWz);
                item.effect   = CashEffect.Parse((itemWz?.Resolve("effect") ?? itemWz));
            }
            item.Description = ItemDescription.Parse(stringWz, id);

            return(item);
        }
Esempio n. 5
0
        public static Install Parse(WZProperty stringWz)
        {
            int id;

            if (!int.TryParse(stringWz.NameWithoutExtension, out id))
            {
                return(null);
            }

            Install item = new Install(id);

            string     itemIdStr = id.ToString("D8");
            WZProperty itemWz    = stringWz.ResolveOutlink($"Item/Install").Children.FirstOrDefault(b => itemIdStr.StartsWith(b.NameWithoutExtension)).Resolve(itemIdStr);

            if (itemWz.Children.Any(c => c.NameWithoutExtension.Equals("info")))
            {
                item.MetaInfo = ItemInfo.Parse(itemWz);
            }
            item.Description = ItemDescription.Parse(stringWz, id);

            return(item);
        }
Esempio n. 6
0
        public static Equip Parse(WZProperty itemString)
        {
            string group = itemString.Parent.NameWithoutExtension;
            int    id    = int.Parse(itemString.NameWithoutExtension);
            Equip  item  = new Equip(id, group);

            try
            {
                WZProperty characterItem = itemString.ResolveOutlink(Path.Combine("Character", group, $"{id.ToString("D8")}.img"));
                item.MetaInfo    = ItemInfo.Parse(characterItem);
                item.Description = ItemDescription.Parse(itemString, id);

                bool hasEffectsPerItemType = characterItem.Children.Where(c => c.NameWithoutExtension != "info").All(c => int.TryParse(c.NameWithoutExtension, out int blah));

                if (hasEffectsPerItemType)
                {
                    item.FrameBooksPerWeaponType = characterItem.Children.Where(c => c.NameWithoutExtension != "info")
                                                   .ToDictionary(c => int.Parse(c.NameWithoutExtension), c => ProcessFrameBooks(c));
                    item.FrameBooks = item.FrameBooksPerWeaponType.Values.FirstOrDefault() ?? new Dictionary <string, EquipFrameBook>();
                }
                else
                {
                    item.FrameBooks = ProcessFrameBooks(characterItem);
                }

                WZProperty effect = itemString.ResolveOutlink($"Effect/ItemEff/{id}");
                if (effect != null)
                {
                    item.ItemEffects = Effects.Parse(effect);
                }

                return(item);
            }
            catch (Exception ex)
            {
                ErrorCallback($"{ex.Message}{Environment.NewLine}{ex.StackTrace}");
                return(null);
            }
        }