Exemplo n.º 1
0
        public static void GetItemsBySlot(this ItemCollection items, E_CHAR_SLOTS slot)
        {
            WowDatabase _wowDatabase = Engine.Instance.WowDatabase;
            uint        itemCount    = _wowDatabase.ItemCount;

            items.Clear();

            for (uint i = 0; i < itemCount; ++i)
            {
                SItem?r = _wowDatabase.GetItem(i);
                if (r != null)
                {
                    if (r.Value.IsMatchSlot(slot) && (r.Value.name.IndexOf("deprecated", StringComparison.CurrentCultureIgnoreCase) == -1))
                    {
                        items.Add(new Item()
                        {
                            Name         = r.Value.name,
                            Type         = (E_ITEM_TYPE)r.Value.type,
                            Id           = r.Value.id,
                            SubClassName = r.Value.subclassname
                        });
                    }
                }
            }
        }
        public static void GetAllSpellVisualEffects(this SpellVisualEffectCollection spellVisualEffects)
        {
            WowDatabase wowDatabase = Engine.Instance.WowDatabase;

            uint visualCount = wowDatabase.SpellVisualEffectCount;

            spellVisualEffects.Clear();

            for (uint i = 0; i < visualCount; ++i)
            {
                int?id = wowDatabase.GetSpellVisualEffectId(i);
                if (id != null)
                {
                    string path = Engine.Instance.WowDatabase.GetSpellVisualEffectPath(id.Value);
                    if (Engine.Instance.WowEnvironment.IsFileExist(path))
                    {
                        string name = Engine.Instance.WowDatabase.GetSpellVisualEffectName(id.Value);
                        if (!name.Contains("zzOLD_"))
                        {
                            spellVisualEffects.Add(new SpellVisualEffect()
                            {
                                Id = id.Value, Name = name
                            });
                        }
                    }
                }
            }
        }
Exemplo n.º 3
0
        private void ChangeCharacter()
        {
            if (raceInfo == null)
            {
                return;
            }

            WowDatabase _wowDatabase = Engine.Instance.WowDatabase;
            string      path         = _wowDatabase.GetCharacterPath(raceInfo.ShortName, female, ModelEditorService.Instance.IsCharacterHD);
            M2SceneNode node         = ModelSceneService.Instance.SetMainM2SceneNode(path, false);

            if (node == null && ModelEditorService.Instance.IsCharacterHD)
            {
                path = _wowDatabase.GetCharacterPath(raceInfo.ShortName, female, false);
                node = ModelSceneService.Instance.SetMainM2SceneNode(path, false);
            }
            UpdateMaxCharFeature();
            UpdateCurrentCharFeature();
            UpdateStartOutfitClasses();
            SelectClass(classShortName, true);

            Player player = Client.Instance.GetPlayer();

            if (EngineService.Instance.IsGameMode && node != null && (node.Type == M2Type.MT_CHARACTER || node.Type == M2Type.MT_CREATRUE))
            {
                player.SetM2AsTarget(node, 15, (float)(Math.PI / 6.0f));
            }
            else
            {
                player.SetM2AsTarget(null, 15, (float)(Math.PI / 6.0f));
            }
        }
        private bool LoadCharacter()
        {
            string      shortname    = Engine.Instance.WowDatabase.GetRaceName(raceId);
            WowDatabase _wowDatabase = Engine.Instance.WowDatabase;
            string      path         = _wowDatabase.GetCharacterPath(shortname, female, true);
            M2SceneNode node         = ModelSceneService.Instance.SetMainM2SceneNode(path, false);

            if (node == null)
            {
                path = _wowDatabase.GetCharacterPath(shortname, female, true);
                node = ModelSceneService.Instance.SetMainM2SceneNode(path, false);
            }

            if (node != null)
            {
                node.M2Instance.CharFeature = charFeature;
            }

            Player player = Client.Instance.GetPlayer();

            if (EngineService.Instance.IsGameMode && node != null &&
                (node.Type == M2Type.MT_CHARACTER || node.Type == M2Type.MT_CREATRUE))
            {
                player.SetM2AsTarget(node, 15, (float)(Math.PI / 6.0f));
            }
            else
            {
                player.SetM2AsTarget(null, 15, (float)(Math.PI / 6.0f));
            }

            return(node != null);
        }
        public static void GetAllMaps(this MapCollection maps, Languages language)
        {
            WowDatabase _wowDatabase = Engine.Instance.WowDatabase;

            uint mapCount = _wowDatabase.MapCount;

            maps.Clear();

            for (uint i = 0; i < mapCount; ++i)
            {
                SMap?m = _wowDatabase.GetMap(i);
                if (m != null)
                {
                    if (m.Value.name.IndexOf("test", StringComparison.CurrentCultureIgnoreCase) != -1 ||
                        m.Value.name.IndexOf("transport", StringComparison.CurrentCultureIgnoreCase) != -1 ||
                        m.Value.name.IndexOf("QA_DVD", StringComparison.CurrentCultureIgnoreCase) != -1 ||
                        m.Value.name.IndexOf("development", StringComparison.CurrentCultureIgnoreCase) != -1)
                    {
                        continue;
                    }

                    maps.Add(new Map()
                    {
                        Id = m.Value.id, Name = m.Value.name, Type = GetMapTypeName(m.Value.type, language)
                    });
                }
            }
        }
        public static void GetItemsByType(this M2ItemCollection items, E_ITEM_TYPE type)
        {
            WowDatabase _wowDatabase = Engine.Instance.WowDatabase;
            uint        itemCount    = _wowDatabase.ItemCount;

            items.Clear();

            for (uint i = 0; i < itemCount; ++i)
            {
                SItem?r = _wowDatabase.GetItem(i);
                if (r != null && r.Value.type == (int)type && r.Value.name.IndexOf("deprecated", StringComparison.CurrentCultureIgnoreCase) == -1)
                {
                    int    itemid = r.Value.id;
                    string modelpath;
                    string texturepath;
                    modelpath = _wowDatabase.GetItemPath(itemid, out texturepath);

                    items.Add(new M2Item()
                    {
                        Name         = r.Value.name,
                        Type         = (E_ITEM_TYPE)r.Value.type,
                        Id           = r.Value.id,
                        SubClassName = r.Value.subclassname,
                        ModelPath    = modelpath,
                        TexturePath  = texturepath
                    });
                }
            }
        }
        private void ChangeCharacter()
        {
            if (raceInfo == null)
            {
                return;
            }

            WowDatabase _wowDatabase = Engine.Instance.WowDatabase;
            string      path         = _wowDatabase.GetCharacterPath(raceInfo.ShortName, female);
            M2SceneNode node         = ModelSceneService.Instance.SetMainM2SceneNode(path, false);

            UpdateStartOutfitClasses();
            UpdateMaxCharFeature();
            UpdateCurrentCharFeature();
        }
Exemplo n.º 8
0
        public static void GetAllNpcs(this NpcCollection npcs, bool isHD, bool includePath)
        {
            WowDatabase _wowDatabase = Engine.Instance.WowDatabase;

            uint npcCount = _wowDatabase.NpcCount;

            npcs.Clear();

            for (uint i = 0; i < npcCount; ++i)
            {
                SNpc?r = _wowDatabase.GetNpc(i);
                if (r != null && r.Value.modelId != -1)
                {
                    if (includePath)
                    {
                        string path = _wowDatabase.GetNpcPath(r.Value.modelDisplayId, isHD);
                        if (path == "")
                        {
                            continue;
                        }

                        if (!Engine.Instance.WowEnvironment.IsFileExist(path) && isHD)
                        {
                            path = _wowDatabase.GetNpcPath(r.Value.modelDisplayId, false);
                        }

                        npcs.Add(new Npc()
                        {
                            Name           = r.Value.name,
                            Type           = r.Value.type,
                            ModelDisplayId = r.Value.modelDisplayId,
                            ModelId        = r.Value.modelId,
                            Path           = path
                        });
                    }
                    else
                    {
                        npcs.Add(new Npc()
                        {
                            Name           = r.Value.name,
                            Type           = r.Value.type,
                            ModelDisplayId = r.Value.modelDisplayId,
                            ModelId        = r.Value.modelId
                        });
                    }
                }
            }
        }
Exemplo n.º 9
0
        public void FillData()
        {
            TextureNames.Clear();

            WowDatabase database = Engine.Instance.WowDatabase;

            for (uint i = 0; i < database.TextureCount; ++i)
            {
                TextureNames.Add(new Entry()
                {
                    Name = database.GetTextureFileName(i), Id = (int)i
                });
            }

            textureNamesView = CollectionViewSource.GetDefaultView(TextureNames);
        }
Exemplo n.º 10
0
        public void FillData()
        {
            M2Names.Clear();

            WowDatabase database = Engine.Instance.WowDatabase;

            for (uint i = 0; i < database.WorldModelCount; ++i)
            {
                M2Names.Add(new Entry()
                {
                    Name = database.GetWorldModelName(i, false), Id = (int)i
                });
            }

            m2NamesView = CollectionViewSource.GetDefaultView(M2Names);
        }
Exemplo n.º 11
0
        void _wmoSelect_MapLocalWMO_Selected(object sender, Entry entry)
        {
            WowDatabase  database = Engine.Instance.WowDatabase;
            string       path     = database.GetWMOFileName((uint)entry.Id, false);
            WMOSceneNode node     = ModelSceneService.Instance.SetMainWMOSceneNode(path);

            ModelEditorService.Instance.SetWireFrame(node);

            //update doodad names
            _wmoSelect.UpdateDoodadM2Names(node);

            //update property
            if (node != null)
            {
                ShellService.Instance.PropertyContent.UpdateWmoNode(node);
            }
        }
Exemplo n.º 12
0
        void _wmoTreeViewSelect_WmoTreeView_Selected(object sender, string wmofilename)
        {
            WowDatabase  database = Engine.Instance.WowDatabase;
            string       path     = wmofilename;
            WMOSceneNode node     = ModelSceneService.Instance.SetMainWMOSceneNode(path);

            ModelEditorService.Instance.SetWireFrame(node);

            //update doodad names
            _wmoTreeViewSelect.UpdateDoodadM2Names(node);

            //update property
            if (node != null)
            {
                ShellService.Instance.PropertyContent.UpdateWmoNode(node);
            }
        }
Exemplo n.º 13
0
        public static void GetAllSlotItems(this SlotItemCollection slotItems, M2SceneNode node)
        {
            slotItems.Clear();

            if (node.Type != M2Type.MT_CHARACTER || node.IsNpc)
            {
                return;
            }

            WowDatabase wowDatabase = Engine.Instance.WowDatabase;

            E_CHAR_SLOTS[] slots =
            {
                E_CHAR_SLOTS.CS_HEAD,
                E_CHAR_SLOTS.CS_SHOULDER,
                E_CHAR_SLOTS.CS_SHIRT,
                E_CHAR_SLOTS.CS_CHEST,
                E_CHAR_SLOTS.CS_BELT,
                E_CHAR_SLOTS.CS_PANTS,
                E_CHAR_SLOTS.CS_BOOTS,
                E_CHAR_SLOTS.CS_BRACERS,
                E_CHAR_SLOTS.CS_GLOVES,
                E_CHAR_SLOTS.CS_CAPE,
                E_CHAR_SLOTS.CS_TABARD,
                E_CHAR_SLOTS.CS_HAND_LEFT,
                E_CHAR_SLOTS.CS_HAND_RIGHT,
            };

            for (int i = 0; i < slots.GetLength(0); ++i)
            {
                int   id   = node.GetSlotItemId(slots[i]);
                SItem?item = wowDatabase.GetItemById(id);
                if (item.HasValue)
                {
                    slotItems.Add(new SlotItem()
                    {
                        SlotName     = slots[i].GetSlotName(),
                        ItemId       = item.Value.id,
                        ItemName     = item.Value.name,
                        ModelId      = item.Value.modelId,
                        SubClassName = item.Value.subclassname
                    });
                }
            }
        }
Exemplo n.º 14
0
        public void FillData()
        {
            WMOLocalNames.Clear();

            WowDatabase database = Engine.Instance.WowDatabase;

            for (uint i = 0; i < database.WmoCount; ++i)
            {
                WMOLocalNames.Add(new Entry()
                {
                    Name = database.GetWMOFileName(i, true), Id = (int)i
                });
            }

            wmoLocalNamesView = CollectionViewSource.GetDefaultView(WMOLocalNames);

            m2NamesView = CollectionViewSource.GetDefaultView(M2Names);
        }
Exemplo n.º 15
0
        public static void GetAllSets(this SetCollection sets)
        {
            WowDatabase wowDatabase = Engine.Instance.WowDatabase;

            uint setCount = wowDatabase.SetCount;

            sets.Clear();

            for (uint i = 0; i < setCount; ++i)
            {
                SEntry?r = wowDatabase.GetSet(i);
                if (r != null)
                {
                    sets.Add(new Set()
                    {
                        Name = r.Value.name, Id = r.Value.id
                    });
                }
            }
        }
Exemplo n.º 16
0
        public static void GetAllNpcs(this NpcCollection npcs)
        {
            WowDatabase _wowDatabase = Engine.Instance.WowDatabase;

            uint npcCount = _wowDatabase.NpcCount;

            npcs.Clear();

            for (uint i = 0; i < npcCount; ++i)
            {
                SNpc?r = _wowDatabase.GetNpc(i);
                if (r != null && r.Value.modelId != -1)
                {
                    npcs.Add(new Npc()
                    {
                        Name = r.Value.name, Type = r.Value.type, ModelDisplayId = r.Value.modelDisplayId, ModelId = r.Value.modelId
                    });
                }
            }
        }
Exemplo n.º 17
0
        private static int[] GetItemIdsByName(string name, E_CHAR_SLOTS slot, int id)
        {
            WowDatabase _wowDatabase = Engine.Instance.WowDatabase;
            uint        itemCount    = _wowDatabase.ItemCount;

            List <int> idList = new List <int>();

            for (uint i = 0; i < itemCount; ++i)
            {
                SItem?r = _wowDatabase.GetItem(i);
                if (r.HasValue && r.Value.id != id && r.Value.name == name)
                {
                    if (r.Value.IsMatchSlot(slot) && (r.Value.name.IndexOf("deprecated", StringComparison.CurrentCultureIgnoreCase) == -1))
                    {
                        idList.Add(r.Value.id);
                    }
                }
            }

            return(idList.ToArray());
        }
        private void GetWorldM2TreeItemFiles(string path, TreeNodeEntry node)
        {
            WowEnvironment env = Engine.Instance.WowEnvironment;

            env.ClearOwnCascFiles();
            WowDatabase database = Engine.Instance.WowDatabase;

            for (uint i = 0; i < database.WorldModelCount; ++i)
            {
                env.AddOwnCascFile(database.GetWorldModelName(i, false));
            }
            env.FinishOwnCascFiles();

            TreeViewFiles.Clear();
            TreeNodeEntry treeNode = TreeViewEntry.TraverseAllUseOwn(path, "*", node);

            for (int i = 0; i < treeNode.NodeEntrys.Count; i++)
            {
                TreeViewFiles.Add(treeNode.NodeEntrys[i]);
            }
        }
Exemplo n.º 19
0
        public static void GetAllRidables(this RidableCollection ridables)
        {
            WowDatabase _wowDatabase = Engine.Instance.WowDatabase;

            uint ridableCount = _wowDatabase.RidableCount;

            ridables.Clear();

            ridables.Add(new Ridable()
            {
                NpcId          = 0,
                MountFlag      = 0,
                Name           = App.Current.Resources["none"] as string,
                ModelDisplayId = 0,
                ModelId        = 0
            });

            for (uint i = 0; i < ridableCount; ++i)
            {
                SRidable?r = _wowDatabase.GetRidable(i);
                if (r != null)
                {
                    SNpc?npc = _wowDatabase.GetNpcById(r.Value.npcid);
                    if (npc.HasValue)
                    {
                        ridables.Add(new Ridable()
                        {
                            NpcId          = r.Value.npcid,
                            MountFlag      = r.Value.mountflag,
                            Name           = npc.Value.name,
                            ModelDisplayId = npc.Value.modelDisplayId,
                            ModelId        = npc.Value.modelId
                        });
                    }
                }
            }
        }
Exemplo n.º 20
0
        private bool LoadCharacter()
        {
            string      shortname    = Engine.Instance.WowDatabase.GetRaceName(charInfo.Race);
            WowDatabase _wowDatabase = Engine.Instance.WowDatabase;
            string      path         = _wowDatabase.GetCharacterPath(shortname, charInfo.Gender != 0, true);
            M2SceneNode node         = ModelSceneService.Instance.SetMainM2SceneNode(path, false);

            if (node == null)
            {
                path = _wowDatabase.GetCharacterPath(shortname, charInfo.Gender != 0, false);
                node = ModelSceneService.Instance.SetMainM2SceneNode(path, false);
            }

            if (node != null)
            {
                SCharFeature charFeature = new SCharFeature();
                charFeature.skinColor  = charInfo.SkinColor;
                charFeature.hairColor  = charInfo.HairColor;
                charFeature.hairStyle  = charInfo.HairStyle;
                charFeature.faceType   = charInfo.FaceType;
                charFeature.facialHair = charInfo.FacialHair;

                node.M2Instance.CharFeature = charFeature;
            }

            //items
            if (node != null)
            {
                M2Appearance appearance = node.M2Appearance;
                if (appearance != null)
                {
                    appearance.TakeItem(charInfo.Head);
                    appearance.TakeItem(charInfo.Shoulder);
                    appearance.TakeItem(charInfo.Boots);
                    appearance.TakeItem(charInfo.Belt);
                    appearance.TakeItem(charInfo.Shirt);
                    appearance.TakeItem(charInfo.Pants);
                    appearance.TakeItem(charInfo.Chest);
                    appearance.TakeItem(charInfo.Bracers);
                    appearance.TakeItem(charInfo.Gloves);
                    appearance.TakeItem(charInfo.HandRight);
                    appearance.TakeItem(charInfo.HandLeft);
                    appearance.TakeItem(charInfo.Cape);
                    appearance.TakeItem(charInfo.Tabard);
                }

                ModelEditorService.Instance.ShowModelPart(node);
                ModelEditorService.Instance.ShowEditPart(node);
                ModelEditorService.Instance.SetWireFrame(node);
                ModelEditorService.Instance.SheathM2NodeWeapon(node);

                node.UpdateCharacter();

                //update property
                ShellService.Instance.PropertyContent.UpdateCharacterNode(node);

                if (ShellService.Instance.EquipmentsWindow.IsVisible)
                {
                    ShellService.Instance.EquipmentsWindow.Update();
                }

                if (ShellService.Instance.EquipmentSelectWindow.IsVisible)
                {
                    ShellService.Instance.EquipmentSelectWindow.Update();
                }
            }

            Player player = Client.Instance.GetPlayer();

            if (EngineService.Instance.IsGameMode && node != null &&
                (node.Type == M2Type.MT_CHARACTER || node.Type == M2Type.MT_CREATRUE))
            {
                player.SetM2AsTarget(node, 15, (float)(Math.PI / 6.0f));
            }
            else
            {
                player.SetM2AsTarget(null, 15, (float)(Math.PI / 6.0f));
            }

            return(node != null);
        }
Exemplo n.º 21
0
        public static void GetAllSlotItemsWithSameName(this SlotItemCollection slotItems, M2SceneNode node)
        {
            slotItems.Clear();

            if (node.Type != M2Type.MT_CHARACTER || node.IsNpc)
            {
                return;
            }

            WowDatabase wowDatabase = Engine.Instance.WowDatabase;

            E_CHAR_SLOTS[] slots =
            {
                E_CHAR_SLOTS.CS_HEAD,
                E_CHAR_SLOTS.CS_SHOULDER,
                E_CHAR_SLOTS.CS_SHIRT,
                E_CHAR_SLOTS.CS_CHEST,
                E_CHAR_SLOTS.CS_BELT,
                E_CHAR_SLOTS.CS_PANTS,
                E_CHAR_SLOTS.CS_BOOTS,
                E_CHAR_SLOTS.CS_BRACERS,
                E_CHAR_SLOTS.CS_GLOVES,
                E_CHAR_SLOTS.CS_CAPE,
                E_CHAR_SLOTS.CS_TABARD,
                E_CHAR_SLOTS.CS_HAND_LEFT,
                E_CHAR_SLOTS.CS_HAND_RIGHT,
            };

            for (int i = 0; i < slots.GetLength(0); ++i)
            {
                int   id   = node.M2Instance.GetSlotItemId(slots[i]);
                SItem?item = wowDatabase.GetItemById(id);
                if (!item.HasValue || item.Value.name.Length == 0)
                {
                    continue;
                }

                slotItems.Add(new SlotItem()
                {
                    SlotName     = slots[i].GetSlotName(),
                    ItemId       = item.Value.id,
                    ItemName     = item.Value.name,
                    SubClassName = item.Value.subclassname
                });

                if (slots[i] != E_CHAR_SLOTS.CS_HEAD &&
                    slots[i] != E_CHAR_SLOTS.CS_SHOULDER &&
                    slots[i] != E_CHAR_SLOTS.CS_CHEST &&
                    slots[i] != E_CHAR_SLOTS.CS_PANTS &&
                    slots[i] != E_CHAR_SLOTS.CS_GLOVES)
                {
                    continue;
                }

                //add name
                int[] idArray = GetItemIdsByName(item.Value.name, slots[i], id);
                foreach (int _id in idArray)
                {
                    SItem?_item = wowDatabase.GetItemById(_id);
                    if (!_item.HasValue)
                    {
                        continue;
                    }

                    slotItems.Add(new SlotItem()
                    {
                        SlotName     = slots[i].GetSlotName(),
                        ItemId       = _item.Value.id,
                        ItemName     = _item.Value.name,
                        SubClassName = _item.Value.subclassname
                    });
                }
            }
        }