diff options
author | Peter Keresztes Schmidt <carbenium@outlook.com> | 2020-08-20 00:46:52 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-08-20 00:46:52 +0200 |
commit | 4286e7aa02e777268b25d8a5bcc1ee87f7b16c4d (patch) | |
tree | 13c9a4c4be3ae749a0301f0e397051a98a10f339 /src | |
parent | 9c9e8c7d58cd0e939330089cfb555945ebbf73eb (diff) |
Core/ChatCommands: Check whether a passed numeric enum value is valid (#25285)
Diffstat (limited to 'src')
-rw-r--r-- | src/common/Utilities/SmartEnum.h | 21 | ||||
-rw-r--r-- | src/server/game/AuctionHouseBot/enuminfo_AuctionHouseBot.cpp | 31 | ||||
-rw-r--r-- | src/server/game/Chat/ChatCommands/ChatCommandArgs.h | 4 | ||||
-rw-r--r-- | src/server/game/Entities/Creature/enuminfo_CreatureData.cpp | 44 | ||||
-rw-r--r-- | src/server/game/Entities/Unit/enuminfo_UnitDefines.cpp | 80 | ||||
-rw-r--r-- | src/server/game/Instances/InstanceScript.h | 1 | ||||
-rw-r--r-- | src/server/game/Instances/enuminfo_InstanceScript.cpp | 76 | ||||
-rw-r--r-- | src/server/game/Maps/enuminfo_SpawnData.cpp | 14 | ||||
-rw-r--r-- | src/server/game/Warden/enuminfo_WardenCheckMgr.cpp | 33 | ||||
-rw-r--r-- | src/server/scripts/Commands/cs_debug.cpp | 9 | ||||
-rw-r--r-- | src/server/shared/enuminfo_SharedDefines.cpp | 675 |
11 files changed, 962 insertions, 26 deletions
diff --git a/src/common/Utilities/SmartEnum.h b/src/common/Utilities/SmartEnum.h index 0966469f454..8c9a873dd9c 100644 --- a/src/common/Utilities/SmartEnum.h +++ b/src/common/Utilities/SmartEnum.h @@ -23,7 +23,7 @@ struct EnumText { - EnumText(char const* c, char const* t, char const* d) : Constant(c), Title(t), Description(d) {} + EnumText(char const* c, char const* t, char const* d) : Constant(c), Title(t), Description(d) { } // Enum constant of the value char const* const Constant; // Human-readable title of the value @@ -42,6 +42,7 @@ namespace Trinity static size_t Count(); static EnumText ToString(Enum value); static Enum FromIndex(size_t index); + static size_t ToIndex(Enum index); }; } } @@ -55,6 +56,24 @@ class EnumUtils static EnumText ToString(Enum value) { return Trinity::Impl::EnumUtils<Enum>::ToString(value); } template <typename Enum> static Enum FromIndex(size_t index) { return Trinity::Impl::EnumUtils<Enum>::FromIndex(index); } + template <typename Enum> + static uint32 ToIndex(Enum value) { return Trinity::Impl::EnumUtils<Enum>::ToIndex(value);} + + template<typename Enum> + static bool IsValid(Enum value) + { + try + { + Trinity::Impl::EnumUtils<Enum>::ToIndex(value); + return true; + } catch (...) + { + return false; + } + } + + template<typename Enum> + static bool IsValid(std::underlying_type_t<Enum> value) { return IsValid(static_cast<Enum>(value)); } template <typename Enum> class Iterator diff --git a/src/server/game/AuctionHouseBot/enuminfo_AuctionHouseBot.cpp b/src/server/game/AuctionHouseBot/enuminfo_AuctionHouseBot.cpp index bdec8875922..2d784a94425 100644 --- a/src/server/game/AuctionHouseBot/enuminfo_AuctionHouseBot.cpp +++ b/src/server/game/AuctionHouseBot/enuminfo_AuctionHouseBot.cpp @@ -20,9 +20,7 @@ #include "SmartEnum.h" #include <stdexcept> -namespace Trinity -{ -namespace Impl +namespace Trinity::Impl { /************************************************************************\ @@ -63,6 +61,22 @@ TC_API_EXPORT AuctionQuality EnumUtils<AuctionQuality>::FromIndex(size_t index) } } +template <> +TC_API_EXPORT size_t EnumUtils<AuctionQuality>::ToIndex(AuctionQuality value) +{ + switch (value) + { + case AUCTION_QUALITY_GRAY: return 0; + case AUCTION_QUALITY_WHITE: return 1; + case AUCTION_QUALITY_GREEN: return 2; + case AUCTION_QUALITY_BLUE: return 3; + case AUCTION_QUALITY_PURPLE: return 4; + case AUCTION_QUALITY_ORANGE: return 5; + case AUCTION_QUALITY_YELLOW: return 6; + default: throw std::out_of_range("value"); + } +} + /**************************************************************************\ |* data for enum 'AuctionHouseType' in 'AuctionHouseBot.h' auto-generated *| \**************************************************************************/ @@ -92,5 +106,16 @@ TC_API_EXPORT AuctionHouseType EnumUtils<AuctionHouseType>::FromIndex(size_t ind default: throw std::out_of_range("index"); } } + +template <> +TC_API_EXPORT size_t EnumUtils<AuctionHouseType>::ToIndex(AuctionHouseType value) +{ + switch (value) + { + case AUCTION_HOUSE_NEUTRAL: return 0; + case AUCTION_HOUSE_ALLIANCE: return 1; + case AUCTION_HOUSE_HORDE: return 2; + default: throw std::out_of_range("value"); + } } } diff --git a/src/server/game/Chat/ChatCommands/ChatCommandArgs.h b/src/server/game/Chat/ChatCommands/ChatCommandArgs.h index d7fa5cf65db..2e33384ee42 100644 --- a/src/server/game/Chat/ChatCommands/ChatCommandArgs.h +++ b/src/server/game/Chat/ChatCommands/ChatCommandArgs.h @@ -193,7 +193,11 @@ struct ArgInfo<T, std::enable_if_t<std::is_enum_v<T>>> U uVal = 0; ret = ArgInfo<U>::TryConsume(uVal, args); if (ret) + { val = static_cast<T>(uVal); + if (!EnumUtils::IsValid(val)) + return nullptr; + } return ret; } diff --git a/src/server/game/Entities/Creature/enuminfo_CreatureData.cpp b/src/server/game/Entities/Creature/enuminfo_CreatureData.cpp index f15a5d8ca16..01549c93c4f 100644 --- a/src/server/game/Entities/Creature/enuminfo_CreatureData.cpp +++ b/src/server/game/Entities/Creature/enuminfo_CreatureData.cpp @@ -20,9 +20,7 @@ #include "SmartEnum.h" #include <stdexcept> -namespace Trinity -{ -namespace Impl +namespace Trinity::Impl { /*************************************************************************\ @@ -112,5 +110,45 @@ TC_API_EXPORT CreatureFlagsExtra EnumUtils<CreatureFlagsExtra>::FromIndex(size_t default: throw std::out_of_range("index"); } } + +template <> +TC_API_EXPORT size_t EnumUtils<CreatureFlagsExtra>::ToIndex(CreatureFlagsExtra value) +{ + switch (value) + { + case CREATURE_FLAG_EXTRA_INSTANCE_BIND: return 0; + case CREATURE_FLAG_EXTRA_CIVILIAN: return 1; + case CREATURE_FLAG_EXTRA_NO_PARRY: return 2; + case CREATURE_FLAG_EXTRA_NO_PARRY_HASTEN: return 3; + case CREATURE_FLAG_EXTRA_NO_BLOCK: return 4; + case CREATURE_FLAG_EXTRA_NO_CRUSH: return 5; + case CREATURE_FLAG_EXTRA_NO_XP_AT_KILL: return 6; + case CREATURE_FLAG_EXTRA_TRIGGER: return 7; + case CREATURE_FLAG_EXTRA_NO_TAUNT: return 8; + case CREATURE_FLAG_EXTRA_NO_MOVE_FLAGS_UPDATE: return 9; + case CREATURE_FLAG_EXTRA_GHOST_VISIBILITY: return 10; + case CREATURE_FLAG_EXTRA_USE_OFFHAND_ATTACK: return 11; + case CREATURE_FLAG_EXTRA_NO_SELL_VENDOR: return 12; + case CREATURE_FLAG_EXTRA_NO_COMBAT: return 13; + case CREATURE_FLAG_EXTRA_WORLDEVENT: return 14; + case CREATURE_FLAG_EXTRA_GUARD: return 15; + case CREATURE_FLAG_EXTRA_UNUSED_16: return 16; + case CREATURE_FLAG_EXTRA_NO_CRIT: return 17; + case CREATURE_FLAG_EXTRA_NO_SKILLGAIN: return 18; + case CREATURE_FLAG_EXTRA_TAUNT_DIMINISH: return 19; + case CREATURE_FLAG_EXTRA_ALL_DIMINISH: return 20; + case CREATURE_FLAG_EXTRA_NO_PLAYER_DAMAGE_REQ: return 21; + case CREATURE_FLAG_EXTRA_UNUSED_22: return 22; + case CREATURE_FLAG_EXTRA_UNUSED_23: return 23; + case CREATURE_FLAG_EXTRA_UNUSED_24: return 24; + case CREATURE_FLAG_EXTRA_UNUSED_25: return 25; + case CREATURE_FLAG_EXTRA_UNUSED_26: return 26; + case CREATURE_FLAG_EXTRA_UNUSED_27: return 27; + case CREATURE_FLAG_EXTRA_DUNGEON_BOSS: return 28; + case CREATURE_FLAG_EXTRA_IGNORE_PATHFINDING: return 29; + case CREATURE_FLAG_EXTRA_IMMUNITY_KNOCKBACK: return 30; + case CREATURE_FLAG_EXTRA_UNUSED_31: return 31; + default: throw std::out_of_range("value"); + } } } diff --git a/src/server/game/Entities/Unit/enuminfo_UnitDefines.cpp b/src/server/game/Entities/Unit/enuminfo_UnitDefines.cpp index f1e91fabab9..5452ca1048c 100644 --- a/src/server/game/Entities/Unit/enuminfo_UnitDefines.cpp +++ b/src/server/game/Entities/Unit/enuminfo_UnitDefines.cpp @@ -20,9 +20,7 @@ #include "SmartEnum.h" #include <stdexcept> -namespace Trinity -{ -namespace Impl +namespace Trinity::Impl { /***************************************************************\ @@ -113,6 +111,47 @@ TC_API_EXPORT UnitFlags EnumUtils<UnitFlags>::FromIndex(size_t index) } } +template <> +TC_API_EXPORT size_t EnumUtils<UnitFlags>::ToIndex(UnitFlags value) +{ + switch (value) + { + case UNIT_FLAG_SERVER_CONTROLLED: return 0; + case UNIT_FLAG_NON_ATTACKABLE: return 1; + case UNIT_FLAG_REMOVE_CLIENT_CONTROL: return 2; + case UNIT_FLAG_PLAYER_CONTROLLED: return 3; + case UNIT_FLAG_RENAME: return 4; + case UNIT_FLAG_PREPARATION: return 5; + case UNIT_FLAG_UNK_6: return 6; + case UNIT_FLAG_NOT_ATTACKABLE_1: return 7; + case UNIT_FLAG_IMMUNE_TO_PC: return 8; + case UNIT_FLAG_IMMUNE_TO_NPC: return 9; + case UNIT_FLAG_LOOTING: return 10; + case UNIT_FLAG_PET_IN_COMBAT: return 11; + case UNIT_FLAG_PVP: return 12; + case UNIT_FLAG_SILENCED: return 13; + case UNIT_FLAG_CANNOT_SWIM: return 14; + case UNIT_FLAG_SWIMMING: return 15; + case UNIT_FLAG_NON_ATTACKABLE_2: return 16; + case UNIT_FLAG_PACIFIED: return 17; + case UNIT_FLAG_STUNNED: return 18; + case UNIT_FLAG_IN_COMBAT: return 19; + case UNIT_FLAG_TAXI_FLIGHT: return 20; + case UNIT_FLAG_DISARMED: return 21; + case UNIT_FLAG_CONFUSED: return 22; + case UNIT_FLAG_FLEEING: return 23; + case UNIT_FLAG_POSSESSED: return 24; + case UNIT_FLAG_NOT_SELECTABLE: return 25; + case UNIT_FLAG_SKINNABLE: return 26; + case UNIT_FLAG_MOUNT: return 27; + case UNIT_FLAG_UNK_28: return 28; + case UNIT_FLAG_UNK_29: return 29; + case UNIT_FLAG_SHEATHE: return 30; + case UNIT_FLAG_IMMUNE: return 31; + default: throw std::out_of_range("value"); + } +} + /**************************************************************\ |* data for enum 'NPCFlags' in 'UnitDefines.h' auto-generated *| \**************************************************************/ @@ -190,5 +229,40 @@ TC_API_EXPORT NPCFlags EnumUtils<NPCFlags>::FromIndex(size_t index) default: throw std::out_of_range("index"); } } + +template <> +TC_API_EXPORT size_t EnumUtils<NPCFlags>::ToIndex(NPCFlags value) +{ + switch (value) + { + case UNIT_NPC_FLAG_GOSSIP: return 0; + case UNIT_NPC_FLAG_QUESTGIVER: return 1; + case UNIT_NPC_FLAG_UNK1: return 2; + case UNIT_NPC_FLAG_UNK2: return 3; + case UNIT_NPC_FLAG_TRAINER: return 4; + case UNIT_NPC_FLAG_TRAINER_CLASS: return 5; + case UNIT_NPC_FLAG_TRAINER_PROFESSION: return 6; + case UNIT_NPC_FLAG_VENDOR: return 7; + case UNIT_NPC_FLAG_VENDOR_AMMO: return 8; + case UNIT_NPC_FLAG_VENDOR_FOOD: return 9; + case UNIT_NPC_FLAG_VENDOR_POISON: return 10; + case UNIT_NPC_FLAG_VENDOR_REAGENT: return 11; + case UNIT_NPC_FLAG_REPAIR: return 12; + case UNIT_NPC_FLAG_FLIGHTMASTER: return 13; + case UNIT_NPC_FLAG_SPIRITHEALER: return 14; + case UNIT_NPC_FLAG_SPIRITGUIDE: return 15; + case UNIT_NPC_FLAG_INNKEEPER: return 16; + case UNIT_NPC_FLAG_BANKER: return 17; + case UNIT_NPC_FLAG_PETITIONER: return 18; + case UNIT_NPC_FLAG_TABARDDESIGNER: return 19; + case UNIT_NPC_FLAG_BATTLEMASTER: return 20; + case UNIT_NPC_FLAG_AUCTIONEER: return 21; + case UNIT_NPC_FLAG_STABLEMASTER: return 22; + case UNIT_NPC_FLAG_GUILD_BANKER: return 23; + case UNIT_NPC_FLAG_SPELLCLICK: return 24; + case UNIT_NPC_FLAG_PLAYER_VEHICLE: return 25; + case UNIT_NPC_FLAG_MAILBOX: return 26; + default: throw std::out_of_range("value"); + } } } diff --git a/src/server/game/Instances/InstanceScript.h b/src/server/game/Instances/InstanceScript.h index 96b2a9f2245..5b6846ec562 100644 --- a/src/server/game/Instances/InstanceScript.h +++ b/src/server/game/Instances/InstanceScript.h @@ -64,6 +64,7 @@ enum EncounterFrameType ENCOUNTER_FRAME_UNK7 = 7 // Seems to have something to do with sorting the encounter units }; +// EnumUtils: DESCRIBE THIS enum EncounterState { NOT_STARTED = 0, diff --git a/src/server/game/Instances/enuminfo_InstanceScript.cpp b/src/server/game/Instances/enuminfo_InstanceScript.cpp new file mode 100644 index 00000000000..7fcbc5d3036 --- /dev/null +++ b/src/server/game/Instances/enuminfo_InstanceScript.cpp @@ -0,0 +1,76 @@ +/* + * This file is part of the TrinityCore Project. See AUTHORS file for Copyright information + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * more details. + * + * You should have received a copy of the GNU General Public License along + * with this program. If not, see <http://www.gnu.org/licenses/>. + */ + +#include "InstanceScript.h" +#include "Define.h" +#include "SmartEnum.h" +#include <stdexcept> + +namespace Trinity::Impl +{ + +/***********************************************************************\ +|* data for enum 'EncounterState' in 'InstanceScript.h' auto-generated *| +\***********************************************************************/ +template <> +TC_API_EXPORT EnumText EnumUtils<EncounterState>::ToString(EncounterState value) +{ + switch (value) + { + case NOT_STARTED: return { "NOT_STARTED", "NOT_STARTED", "" }; + case IN_PROGRESS: return { "IN_PROGRESS", "IN_PROGRESS", "" }; + case FAIL: return { "FAIL", "FAIL", "" }; + case DONE: return { "DONE", "DONE", "" }; + case SPECIAL: return { "SPECIAL", "SPECIAL", "" }; + case TO_BE_DECIDED: return { "TO_BE_DECIDED", "TO_BE_DECIDED", "" }; + default: throw std::out_of_range("value"); + } +} + +template <> +TC_API_EXPORT size_t EnumUtils<EncounterState>::Count() { return 6; } + +template <> +TC_API_EXPORT EncounterState EnumUtils<EncounterState>::FromIndex(size_t index) +{ + switch (index) + { + case 0: return NOT_STARTED; + case 1: return IN_PROGRESS; + case 2: return FAIL; + case 3: return DONE; + case 4: return SPECIAL; + case 5: return TO_BE_DECIDED; + default: throw std::out_of_range("index"); + } +} + +template <> +TC_API_EXPORT size_t EnumUtils<EncounterState>::ToIndex(EncounterState value) +{ + switch (value) + { + case NOT_STARTED: return 0; + case IN_PROGRESS: return 1; + case FAIL: return 2; + case DONE: return 3; + case SPECIAL: return 4; + case TO_BE_DECIDED: return 5; + default: throw std::out_of_range("value"); + } +} +} diff --git a/src/server/game/Maps/enuminfo_SpawnData.cpp b/src/server/game/Maps/enuminfo_SpawnData.cpp index 92226f25572..82b75acb148 100644 --- a/src/server/game/Maps/enuminfo_SpawnData.cpp +++ b/src/server/game/Maps/enuminfo_SpawnData.cpp @@ -20,9 +20,7 @@ #include "SmartEnum.h" #include <stdexcept> -namespace Trinity -{ -namespace Impl +namespace Trinity::Impl { /*******************************************************************\ @@ -52,5 +50,15 @@ TC_API_EXPORT SpawnObjectType EnumUtils<SpawnObjectType>::FromIndex(size_t index default: throw std::out_of_range("index"); } } + +template <> +TC_API_EXPORT size_t EnumUtils<SpawnObjectType>::ToIndex(SpawnObjectType value) +{ + switch (value) + { + case SPAWN_TYPE_CREATURE: return 0; + case SPAWN_TYPE_GAMEOBJECT: return 1; + default: throw std::out_of_range("value"); + } } } diff --git a/src/server/game/Warden/enuminfo_WardenCheckMgr.cpp b/src/server/game/Warden/enuminfo_WardenCheckMgr.cpp index e4c5fc4efa3..450760148f0 100644 --- a/src/server/game/Warden/enuminfo_WardenCheckMgr.cpp +++ b/src/server/game/Warden/enuminfo_WardenCheckMgr.cpp @@ -20,9 +20,7 @@ #include "SmartEnum.h" #include <stdexcept> -namespace Trinity -{ -namespace Impl +namespace Trinity::Impl { /**********************************************************************\ @@ -55,6 +53,18 @@ TC_API_EXPORT WardenActions EnumUtils<WardenActions>::FromIndex(size_t index) } } +template <> +TC_API_EXPORT size_t EnumUtils<WardenActions>::ToIndex(WardenActions value) +{ + switch (value) + { + case WARDEN_ACTION_LOG: return 0; + case WARDEN_ACTION_KICK: return 1; + case WARDEN_ACTION_BAN: return 2; + default: throw std::out_of_range("value"); + } +} + /************************************************************************\ |* data for enum 'WardenCheckType' in 'WardenCheckMgr.h' auto-generated *| \************************************************************************/ @@ -96,5 +106,22 @@ TC_API_EXPORT WardenCheckType EnumUtils<WardenCheckType>::FromIndex(size_t index default: throw std::out_of_range("index"); } } + +template <> +TC_API_EXPORT size_t EnumUtils<WardenCheckType>::ToIndex(WardenCheckType value) +{ + switch (value) + { + case MEM_CHECK: return 0; + case PAGE_CHECK_A: return 1; + case PAGE_CHECK_B: return 2; + case MPQ_CHECK: return 3; + case LUA_STR_CHECK: return 4; + case DRIVER_CHECK: return 5; + case TIMING_CHECK: return 6; + case PROC_CHECK: return 7; + case MODULE_CHECK: return 8; + default: throw std::out_of_range("value"); + } } } diff --git a/src/server/scripts/Commands/cs_debug.cpp b/src/server/scripts/Commands/cs_debug.cpp index 6ce53150238..22654c48b42 100644 --- a/src/server/scripts/Commands/cs_debug.cpp +++ b/src/server/scripts/Commands/cs_debug.cpp @@ -1140,13 +1140,8 @@ public: if (Unit* unit = handler->getSelectedUnit()) unit->HandleEmoteCommand(emote); - try - { - handler->PSendSysMessage("Playing emote %s", EnumUtils::ToConstant(emote)); - } catch (...) - { - handler->PSendSysMessage("Playing unknown emote"); - } + handler->PSendSysMessage("Playing emote %s", EnumUtils::ToConstant(emote)); + return true; } diff --git a/src/server/shared/enuminfo_SharedDefines.cpp b/src/server/shared/enuminfo_SharedDefines.cpp index c2fa150bcf6..d3a684a6bd5 100644 --- a/src/server/shared/enuminfo_SharedDefines.cpp +++ b/src/server/shared/enuminfo_SharedDefines.cpp @@ -20,9 +20,7 @@ #include "SmartEnum.h" #include <stdexcept> -namespace Trinity -{ -namespace Impl +namespace Trinity::Impl { /*************************************************************\ @@ -69,6 +67,25 @@ TC_API_EXPORT Races EnumUtils<Races>::FromIndex(size_t index) } } +template <> +TC_API_EXPORT size_t EnumUtils<Races>::ToIndex(Races value) +{ + switch (value) + { + case RACE_HUMAN: return 0; + case RACE_ORC: return 1; + case RACE_DWARF: return 2; + case RACE_NIGHTELF: return 3; + case RACE_UNDEAD_PLAYER: return 4; + case RACE_TAUREN: return 5; + case RACE_GNOME: return 6; + case RACE_TROLL: return 7; + case RACE_BLOODELF: return 8; + case RACE_DRAENEI: return 9; + default: throw std::out_of_range("value"); + } +} + /***************************************************************\ |* data for enum 'Classes' in 'SharedDefines.h' auto-generated *| \***************************************************************/ @@ -113,6 +130,25 @@ TC_API_EXPORT Classes EnumUtils<Classes>::FromIndex(size_t index) } } +template <> +TC_API_EXPORT size_t EnumUtils<Classes>::ToIndex(Classes value) +{ + switch (value) + { + case CLASS_WARRIOR: return 0; + case CLASS_PALADIN: return 1; + case CLASS_HUNTER: return 2; + case CLASS_ROGUE: return 3; + case CLASS_PRIEST: return 4; + case CLASS_DEATH_KNIGHT: return 5; + case CLASS_SHAMAN: return 6; + case CLASS_MAGE: return 7; + case CLASS_WARLOCK: return 8; + case CLASS_DRUID: return 9; + default: throw std::out_of_range("value"); + } +} + /**************************************************************\ |* data for enum 'Powers' in 'SharedDefines.h' auto-generated *| \**************************************************************/ @@ -153,6 +189,23 @@ TC_API_EXPORT Powers EnumUtils<Powers>::FromIndex(size_t index) } } +template <> +TC_API_EXPORT size_t EnumUtils<Powers>::ToIndex(Powers value) +{ + switch (value) + { + case POWER_HEALTH: return 0; + case POWER_MANA: return 1; + case POWER_RAGE: return 2; + case POWER_FOCUS: return 3; + case POWER_ENERGY: return 4; + case POWER_HAPPINESS: return 5; + case POWER_RUNE: return 6; + case POWER_RUNIC_POWER: return 7; + default: throw std::out_of_range("value"); + } +} + /********************************************************************\ |* data for enum 'SpellSchools' in 'SharedDefines.h' auto-generated *| \********************************************************************/ @@ -191,6 +244,22 @@ TC_API_EXPORT SpellSchools EnumUtils<SpellSchools>::FromIndex(size_t index) } } +template <> +TC_API_EXPORT size_t EnumUtils<SpellSchools>::ToIndex(SpellSchools value) +{ + switch (value) + { + case SPELL_SCHOOL_NORMAL: return 0; + case SPELL_SCHOOL_HOLY: return 1; + case SPELL_SCHOOL_FIRE: return 2; + case SPELL_SCHOOL_NATURE: return 3; + case SPELL_SCHOOL_FROST: return 4; + case SPELL_SCHOOL_SHADOW: return 5; + case SPELL_SCHOOL_ARCANE: return 6; + default: throw std::out_of_range("value"); + } +} + /******************************************************************\ |* data for enum 'SpellAttr0' in 'SharedDefines.h' auto-generated *| \******************************************************************/ @@ -279,6 +348,47 @@ TC_API_EXPORT SpellAttr0 EnumUtils<SpellAttr0>::FromIndex(size_t index) } } +template <> +TC_API_EXPORT size_t EnumUtils<SpellAttr0>::ToIndex(SpellAttr0 value) +{ + switch (value) + { + case SPELL_ATTR0_UNK0: return 0; + case SPELL_ATTR0_REQ_AMMO: return 1; + case SPELL_ATTR0_ON_NEXT_SWING: return 2; + case SPELL_ATTR0_IS_REPLENISHMENT: return 3; + case SPELL_ATTR0_ABILITY: return 4; + case SPELL_ATTR0_TRADESPELL: return 5; + case SPELL_ATTR0_PASSIVE: return 6; + case SPELL_ATTR0_HIDDEN_CLIENTSIDE: return 7; + case SPELL_ATTR0_HIDE_IN_COMBAT_LOG: return 8; + case SPELL_ATTR0_TARGET_MAINHAND_ITEM: return 9; + case SPELL_ATTR0_ON_NEXT_SWING_2: return 10; + case SPELL_ATTR0_UNK11: return 11; + case SPELL_ATTR0_DAYTIME_ONLY: return 12; + case SPELL_ATTR0_NIGHT_ONLY: return 13; + case SPELL_ATTR0_INDOORS_ONLY: return 14; + case SPELL_ATTR0_OUTDOORS_ONLY: return 15; + case SPELL_ATTR0_NOT_SHAPESHIFT: return 16; + case SPELL_ATTR0_ONLY_STEALTHED: return 17; + case SPELL_ATTR0_DONT_AFFECT_SHEATH_STATE: return 18; + case SPELL_ATTR0_LEVEL_DAMAGE_CALCULATION: return 19; + case SPELL_ATTR0_STOP_ATTACK_TARGET: return 20; + case SPELL_ATTR0_IMPOSSIBLE_DODGE_PARRY_BLOCK: return 21; + case SPELL_ATTR0_CAST_TRACK_TARGET: return 22; + case SPELL_ATTR0_CASTABLE_WHILE_DEAD: return 23; + case SPELL_ATTR0_CASTABLE_WHILE_MOUNTED: return 24; + case SPELL_ATTR0_DISABLED_WHILE_ACTIVE: return 25; + case SPELL_ATTR0_NEGATIVE_1: return 26; + case SPELL_ATTR0_CASTABLE_WHILE_SITTING: return 27; + case SPELL_ATTR0_CANT_USED_IN_COMBAT: return 28; + case SPELL_ATTR0_UNAFFECTED_BY_INVULNERABILITY: return 29; + case SPELL_ATTR0_HEARTBEAT_RESIST_CHECK: return 30; + case SPELL_ATTR0_CANT_CANCEL: return 31; + default: throw std::out_of_range("value"); + } +} + /******************************************************************\ |* data for enum 'SpellAttr1' in 'SharedDefines.h' auto-generated *| \******************************************************************/ @@ -367,6 +477,47 @@ TC_API_EXPORT SpellAttr1 EnumUtils<SpellAttr1>::FromIndex(size_t index) } } +template <> +TC_API_EXPORT size_t EnumUtils<SpellAttr1>::ToIndex(SpellAttr1 value) +{ + switch (value) + { + case SPELL_ATTR1_DISMISS_PET: return 0; + case SPELL_ATTR1_DRAIN_ALL_POWER: return 1; + case SPELL_ATTR1_CHANNELED_1: return 2; + case SPELL_ATTR1_CANT_BE_REDIRECTED: return 3; + case SPELL_ATTR1_UNK4: return 4; + case SPELL_ATTR1_NOT_BREAK_STEALTH: return 5; + case SPELL_ATTR1_CHANNELED_2: return 6; + case SPELL_ATTR1_CANT_BE_REFLECTED: return 7; + case SPELL_ATTR1_CANT_TARGET_IN_COMBAT: return 8; + case SPELL_ATTR1_MELEE_COMBAT_START: return 9; + case SPELL_ATTR1_NO_THREAT: return 10; + case SPELL_ATTR1_UNK11: return 11; + case SPELL_ATTR1_IS_PICKPOCKET: return 12; + case SPELL_ATTR1_FARSIGHT: return 13; + case SPELL_ATTR1_CHANNEL_TRACK_TARGET: return 14; + case SPELL_ATTR1_DISPEL_AURAS_ON_IMMUNITY: return 15; + case SPELL_ATTR1_UNAFFECTED_BY_SCHOOL_IMMUNE: return 16; + case SPELL_ATTR1_UNAUTOCASTABLE_BY_PET: return 17; + case SPELL_ATTR1_UNK18: return 18; + case SPELL_ATTR1_CANT_TARGET_SELF: return 19; + case SPELL_ATTR1_REQ_COMBO_POINTS1: return 20; + case SPELL_ATTR1_UNK21: return 21; + case SPELL_ATTR1_REQ_COMBO_POINTS2: return 22; + case SPELL_ATTR1_UNK23: return 23; + case SPELL_ATTR1_IS_FISHING: return 24; + case SPELL_ATTR1_UNK25: return 25; + case SPELL_ATTR1_UNK26: return 26; + case SPELL_ATTR1_UNK27: return 27; + case SPELL_ATTR1_DONT_DISPLAY_IN_AURA_BAR: return 28; + case SPELL_ATTR1_CHANNEL_DISPLAY_SPELL_NAME: return 29; + case SPELL_ATTR1_ENABLE_AT_DODGE: return 30; + case SPELL_ATTR1_UNK31: return 31; + default: throw std::out_of_range("value"); + } +} + /******************************************************************\ |* data for enum 'SpellAttr2' in 'SharedDefines.h' auto-generated *| \******************************************************************/ @@ -455,6 +606,47 @@ TC_API_EXPORT SpellAttr2 EnumUtils<SpellAttr2>::FromIndex(size_t index) } } +template <> +TC_API_EXPORT size_t EnumUtils<SpellAttr2>::ToIndex(SpellAttr2 value) +{ + switch (value) + { + case SPELL_ATTR2_CAN_TARGET_DEAD: return 0; + case SPELL_ATTR2_UNK1: return 1; + case SPELL_ATTR2_CAN_TARGET_NOT_IN_LOS: return 2; + case SPELL_ATTR2_UNK3: return 3; + case SPELL_ATTR2_DISPLAY_IN_STANCE_BAR: return 4; + case SPELL_ATTR2_AUTOREPEAT_FLAG: return 5; + case SPELL_ATTR2_CANT_TARGET_TAPPED: return 6; + case SPELL_ATTR2_UNK7: return 7; + case SPELL_ATTR2_UNK8: return 8; + case SPELL_ATTR2_UNK9: return 9; + case SPELL_ATTR2_UNK10: return 10; + case SPELL_ATTR2_HEALTH_FUNNEL: return 11; + case SPELL_ATTR2_UNK12: return 12; + case SPELL_ATTR2_PRESERVE_ENCHANT_IN_ARENA: return 13; + case SPELL_ATTR2_UNK14: return 14; + case SPELL_ATTR2_UNK15: return 15; + case SPELL_ATTR2_TAME_BEAST: return 16; + case SPELL_ATTR2_NOT_RESET_AUTO_ACTIONS: return 17; + case SPELL_ATTR2_REQ_DEAD_PET: return 18; + case SPELL_ATTR2_NOT_NEED_SHAPESHIFT: return 19; + case SPELL_ATTR2_UNK20: return 20; + case SPELL_ATTR2_DAMAGE_REDUCED_SHIELD: return 21; + case SPELL_ATTR2_UNK22: return 22; + case SPELL_ATTR2_IS_ARCANE_CONCENTRATION: return 23; + case SPELL_ATTR2_UNK24: return 24; + case SPELL_ATTR2_UNK25: return 25; + case SPELL_ATTR2_UNAFFECTED_BY_AURA_SCHOOL_IMMUNE: return 26; + case SPELL_ATTR2_UNK27: return 27; + case SPELL_ATTR2_UNK28: return 28; + case SPELL_ATTR2_CANT_CRIT: return 29; + case SPELL_ATTR2_TRIGGERED_CAN_TRIGGER_PROC: return 30; + case SPELL_ATTR2_FOOD_BUFF: return 31; + default: throw std::out_of_range("value"); + } +} + /******************************************************************\ |* data for enum 'SpellAttr3' in 'SharedDefines.h' auto-generated *| \******************************************************************/ @@ -543,6 +735,47 @@ TC_API_EXPORT SpellAttr3 EnumUtils<SpellAttr3>::FromIndex(size_t index) } } +template <> +TC_API_EXPORT size_t EnumUtils<SpellAttr3>::ToIndex(SpellAttr3 value) +{ + switch (value) + { + case SPELL_ATTR3_UNK0: return 0; + case SPELL_ATTR3_IGNORE_PROC_SUBCLASS_MASK: return 1; + case SPELL_ATTR3_UNK2: return 2; + case SPELL_ATTR3_BLOCKABLE_SPELL: return 3; + case SPELL_ATTR3_IGNORE_RESURRECTION_TIMER: return 4; + case SPELL_ATTR3_UNK5: return 5; + case SPELL_ATTR3_UNK6: return 6; + case SPELL_ATTR3_STACK_FOR_DIFF_CASTERS: return 7; + case SPELL_ATTR3_ONLY_TARGET_PLAYERS: return 8; + case SPELL_ATTR3_TRIGGERED_CAN_TRIGGER_PROC_2: return 9; + case SPELL_ATTR3_MAIN_HAND: return 10; + case SPELL_ATTR3_BATTLEGROUND: return 11; + case SPELL_ATTR3_ONLY_TARGET_GHOSTS: return 12; + case SPELL_ATTR3_DONT_DISPLAY_CHANNEL_BAR: return 13; + case SPELL_ATTR3_IS_HONORLESS_TARGET: return 14; + case SPELL_ATTR3_UNK15: return 15; + case SPELL_ATTR3_CANT_TRIGGER_PROC: return 16; + case SPELL_ATTR3_NO_INITIAL_AGGRO: return 17; + case SPELL_ATTR3_IGNORE_HIT_RESULT: return 18; + case SPELL_ATTR3_DISABLE_PROC: return 19; + case SPELL_ATTR3_DEATH_PERSISTENT: return 20; + case SPELL_ATTR3_UNK21: return 21; + case SPELL_ATTR3_REQ_WAND: return 22; + case SPELL_ATTR3_UNK23: return 23; + case SPELL_ATTR3_REQ_OFFHAND: return 24; + case SPELL_ATTR3_TREAT_AS_PERIODIC: return 25; + case SPELL_ATTR3_CAN_PROC_WITH_TRIGGERED: return 26; + case SPELL_ATTR3_DRAIN_SOUL: return 27; + case SPELL_ATTR3_UNK28: return 28; + case SPELL_ATTR3_NO_DONE_BONUS: return 29; + case SPELL_ATTR3_DONT_DISPLAY_RANGE: return 30; + case SPELL_ATTR3_UNK31: return 31; + default: throw std::out_of_range("value"); + } +} + /******************************************************************\ |* data for enum 'SpellAttr4' in 'SharedDefines.h' auto-generated *| \******************************************************************/ @@ -631,6 +864,47 @@ TC_API_EXPORT SpellAttr4 EnumUtils<SpellAttr4>::FromIndex(size_t index) } } +template <> +TC_API_EXPORT size_t EnumUtils<SpellAttr4>::ToIndex(SpellAttr4 value) +{ + switch (value) + { + case SPELL_ATTR4_IGNORE_RESISTANCES: return 0; + case SPELL_ATTR4_PROC_ONLY_ON_CASTER: return 1; + case SPELL_ATTR4_FADES_WHILE_LOGGED_OUT: return 2; + case SPELL_ATTR4_UNK3: return 3; + case SPELL_ATTR4_UNK4: return 4; + case SPELL_ATTR4_UNK5: return 5; + case SPELL_ATTR4_NOT_STEALABLE: return 6; + case SPELL_ATTR4_CAN_CAST_WHILE_CASTING: return 7; + case SPELL_ATTR4_FIXED_DAMAGE: return 8; + case SPELL_ATTR4_TRIGGER_ACTIVATE: return 9; + case SPELL_ATTR4_SPELL_VS_EXTEND_COST: return 10; + case SPELL_ATTR4_UNK11: return 11; + case SPELL_ATTR4_UNK12: return 12; + case SPELL_ATTR4_UNK13: return 13; + case SPELL_ATTR4_DAMAGE_DOESNT_BREAK_AURAS: return 14; + case SPELL_ATTR4_UNK15: return 15; + case SPELL_ATTR4_NOT_USABLE_IN_ARENA: return 16; + case SPELL_ATTR4_USABLE_IN_ARENA: return 17; + case SPELL_ATTR4_AREA_TARGET_CHAIN: return 18; + case SPELL_ATTR4_UNK19: return 19; + case SPELL_ATTR4_NOT_CHECK_SELFCAST_POWER: return 20; + case SPELL_ATTR4_UNK21: return 21; + case SPELL_ATTR4_UNK22: return 22; + case SPELL_ATTR4_CANT_TRIGGER_ITEM_SPELLS: return 23; + case SPELL_ATTR4_UNK24: return 24; + case SPELL_ATTR4_IS_PET_SCALING: return 25; + case SPELL_ATTR4_CAST_ONLY_IN_OUTLAND: return 26; + case SPELL_ATTR4_INHERIT_CRIT_FROM_AURA: return 27; + case SPELL_ATTR4_UNK28: return 28; + case SPELL_ATTR4_UNK29: return 29; + case SPELL_ATTR4_UNK30: return 30; + case SPELL_ATTR4_UNK31: return 31; + default: throw std::out_of_range("value"); + } +} + /******************************************************************\ |* data for enum 'SpellAttr5' in 'SharedDefines.h' auto-generated *| \******************************************************************/ @@ -719,6 +993,47 @@ TC_API_EXPORT SpellAttr5 EnumUtils<SpellAttr5>::FromIndex(size_t index) } } +template <> +TC_API_EXPORT size_t EnumUtils<SpellAttr5>::ToIndex(SpellAttr5 value) +{ + switch (value) + { + case SPELL_ATTR5_CAN_CHANNEL_WHEN_MOVING: return 0; + case SPELL_ATTR5_NO_REAGENT_WHILE_PREP: return 1; + case SPELL_ATTR5_REMOVE_ON_ARENA_ENTER: return 2; + case SPELL_ATTR5_USABLE_WHILE_STUNNED: return 3; + case SPELL_ATTR5_UNK4: return 4; + case SPELL_ATTR5_SINGLE_TARGET_SPELL: return 5; + case SPELL_ATTR5_UNK6: return 6; + case SPELL_ATTR5_UNK7: return 7; + case SPELL_ATTR5_UNK8: return 8; + case SPELL_ATTR5_START_PERIODIC_AT_APPLY: return 9; + case SPELL_ATTR5_HIDE_DURATION: return 10; + case SPELL_ATTR5_ALLOW_TARGET_OF_TARGET_AS_TARGET: return 11; + case SPELL_ATTR5_UNK12: return 12; + case SPELL_ATTR5_HASTE_AFFECT_DURATION: return 13; + case SPELL_ATTR5_UNK14: return 14; + case SPELL_ATTR5_UNK15: return 15; + case SPELL_ATTR5_UNK16: return 16; + case SPELL_ATTR5_USABLE_WHILE_FEARED: return 17; + case SPELL_ATTR5_USABLE_WHILE_CONFUSED: return 18; + case SPELL_ATTR5_DONT_TURN_DURING_CAST: return 19; + case SPELL_ATTR5_UNK20: return 20; + case SPELL_ATTR5_UNK21: return 21; + case SPELL_ATTR5_UNK22: return 22; + case SPELL_ATTR5_UNK23: return 23; + case SPELL_ATTR5_UNK24: return 24; + case SPELL_ATTR5_UNK25: return 25; + case SPELL_ATTR5_SKIP_CHECKCAST_LOS_CHECK: return 26; + case SPELL_ATTR5_DONT_SHOW_AURA_IF_SELF_CAST: return 27; + case SPELL_ATTR5_DONT_SHOW_AURA_IF_NOT_SELF_CAST: return 28; + case SPELL_ATTR5_UNK29: return 29; + case SPELL_ATTR5_UNK30: return 30; + case SPELL_ATTR5_UNK31: return 31; + default: throw std::out_of_range("value"); + } +} + /******************************************************************\ |* data for enum 'SpellAttr6' in 'SharedDefines.h' auto-generated *| \******************************************************************/ @@ -807,6 +1122,47 @@ TC_API_EXPORT SpellAttr6 EnumUtils<SpellAttr6>::FromIndex(size_t index) } } +template <> +TC_API_EXPORT size_t EnumUtils<SpellAttr6>::ToIndex(SpellAttr6 value) +{ + switch (value) + { + case SPELL_ATTR6_DONT_DISPLAY_COOLDOWN: return 0; + case SPELL_ATTR6_ONLY_IN_ARENA: return 1; + case SPELL_ATTR6_IGNORE_CASTER_AURAS: return 2; + case SPELL_ATTR6_ASSIST_IGNORE_IMMUNE_FLAG: return 3; + case SPELL_ATTR6_UNK4: return 4; + case SPELL_ATTR6_DONT_CONSUME_PROC_CHARGES: return 5; + case SPELL_ATTR6_USE_SPELL_CAST_EVENT: return 6; + case SPELL_ATTR6_UNK7: return 7; + case SPELL_ATTR6_CANT_TARGET_CROWD_CONTROLLED: return 8; + case SPELL_ATTR6_UNK9: return 9; + case SPELL_ATTR6_CAN_TARGET_POSSESSED_FRIENDS: return 10; + case SPELL_ATTR6_NOT_IN_RAID_INSTANCE: return 11; + case SPELL_ATTR6_CASTABLE_WHILE_ON_VEHICLE: return 12; + case SPELL_ATTR6_CAN_TARGET_INVISIBLE: return 13; + case SPELL_ATTR6_UNK14: return 14; + case SPELL_ATTR6_UNK15: return 15; + case SPELL_ATTR6_UNK16: return 16; + case SPELL_ATTR6_UNK17: return 17; + case SPELL_ATTR6_CAST_BY_CHARMER: return 18; + case SPELL_ATTR6_UNK19: return 19; + case SPELL_ATTR6_ONLY_VISIBLE_TO_CASTER: return 20; + case SPELL_ATTR6_CLIENT_UI_TARGET_EFFECTS: return 21; + case SPELL_ATTR6_UNK22: return 22; + case SPELL_ATTR6_UNK23: return 23; + case SPELL_ATTR6_CAN_TARGET_UNTARGETABLE: return 24; + case SPELL_ATTR6_NOT_RESET_SWING_IF_INSTANT: return 25; + case SPELL_ATTR6_UNK26: return 26; + case SPELL_ATTR6_LIMIT_PCT_HEALING_MODS: return 27; + case SPELL_ATTR6_UNK28: return 28; + case SPELL_ATTR6_LIMIT_PCT_DAMAGE_MODS: return 29; + case SPELL_ATTR6_UNK30: return 30; + case SPELL_ATTR6_IGNORE_CATEGORY_COOLDOWN_MODS: return 31; + default: throw std::out_of_range("value"); + } +} + /******************************************************************\ |* data for enum 'SpellAttr7' in 'SharedDefines.h' auto-generated *| \******************************************************************/ @@ -895,6 +1251,47 @@ TC_API_EXPORT SpellAttr7 EnumUtils<SpellAttr7>::FromIndex(size_t index) } } +template <> +TC_API_EXPORT size_t EnumUtils<SpellAttr7>::ToIndex(SpellAttr7 value) +{ + switch (value) + { + case SPELL_ATTR7_UNK0: return 0; + case SPELL_ATTR7_IGNORE_DURATION_MODS: return 1; + case SPELL_ATTR7_REACTIVATE_AT_RESURRECT: return 2; + case SPELL_ATTR7_IS_CHEAT_SPELL: return 3; + case SPELL_ATTR7_UNK4: return 4; + case SPELL_ATTR7_SUMMON_PLAYER_TOTEM: return 5; + case SPELL_ATTR7_NO_PUSHBACK_ON_DAMAGE: return 6; + case SPELL_ATTR7_UNK7: return 7; + case SPELL_ATTR7_HORDE_ONLY: return 8; + case SPELL_ATTR7_ALLIANCE_ONLY: return 9; + case SPELL_ATTR7_DISPEL_CHARGES: return 10; + case SPELL_ATTR7_INTERRUPT_ONLY_NONPLAYER: return 11; + case SPELL_ATTR7_UNK12: return 12; + case SPELL_ATTR7_UNK13: return 13; + case SPELL_ATTR7_UNK14: return 14; + case SPELL_ATTR7_UNK15: return 15; + case SPELL_ATTR7_CAN_RESTORE_SECONDARY_POWER: return 16; + case SPELL_ATTR7_UNK17: return 17; + case SPELL_ATTR7_HAS_CHARGE_EFFECT: return 18; + case SPELL_ATTR7_ZONE_TELEPORT: return 19; + case SPELL_ATTR7_UNK20: return 20; + case SPELL_ATTR7_UNK21: return 21; + case SPELL_ATTR7_IGNORE_COLD_WEATHER_FLYING: return 22; + case SPELL_ATTR7_UNK23: return 23; + case SPELL_ATTR7_UNK24: return 24; + case SPELL_ATTR7_UNK25: return 25; + case SPELL_ATTR7_UNK26: return 26; + case SPELL_ATTR7_UNK27: return 27; + case SPELL_ATTR7_CONSOLIDATED_RAID_BUFF: return 28; + case SPELL_ATTR7_UNK29: return 29; + case SPELL_ATTR7_UNK30: return 30; + case SPELL_ATTR7_CLIENT_INDICATOR: return 31; + default: throw std::out_of_range("value"); + } +} + /*****************************************************************\ |* data for enum 'Mechanics' in 'SharedDefines.h' auto-generated *| \*****************************************************************/ @@ -983,6 +1380,47 @@ TC_API_EXPORT Mechanics EnumUtils<Mechanics>::FromIndex(size_t index) } } +template <> +TC_API_EXPORT size_t EnumUtils<Mechanics>::ToIndex(Mechanics value) +{ + switch (value) + { + case MECHANIC_NONE: return 0; + case MECHANIC_CHARM: return 1; + case MECHANIC_DISORIENTED: return 2; + case MECHANIC_DISARM: return 3; + case MECHANIC_DISTRACT: return 4; + case MECHANIC_FEAR: return 5; + case MECHANIC_GRIP: return 6; + case MECHANIC_ROOT: return 7; + case MECHANIC_SLOW_ATTACK: return 8; + case MECHANIC_SILENCE: return 9; + case MECHANIC_SLEEP: return 10; + case MECHANIC_SNARE: return 11; + case MECHANIC_STUN: return 12; + case MECHANIC_FREEZE: return 13; + case MECHANIC_KNOCKOUT: return 14; + case MECHANIC_BLEED: return 15; + case MECHANIC_BANDAGE: return 16; + case MECHANIC_POLYMORPH: return 17; + case MECHANIC_BANISH: return 18; + case MECHANIC_SHIELD: return 19; + case MECHANIC_SHACKLE: return 20; + case MECHANIC_MOUNT: return 21; + case MECHANIC_INFECTED: return 22; + case MECHANIC_TURN: return 23; + case MECHANIC_HORROR: return 24; + case MECHANIC_INVULNERABILITY: return 25; + case MECHANIC_INTERRUPT: return 26; + case MECHANIC_DAZE: return 27; + case MECHANIC_DISCOVERY: return 28; + case MECHANIC_IMMUNE_SHIELD: return 29; + case MECHANIC_SAPPED: return 30; + case MECHANIC_ENRAGED: return 31; + default: throw std::out_of_range("value"); + } +} + /*********************************************************************\ |* data for enum 'SpellDmgClass' in 'SharedDefines.h' auto-generated *| \*********************************************************************/ @@ -1015,6 +1453,19 @@ TC_API_EXPORT SpellDmgClass EnumUtils<SpellDmgClass>::FromIndex(size_t index) } } +template <> +TC_API_EXPORT size_t EnumUtils<SpellDmgClass>::ToIndex(SpellDmgClass value) +{ + switch (value) + { + case SPELL_DAMAGE_CLASS_NONE: return 0; + case SPELL_DAMAGE_CLASS_MAGIC: return 1; + case SPELL_DAMAGE_CLASS_MELEE: return 2; + case SPELL_DAMAGE_CLASS_RANGED: return 3; + default: throw std::out_of_range("value"); + } +} + /***************************************************************************\ |* data for enum 'SpellPreventionType' in 'SharedDefines.h' auto-generated *| \***************************************************************************/ @@ -1045,6 +1496,18 @@ TC_API_EXPORT SpellPreventionType EnumUtils<SpellPreventionType>::FromIndex(size } } +template <> +TC_API_EXPORT size_t EnumUtils<SpellPreventionType>::ToIndex(SpellPreventionType value) +{ + switch (value) + { + case SPELL_PREVENTION_TYPE_NONE: return 0; + case SPELL_PREVENTION_TYPE_SILENCE: return 1; + case SPELL_PREVENTION_TYPE_PACIFY: return 2; + default: throw std::out_of_range("value"); + } +} + /*************************************************************\ |* data for enum 'Emote' in 'SharedDefines.h' auto-generated *| \*************************************************************/ @@ -1417,6 +1880,189 @@ TC_API_EXPORT Emote EnumUtils<Emote>::FromIndex(size_t index) } } +template <> +TC_API_EXPORT size_t EnumUtils<Emote>::ToIndex(Emote value) +{ + switch (value) + { + case EMOTE_ONESHOT_TALK: return 0; + case EMOTE_ONESHOT_BOW: return 1; + case EMOTE_ONESHOT_WAVE: return 2; + case EMOTE_ONESHOT_CHEER: return 3; + case EMOTE_ONESHOT_EXCLAMATION: return 4; + case EMOTE_ONESHOT_QUESTION: return 5; + case EMOTE_ONESHOT_EAT: return 6; + case EMOTE_STATE_DANCE: return 7; + case EMOTE_ONESHOT_LAUGH: return 8; + case EMOTE_STATE_SLEEP: return 9; + case EMOTE_STATE_SIT: return 10; + case EMOTE_ONESHOT_RUDE: return 11; + case EMOTE_ONESHOT_ROAR: return 12; + case EMOTE_ONESHOT_KNEEL: return 13; + case EMOTE_ONESHOT_KISS: return 14; + case EMOTE_ONESHOT_CRY: return 15; + case EMOTE_ONESHOT_CHICKEN: return 16; + case EMOTE_ONESHOT_BEG: return 17; + case EMOTE_ONESHOT_APPLAUD: return 18; + case EMOTE_ONESHOT_SHOUT: return 19; + case EMOTE_ONESHOT_FLEX: return 20; + case EMOTE_ONESHOT_SHY: return 21; + case EMOTE_ONESHOT_POINT: return 22; + case EMOTE_STATE_STAND: return 23; + case EMOTE_STATE_READY_UNARMED: return 24; + case EMOTE_STATE_WORK_SHEATHED: return 25; + case EMOTE_STATE_POINT: return 26; + case EMOTE_STATE_NONE: return 27; + case EMOTE_ONESHOT_WOUND: return 28; + case EMOTE_ONESHOT_WOUND_CRITICAL: return 29; + case EMOTE_ONESHOT_ATTACK_UNARMED: return 30; + case EMOTE_ONESHOT_ATTACK1H: return 31; + case EMOTE_ONESHOT_ATTACK2HTIGHT: return 32; + case EMOTE_ONESHOT_ATTACK2H_LOOSE: return 33; + case EMOTE_ONESHOT_PARRY_UNARMED: return 34; + case EMOTE_ONESHOT_PARRY_SHIELD: return 35; + case EMOTE_ONESHOT_READY_UNARMED: return 36; + case EMOTE_ONESHOT_READY1H: return 37; + case EMOTE_ONESHOT_READY_BOW: return 38; + case EMOTE_ONESHOT_SPELL_PRECAST: return 39; + case EMOTE_ONESHOT_SPELL_CAST: return 40; + case EMOTE_ONESHOT_BATTLE_ROAR: return 41; + case EMOTE_ONESHOT_SPECIALATTACK1H: return 42; + case EMOTE_ONESHOT_KICK: return 43; + case EMOTE_ONESHOT_ATTACK_THROWN: return 44; + case EMOTE_STATE_STUN: return 45; + case EMOTE_STATE_DEAD: return 46; + case EMOTE_ONESHOT_SALUTE: return 47; + case EMOTE_STATE_KNEEL: return 48; + case EMOTE_STATE_USE_STANDING: return 49; + case EMOTE_ONESHOT_WAVE_NO_SHEATHE: return 50; + case EMOTE_ONESHOT_CHEER_NO_SHEATHE: return 51; + case EMOTE_ONESHOT_EAT_NO_SHEATHE: return 52; + case EMOTE_STATE_STUN_NO_SHEATHE: return 53; + case EMOTE_ONESHOT_DANCE: return 54; + case EMOTE_ONESHOT_SALUTE_NO_SHEATH: return 55; + case EMOTE_STATE_USE_STANDING_NO_SHEATHE: return 56; + case EMOTE_ONESHOT_LAUGH_NO_SHEATHE: return 57; + case EMOTE_STATE_WORK: return 58; + case EMOTE_STATE_SPELL_PRECAST: return 59; + case EMOTE_ONESHOT_READY_RIFLE: return 60; + case EMOTE_STATE_READY_RIFLE: return 61; + case EMOTE_STATE_WORK_MINING: return 62; + case EMOTE_STATE_WORK_CHOPWOOD: return 63; + case EMOTE_STATE_APPLAUD: return 64; + case EMOTE_ONESHOT_LIFTOFF: return 65; + case EMOTE_ONESHOT_YES: return 66; + case EMOTE_ONESHOT_NO: return 67; + case EMOTE_ONESHOT_TRAIN: return 68; + case EMOTE_ONESHOT_LAND: return 69; + case EMOTE_STATE_AT_EASE: return 70; + case EMOTE_STATE_READY1H: return 71; + case EMOTE_STATE_SPELL_KNEEL_START: return 72; + case EMOTE_STATE_SUBMERGED: return 73; + case EMOTE_ONESHOT_SUBMERGE: return 74; + case EMOTE_STATE_READY2H: return 75; + case EMOTE_STATE_READY_BOW: return 76; + case EMOTE_ONESHOT_MOUNT_SPECIAL: return 77; + case EMOTE_STATE_TALK: return 78; + case EMOTE_STATE_FISHING: return 79; + case EMOTE_ONESHOT_FISHING: return 80; + case EMOTE_ONESHOT_LOOT: return 81; + case EMOTE_STATE_WHIRLWIND: return 82; + case EMOTE_STATE_DROWNED: return 83; + case EMOTE_STATE_HOLD_BOW: return 84; + case EMOTE_STATE_HOLD_RIFLE: return 85; + case EMOTE_STATE_HOLD_THROWN: return 86; + case EMOTE_ONESHOT_DROWN: return 87; + case EMOTE_ONESHOT_STOMP: return 88; + case EMOTE_ONESHOT_ATTACK_OFF: return 89; + case EMOTE_ONESHOT_ATTACK_OFF_PIERCE: return 90; + case EMOTE_STATE_ROAR: return 91; + case EMOTE_STATE_LAUGH: return 92; + case EMOTE_ONESHOT_CREATURE_SPECIAL: return 93; + case EMOTE_ONESHOT_JUMPLANDRUN: return 94; + case EMOTE_ONESHOT_JUMPEND: return 95; + case EMOTE_ONESHOT_TALK_NO_SHEATHE: return 96; + case EMOTE_ONESHOT_POINT_NO_SHEATHE: return 97; + case EMOTE_STATE_CANNIBALIZE: return 98; + case EMOTE_ONESHOT_JUMPSTART: return 99; + case EMOTE_STATE_DANCESPECIAL: return 100; + case EMOTE_ONESHOT_DANCESPECIAL: return 101; + case EMOTE_ONESHOT_CUSTOM_SPELL_01: return 102; + case EMOTE_ONESHOT_CUSTOM_SPELL_02: return 103; + case EMOTE_ONESHOT_CUSTOM_SPELL_03: return 104; + case EMOTE_ONESHOT_CUSTOM_SPELL_04: return 105; + case EMOTE_ONESHOT_CUSTOM_SPELL_05: return 106; + case EMOTE_ONESHOT_CUSTOM_SPELL_06: return 107; + case EMOTE_ONESHOT_CUSTOM_SPELL_07: return 108; + case EMOTE_ONESHOT_CUSTOM_SPELL_08: return 109; + case EMOTE_ONESHOT_CUSTOM_SPELL_09: return 110; + case EMOTE_ONESHOT_CUSTOM_SPELL_10: return 111; + case EMOTE_STATE_EXCLAIM: return 112; + case EMOTE_STATE_DANCE_CUSTOM: return 113; + case EMOTE_STATE_SIT_CHAIR_MED: return 114; + case EMOTE_STATE_CUSTOM_SPELL_01: return 115; + case EMOTE_STATE_CUSTOM_SPELL_02: return 116; + case EMOTE_STATE_EAT: return 117; + case EMOTE_STATE_CUSTOM_SPELL_04: return 118; + case EMOTE_STATE_CUSTOM_SPELL_03: return 119; + case EMOTE_STATE_CUSTOM_SPELL_05: return 120; + case EMOTE_STATE_SPELLEFFECT_HOLD: return 121; + case EMOTE_STATE_EAT_NO_SHEATHE: return 122; + case EMOTE_STATE_MOUNT: return 123; + case EMOTE_STATE_READY2HL: return 124; + case EMOTE_STATE_SIT_CHAIR_HIGH: return 125; + case EMOTE_STATE_FALL: return 126; + case EMOTE_STATE_LOOT: return 127; + case EMOTE_STATE_SUBMERGED_NEW: return 128; + case EMOTE_ONESHOT_COWER: return 129; + case EMOTE_STATE_COWER: return 130; + case EMOTE_ONESHOT_USE_STANDING: return 131; + case EMOTE_STATE_STEALTH_STAND: return 132; + case EMOTE_ONESHOT_OMNICAST_GHOUL: return 133; + case EMOTE_ONESHOT_ATTACK_BOW: return 134; + case EMOTE_ONESHOT_ATTACK_RIFLE: return 135; + case EMOTE_STATE_SWIM_IDLE: return 136; + case EMOTE_STATE_ATTACK_UNARMED: return 137; + case EMOTE_ONESHOT_SPELL_CAST_W_SOUND: return 138; + case EMOTE_ONESHOT_DODGE: return 139; + case EMOTE_ONESHOT_PARRY1H: return 140; + case EMOTE_ONESHOT_PARRY2H: return 141; + case EMOTE_ONESHOT_PARRY2HL: return 142; + case EMOTE_STATE_FLYFALL: return 143; + case EMOTE_ONESHOT_FLYDEATH: return 144; + case EMOTE_STATE_FLY_FALL: return 145; + case EMOTE_ONESHOT_FLY_SIT_GROUND_DOWN: return 146; + case EMOTE_ONESHOT_FLY_SIT_GROUND_UP: return 147; + case EMOTE_ONESHOT_EMERGE: return 148; + case EMOTE_ONESHOT_DRAGON_SPIT: return 149; + case EMOTE_STATE_SPECIAL_UNARMED: return 150; + case EMOTE_ONESHOT_FLYGRAB: return 151; + case EMOTE_STATE_FLYGRABCLOSED: return 152; + case EMOTE_ONESHOT_FLYGRABTHROWN: return 153; + case EMOTE_STATE_FLY_SIT_GROUND: return 154; + case EMOTE_STATE_WALK_BACKWARDS: return 155; + case EMOTE_ONESHOT_FLYTALK: return 156; + case EMOTE_ONESHOT_FLYATTACK1H: return 157; + case EMOTE_STATE_CUSTOM_SPELL_08: return 158; + case EMOTE_ONESHOT_FLY_DRAGON_SPIT: return 159; + case EMOTE_STATE_SIT_CHAIR_LOW: return 160; + case EMOTE_ONESHOT_STUN: return 161; + case EMOTE_ONESHOT_SPELL_CAST_OMNI: return 162; + case EMOTE_STATE_READY_THROWN: return 163; + case EMOTE_ONESHOT_WORK_CHOPWOOD: return 164; + case EMOTE_ONESHOT_WORK_MINING: return 165; + case EMOTE_STATE_SPELL_CHANNEL_OMNI: return 166; + case EMOTE_STATE_SPELL_CHANNEL_DIRECTED: return 167; + case EMOTE_STAND_STATE_NONE: return 168; + case EMOTE_STATE_READYJOUST: return 169; + case EMOTE_STATE_STRANGULATE: return 170; + case EMOTE_STATE_READY_SPELL_OMNI: return 171; + case EMOTE_STATE_HOLD_JOUST: return 172; + case EMOTE_ONESHOT_CRY_JAINA: return 173; + default: throw std::out_of_range("value"); + } +} + /************************************************************************\ |* data for enum 'SpellFamilyNames' in 'SharedDefines.h' auto-generated *| \************************************************************************/ @@ -1470,5 +2116,28 @@ TC_API_EXPORT SpellFamilyNames EnumUtils<SpellFamilyNames>::FromIndex(size_t ind default: throw std::out_of_range("index"); } } + +template <> +TC_API_EXPORT size_t EnumUtils<SpellFamilyNames>::ToIndex(SpellFamilyNames value) +{ + switch (value) + { + case SPELLFAMILY_GENERIC: return 0; + case SPELLFAMILY_UNK1: return 1; + case SPELLFAMILY_MAGE: return 2; + case SPELLFAMILY_WARRIOR: return 3; + case SPELLFAMILY_WARLOCK: return 4; + case SPELLFAMILY_PRIEST: return 5; + case SPELLFAMILY_DRUID: return 6; + case SPELLFAMILY_ROGUE: return 7; + case SPELLFAMILY_HUNTER: return 8; + case SPELLFAMILY_PALADIN: return 9; + case SPELLFAMILY_SHAMAN: return 10; + case SPELLFAMILY_UNK2: return 11; + case SPELLFAMILY_POTION: return 12; + case SPELLFAMILY_DEATHKNIGHT: return 13; + case SPELLFAMILY_PET: return 14; + default: throw std::out_of_range("value"); + } } } |