Exemple #1
0
        private void LoadWzData(WzMapleVersion mapleVersion, string mapleDirectory)
        {
            int selectedRoot = TabControlMain.SelectedIndex;

            switch (TabControlMain.SelectedTab.Controls[0])
            {
            case DataViewer view: {     // contains just the grid table
                view.GridView.Rows.Clear();
                break;
            }

            case TabControl ctrl: {     // contains sub-categories
                if (ctrl.SelectedTab.Controls[0] is DataViewer view)
                {
                    view.GridView.Rows.Clear();
                }
                break;
            }
            }
            ((DataViewer)EquipTab.SelectedTab.Controls[0]).GridView.Rows.Clear();
            switch (selectedRoot)
            {
            default:
                Debug.WriteLine($"Unable to load WZ data unhandled selected index: {TabControlMain.SelectedIndex}");
                break;

            case 0:     // Equips
            {
                if (!LoadWzFileIfAbsent(ref CharacterWz, mapleDirectory + "/Character", mapleVersion))
                {
                    return;
                }

                List <WzImage> children = CharacterWz.WzDirectory.GetChildImages();
                children.Sort((a, b) => a.Name.CompareTo(b.Name));
                for (int i = 0; i < CharacterWz.WzDirectory.CountImages(); i++)
                {
                    WzImage image = children[i];
                    string  name  = Path.GetFileNameWithoutExtension(image.Name);
                    if (int.TryParse(name, out int equipId))
                    {
                        int selectedTab = EquipTab.SelectedIndex;
                        int bodyPart    = equipId / 10000;
                        switch (bodyPart)
                        {
                        default:
                            if (selectedTab == 2 && bodyPart >= 130 && bodyPart <= 170)
                            {
                                AddGridRow(EquipWeaponsView.GridView, image);
                            }
                            else if (selectedTab == 1 && (bodyPart == 2 || bodyPart == 5))
                            {
                                AddFaceRow(image);
                            }
                            else if (selectedTab == 0 && (bodyPart == 3 || bodyPart == 4))
                            {
                                AddHairRow(image);
                            }
                            break;

                        case 100:         // Caps
                            if (selectedTab == 4)
                            {
                                AddGridRow(EquipCapsView.GridView, image);
                            }
                            break;

                        case 101:
                        case 102:
                        case 103:
                        case 112:
                        case 113:
                        case 114:         // Accessory
                            if (selectedTab == 3)
                            {
                                AddGridRow(EquipAccessoryView.GridView, image);
                            }
                            break;

                        case 110:         // Cape
                            if (selectedTab == 9)
                            {
                                AddGridRow(EquipCapesView.GridView, image);
                            }
                            break;

                        case 104:         // Coat
                            if (selectedTab == 6)
                            {
                                AddGridRow(EquipTopsView.GridView, image);
                            }
                            break;

                        case 108:         // Glove
                            if (selectedTab == 10)
                            {
                                AddGridRow(EquipGlovesView.GridView, image);
                            }
                            break;

                        case 105:         // Longcoat
                            if (selectedTab == 5)
                            {
                                AddGridRow(EquipsOverallsView.GridView, image);
                            }
                            break;

                        case 106:         // Pants
                            if (selectedTab == 7)
                            {
                                AddGridRow(EquipPantsView.GridView, image);
                            }
                            break;

                        case 180:
                        case 181:
                        case 182:
                        case 183:         // Pet Equips
                                          // image.ParseImage();
                            break;

                        case 111:         // Rings
                            if (selectedTab == 11)
                            {
                                AddGridRow(EquipRingsView.GridView, image);
                            }
                            break;

                        case 109:         // Shield
                            if (selectedTab == 12)
                            {
                                AddGridRow(EquipShieldsView.GridView, image);
                            }
                            break;

                        case 107:         // Shoes
                            if (selectedTab == 8)
                            {
                                AddGridRow(EquipShoesView.GridView, image);
                            }
                            break;

                        case 190:
                        case 191:
                        case 193:         // Taming Mob
                            if (selectedTab == 13)
                            {
                                AddGridRow(EquipMountsView.GridView, image);
                            }
                            break;
                        }
                    }
                }
                break;
            }

            case 1:     // Use
            case 2:     // Setup
            case 3:     // Etc
            case 4:     // Cash
            case 9:     // Pets
            {
                if (!LoadWzFileIfAbsent(ref ItemWz, mapleDirectory + "/Item", mapleVersion))
                {
                    return;
                }
                List <WzImage> children = ItemWz.WzDirectory.GetChildImages();
                children.Sort((a, b) => a.Name.CompareTo(b.Name));
                for (int i = 0; i < ItemWz.WzDirectory.CountImages(); i++)
                {
                    WzImage image = children[i];
                    string  name  = Path.GetFileNameWithoutExtension(image.Name);
                    if (int.TryParse(name, out int itemId))
                    {
                        switch (itemId)
                        {
                        default:
                            image.ParseImage();
                            if (selectedRoot == 9 && ItemConstants.IsPet(itemId))         // pet
                            {
                                AddGridRow(PetsView.GridView, image);
                            }
                            if (selectedRoot == 3 && ItemConstants.IsEtc(itemId))         // etc
                            {
                                image.WzProperties.ForEach(img => AddGridRow(EtcView.GridView, img));
                            }
                            if (selectedRoot == 4 && ItemConstants.IsCash(itemId))         // cash
                            {
                                image.WzProperties.ForEach(img => AddGridRow(CashView.GridView, img));
                            }
                            if (selectedRoot == 1 && ItemConstants.IsConsume(itemId))         // consume
                            {
                                image.WzProperties.ForEach(img => AddGridRow(UseConsumeView.GridView, img));
                            }
                            break;

                        case 204:         // scrolls
                            if (selectedRoot == 1)
                            {
                                image.WzProperties.ForEach(img => AddGridRow(UseScrollsView.GridView, img));
                            }
                            break;

                        case 206:
                        case 207:
                        case 233:         // projectiles
                            if (selectedRoot == 1)
                            {
                                image.WzProperties.ForEach(img => AddGridRow(UseProjectileView.GridView, img));
                            }
                            break;

                        case 301:         // chairs
                        case 399:         // x-mas characters
                            if (selectedRoot == 2)
                            {
                                image.WzProperties.ForEach(img => AddGridRow((itemId == 301 ? SetupChairsView : SetupOthersView).GridView, img));
                            }
                            break;
                        }
                    }
                }
                break;
            }

            case 5:     // Map
            {
                if (!LoadWzFileIfAbsent(ref MapWz, mapleDirectory + "/Map", mapleVersion))
                {
                    return;
                }
                List <WzImage> children = MapWz.WzDirectory.GetChildImages();
                children.Sort((a, b) => a.Name.CompareTo(b.Name));
                for (int i = 0; i < MapWz.WzDirectory.CountImages(); i++)
                {
                    WzImage image  = children[i];
                    string  sMapId = Path.GetFileNameWithoutExtension(image.Name);
                    if (int.TryParse(sMapId, out int mapId))
                    {
                        image.ParseImage();
                        string           properties = BuildProperties(image);
                        WzCanvasProperty icon       = (WzCanvasProperty)image.GetFromPath("miniMap/canvas");
                        string           name       = StringUtility.GetFieldFullName(mapId);

                        MapsView.GridView.Rows.Add(mapId, icon?.GetBitmap(), name, properties);
                    }
                }
                break;
            }

            case 6:     // Mob
            {
                if (!LoadWzFileIfAbsent(ref MobWz, mapleDirectory + "/Mob", mapleVersion))
                {
                    return;
                }
                MobsView.GridView.Rows.Clear();

                List <WzImage> children = MobWz.WzDirectory.GetChildImages();
                children.Sort((a, b) => a.Name.CompareTo(b.Name));
                for (int i = 0; i < MobWz.WzDirectory.CountImages(); i++)
                {
                    WzImage image = children[i];
                    AddGridRow(MobsView.GridView, image);
                }
                break;
            }

            case 7:     // Skills
            {
                if (!LoadWzFileIfAbsent(ref SkillWz, mapleDirectory + "/Skill", mapleVersion))
                {
                    return;
                }
                SkillsView.GridView.Rows.Clear();

                SkillWz.WzDirectory.ParseImages();
                List <WzImage> children = SkillWz.WzDirectory.GetChildImages();
                for (int i = 0; i < SkillWz.WzDirectory.CountImages(); i++)
                {
                    WzImage image = children[i];
                    string  name  = Path.GetFileNameWithoutExtension(image.Name);
                    if (int.TryParse(name, out _))
                    {
                        WzImageProperty tree = image.GetFromPath("skill");
                        if (tree is WzSubProperty)
                        {
                            List <WzImageProperty> skills = tree.WzProperties;
                            skills.ForEach(s => AddSkillRow(s));
                        }
                    }
                }
                break;
            }

            case 8:     // NPCs
            {
                if (!LoadWzFileIfAbsent(ref NpcWz, mapleDirectory + "/Npc", mapleVersion))
                {
                    return;
                }
                NPCView.GridView.Rows.Clear();

                List <WzImage> children = NpcWz.WzDirectory.GetChildImages();
                children.Sort((a, b) => a.Name.CompareTo(b.Name));
                for (int i = 0; i < NpcWz.WzDirectory.CountImages(); i++)
                {
                    WzImage image = children[i];
                    AddGridRow(NPCView.GridView, image);
                }
                break;
            }

            case 10:     // Reactors
            {
                if (!LoadWzFileIfAbsent(ref ReactorWz, mapleDirectory + "/Reactor", mapleVersion))
                {
                    return;
                }
                ReactorView.GridView.Rows.Clear();

                List <WzImage> children = ReactorWz.WzDirectory.GetChildImages();
                children.Sort((a, b) => a.Name.CompareTo(b.Name));
                for (int i = 0; i < ReactorWz.WzDirectory.CountImages(); i++)
                {
                    WzImage image = children[i];
                    AddGridRow(ReactorView.GridView, image);
                }
                break;
            }
            }
        }