1313
1414using namespace Hooks ;
1515
16- #define START_HOOK (BINDINGS, EVENT, ENTRY ) \
16+ #define START_HOOK (BINDINGSTORE, EVENT, ENTRY ) \
17+ auto binding = GetBinding<EntryKey<GossipEvents>>(BINDINGSTORE);\
1718 auto key = EntryKey<GossipEvents>(EVENT, ENTRY);\
18- if (!BINDINGS ->HasBindingsFor (key))\
19+ if (!binding ->HasBindingsFor (key))\
1920 return;
2021
21- #define START_HOOK_WITH_RETVAL (BINDINGS, EVENT, ENTRY, RETVAL ) \
22+ #define START_HOOK_WITH_RETVAL (BINDINGSTORE, EVENT, ENTRY, RETVAL ) \
23+ auto binding = GetBinding<EntryKey<GossipEvents>>(BINDINGSTORE);\
2224 auto key = EntryKey<GossipEvents>(EVENT, ENTRY);\
23- if (!BINDINGS ->HasBindingsFor (key))\
25+ if (!binding ->HasBindingsFor (key))\
2426 return RETVAL;
2527
2628bool Eluna::OnGossipHello (Player* pPlayer, GameObject* pGameObject)
2729{
28- START_HOOK_WITH_RETVAL (GameObjectGossipBindings , GOSSIP_EVENT_ON_HELLO, pGameObject->GetEntry (), false );
30+ START_HOOK_WITH_RETVAL (" GameObjectGossip " , GOSSIP_EVENT_ON_HELLO, pGameObject->GetEntry (), false );
2931#if defined ELUNA_CMANGOS && ELUNA_EXPANSION < EXP_CATA
3032 pPlayer->GetPlayerMenu ()->ClearMenus ();
3133#else
3234 pPlayer->PlayerTalkClass ->ClearMenus ();
3335#endif
3436 HookPush (pPlayer);
3537 HookPush (pGameObject);
36- return CallAllFunctionsBool (GameObjectGossipBindings , key, true );
38+ return CallAllFunctionsBool (binding , key, true );
3739}
3840
3941bool Eluna::OnGossipSelect (Player* pPlayer, GameObject* pGameObject, uint32 sender, uint32 action)
4042{
41- START_HOOK_WITH_RETVAL (GameObjectGossipBindings , GOSSIP_EVENT_ON_SELECT, pGameObject->GetEntry (), false );
43+ START_HOOK_WITH_RETVAL (" GameObjectGossip " , GOSSIP_EVENT_ON_SELECT, pGameObject->GetEntry (), false );
4244#if defined ELUNA_CMANGOS && ELUNA_EXPANSION < EXP_CATA
4345 pPlayer->GetPlayerMenu ()->ClearMenus ();
4446#else
@@ -48,12 +50,12 @@ bool Eluna::OnGossipSelect(Player* pPlayer, GameObject* pGameObject, uint32 send
4850 HookPush (pGameObject);
4951 HookPush (sender);
5052 HookPush (action);
51- return CallAllFunctionsBool (GameObjectGossipBindings , key, true );
53+ return CallAllFunctionsBool (binding , key, true );
5254}
5355
5456bool Eluna::OnGossipSelectCode (Player* pPlayer, GameObject* pGameObject, uint32 sender, uint32 action, const char * code)
5557{
56- START_HOOK_WITH_RETVAL (GameObjectGossipBindings , GOSSIP_EVENT_ON_SELECT, pGameObject->GetEntry (), false );
58+ START_HOOK_WITH_RETVAL (" GameObjectGossip " , GOSSIP_EVENT_ON_SELECT, pGameObject->GetEntry (), false );
5759#if defined ELUNA_CMANGOS && ELUNA_EXPANSION < EXP_CATA
5860 pPlayer->GetPlayerMenu ()->ClearMenus ();
5961#else
@@ -64,12 +66,12 @@ bool Eluna::OnGossipSelectCode(Player* pPlayer, GameObject* pGameObject, uint32
6466 HookPush (sender);
6567 HookPush (action);
6668 HookPush (code);
67- return CallAllFunctionsBool (GameObjectGossipBindings , key, true );
69+ return CallAllFunctionsBool (binding , key, true );
6870}
6971
7072void Eluna::HandleGossipSelectOption (Player* pPlayer, uint32 menuId, uint32 sender, uint32 action, const std::string& code)
7173{
72- START_HOOK (PlayerGossipBindings , GOSSIP_EVENT_ON_SELECT, menuId);
74+ START_HOOK (" PlayerGossip " , GOSSIP_EVENT_ON_SELECT, menuId);
7375#if defined ELUNA_CMANGOS && ELUNA_EXPANSION < EXP_CATA
7476 pPlayer->GetPlayerMenu ()->ClearMenus ();
7577#else
@@ -85,25 +87,25 @@ void Eluna::HandleGossipSelectOption(Player* pPlayer, uint32 menuId, uint32 send
8587 else
8688 HookPush (code);
8789
88- CallAllFunctions (PlayerGossipBindings , key);
90+ CallAllFunctions (binding , key);
8991}
9092
9193bool Eluna::OnItemGossip (Player* pPlayer, Item* pItem, SpellCastTargets const & /* targets*/ )
9294{
93- START_HOOK_WITH_RETVAL (ItemGossipBindings , GOSSIP_EVENT_ON_HELLO, pItem->GetEntry (), true );
95+ START_HOOK_WITH_RETVAL (" ItemGossip " , GOSSIP_EVENT_ON_HELLO, pItem->GetEntry (), true );
9496#if defined ELUNA_CMANGOS && ELUNA_EXPANSION < EXP_CATA
9597 pPlayer->GetPlayerMenu ()->ClearMenus ();
9698#else
9799 pPlayer->PlayerTalkClass ->ClearMenus ();
98100#endif
99101 HookPush (pPlayer);
100102 HookPush (pItem);
101- return CallAllFunctionsBool (ItemGossipBindings , key, true );
103+ return CallAllFunctionsBool (binding , key, true );
102104}
103105
104106void Eluna::HandleGossipSelectOption (Player* pPlayer, Item* pItem, uint32 sender, uint32 action, const std::string& code)
105107{
106- START_HOOK (ItemGossipBindings , GOSSIP_EVENT_ON_SELECT, pItem->GetEntry ());
108+ START_HOOK (" ItemGossip " , GOSSIP_EVENT_ON_SELECT, pItem->GetEntry ());
107109#if defined ELUNA_CMANGOS && ELUNA_EXPANSION < EXP_CATA
108110 pPlayer->GetPlayerMenu ()->ClearMenus ();
109111#else
@@ -119,25 +121,25 @@ void Eluna::HandleGossipSelectOption(Player* pPlayer, Item* pItem, uint32 sender
119121 else
120122 HookPush (code);
121123
122- CallAllFunctions (ItemGossipBindings , key);
124+ CallAllFunctions (binding , key);
123125}
124126
125127bool Eluna::OnGossipHello (Player* pPlayer, Creature* pCreature)
126128{
127- START_HOOK_WITH_RETVAL (CreatureGossipBindings , GOSSIP_EVENT_ON_HELLO, pCreature->GetEntry (), false );
129+ START_HOOK_WITH_RETVAL (" CreatureGossip " , GOSSIP_EVENT_ON_HELLO, pCreature->GetEntry (), false );
128130#if defined ELUNA_CMANGOS && ELUNA_EXPANSION < EXP_CATA
129131 pPlayer->GetPlayerMenu ()->ClearMenus ();
130132#else
131133 pPlayer->PlayerTalkClass ->ClearMenus ();
132134#endif
133135 HookPush (pPlayer);
134136 HookPush (pCreature);
135- return CallAllFunctionsBool (CreatureGossipBindings , key, true );
137+ return CallAllFunctionsBool (binding , key, true );
136138}
137139
138140bool Eluna::OnGossipSelect (Player* pPlayer, Creature* pCreature, uint32 sender, uint32 action)
139141{
140- START_HOOK_WITH_RETVAL (CreatureGossipBindings , GOSSIP_EVENT_ON_SELECT, pCreature->GetEntry (), false );
142+ START_HOOK_WITH_RETVAL (" CreatureGossip " , GOSSIP_EVENT_ON_SELECT, pCreature->GetEntry (), false );
141143#if defined ELUNA_CMANGOS && ELUNA_EXPANSION < EXP_CATA
142144 auto original_menu = *pPlayer->GetPlayerMenu ();
143145 pPlayer->GetPlayerMenu ()->ClearMenus ();
@@ -149,7 +151,7 @@ bool Eluna::OnGossipSelect(Player* pPlayer, Creature* pCreature, uint32 sender,
149151 HookPush (pCreature);
150152 HookPush (sender);
151153 HookPush (action);
152- auto preventDefault = CallAllFunctionsBool (CreatureGossipBindings , key, true );
154+ auto preventDefault = CallAllFunctionsBool (binding , key, true );
153155 if (!preventDefault) {
154156#if defined ELUNA_CMANGOS && ELUNA_EXPANSION < EXP_CATA
155157 *pPlayer->GetPlayerMenu () = original_menu;
@@ -162,7 +164,7 @@ bool Eluna::OnGossipSelect(Player* pPlayer, Creature* pCreature, uint32 sender,
162164
163165bool Eluna::OnGossipSelectCode (Player* pPlayer, Creature* pCreature, uint32 sender, uint32 action, const char * code)
164166{
165- START_HOOK_WITH_RETVAL (CreatureGossipBindings , GOSSIP_EVENT_ON_SELECT, pCreature->GetEntry (), false );
167+ START_HOOK_WITH_RETVAL (" CreatureGossip " , GOSSIP_EVENT_ON_SELECT, pCreature->GetEntry (), false );
166168#if defined ELUNA_CMANGOS && ELUNA_EXPANSION < EXP_CATA
167169 auto original_menu = *pPlayer->GetPlayerMenu ();
168170 pPlayer->GetPlayerMenu ()->ClearMenus ();
@@ -175,7 +177,7 @@ bool Eluna::OnGossipSelectCode(Player* pPlayer, Creature* pCreature, uint32 send
175177 HookPush (sender);
176178 HookPush (action);
177179 HookPush (code);
178- auto preventDefault = CallAllFunctionsBool (CreatureGossipBindings , key, true );
180+ auto preventDefault = CallAllFunctionsBool (binding , key, true );
179181 if (!preventDefault) {
180182#if defined ELUNA_CMANGOS && ELUNA_EXPANSION < EXP_CATA
181183 *pPlayer->GetPlayerMenu () = original_menu;
0 commit comments