root/trunk/src/game/WorldSession.h @ 173

Revision 173, 30.9 kB (checked in by yumileroy, 17 years ago)

[svn] * Avoid access to bag item prototype for getting bag size, use related item update field instead as more fast source.
* Better check client inventory pos data received in some client packets to skip invalid cases.
* Removed some unnecessary database queries.
* Make guid lookup for adding ignore async.
* Added two parameter versions of the AsyncQuery? function
* Make queries for adding friends async. - Hunuza
* Replace some PQuery() calls with more simple Query() - Hunuza
* Mark spell as executed instead of deleteable to solve crash.
*** Source mangos.

**Its a big commit. so test with care... or without care.... whatever floats your boat.

Original author: KingPin?
Date: 2008-11-05 20:10:19-06:00

Line 
1/*
2 * Copyright (C) 2005-2008 MaNGOS <http://www.mangosproject.org/>
3 *
4 * Copyright (C) 2008 Trinity <http://www.trinitycore.org/>
5 *
6 * This program is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation; either version 2 of the License, or
9 * (at your option) any later version.
10 *
11 * This program is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU General Public License for more details.
15 *
16 * You should have received a copy of the GNU General Public License
17 * along with this program; if not, write to the Free Software
18 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
19 */
20
21/// \addtogroup u2w
22/// @{
23/// \file
24
25#ifndef __WORLDSESSION_H
26#define __WORLDSESSION_H
27
28#include "Common.h"
29
30class MailItemsInfo;
31struct ItemPrototype;
32struct AuctionEntry;
33struct DeclinedName;
34
35class Creature;
36class Item;
37class Object;
38class Player;
39class Unit;
40class WorldPacket;
41class WorldSocket;
42class WorldSession;
43class QueryResult;
44class LoginQueryHolder;
45class CharacterHandler;
46
47#define CHECK_PACKET_SIZE(P,S) if((P).size() < (S)) return SizeError((P),(S));
48
49enum PartyOperation
50{
51    PARTY_OP_INVITE = 0,
52    PARTY_OP_LEAVE = 2
53};
54
55enum PartyResult
56{
57    PARTY_RESULT_OK                   = 0,
58    PARTY_RESULT_CANT_FIND_TARGET     = 1,
59    PARTY_RESULT_NOT_IN_YOUR_PARTY    = 2,
60    PARTY_RESULT_NOT_IN_YOUR_INSTANCE = 3,
61    PARTY_RESULT_PARTY_FULL           = 4,
62    PARTY_RESULT_ALREADY_IN_GROUP     = 5,
63    PARTY_RESULT_YOU_NOT_IN_GROUP     = 6,
64    PARTY_RESULT_YOU_NOT_LEADER       = 7,
65    PARTY_RESULT_TARGET_UNFRIENDLY    = 8,
66    PARTY_RESULT_TARGET_IGNORE_YOU    = 9,
67    PARTY_RESULT_INVITE_RESTRICTED    = 13
68};
69
70/// Player session in the World
71class TRINITY_DLL_SPEC WorldSession
72{
73    friend class CharacterHandler;
74    public:
75        WorldSession(uint32 id, WorldSocket *sock, uint32 sec, uint8 expansion, time_t mute_time, LocaleConstant locale);
76        ~WorldSession();
77
78        bool PlayerLoading() const { return m_playerLoading; }
79        bool PlayerLogout() const { return m_playerLogout; }
80
81        void SizeError(WorldPacket const& packet, uint32 size) const;
82
83        void SendPacket(WorldPacket const* packet);
84        void SendNotification(const char *format,...) ATTR_PRINTF(2,3);
85        void SendNotification(int32 string_id,...);
86        void SendPetNameInvalid(uint32 error, std::string name, DeclinedName *declinedName);
87        void SendLfgResult(uint32 type, uint32 entry, uint8 lfg_type);
88        void SendPartyResult(PartyOperation operation, std::string member, PartyResult res);
89        void SendAreaTriggerMessage(const char* Text, ...) ATTR_PRINTF(2,3);
90
91        uint32 GetSecurity() const { return _security; }
92        uint32 GetAccountId() const { return _accountId; }
93        Player* GetPlayer() const { return _player; }
94        char const* GetPlayerName() const;
95        void SetSecurity(uint32 security) { _security = security; }
96        std::string& GetRemoteAddress() { return m_Address; }
97        void SetPlayer(Player *plr) { _player = plr; }
98        uint8 Expansion() const { return m_expansion; }
99
100        /// Is the user engaged in a log out process?
101        bool isLogingOut() const { return _logoutTime || m_playerLogout; }
102
103        /// Engage the logout process for the user
104        void LogoutRequest(time_t requestTime)
105        {
106            _logoutTime = requestTime;
107        }
108
109        /// Is logout cooldown expired?
110        bool ShouldLogOut(time_t currTime) const
111        {
112            return (_logoutTime > 0 && currTime >= _logoutTime + 20);
113        }
114
115        void LogoutPlayer(bool Save);
116        void KickPlayer();
117
118        void QueuePacket(WorldPacket* new_packet);
119        bool Update(uint32 diff);
120
121        /// Handle the authentication waiting queue (to be completed)
122        void SendAuthWaitQue(uint32 position);
123
124        //void SendTestCreatureQueryOpcode( uint32 entry, uint64 guid, uint32 testvalue );
125        void SendNameQueryOpcode(Player* p);
126        void SendNameQueryOpcodeFromDB(uint64 guid);
127        static void SendNameQueryOpcodeFromDBCallBack(QueryResult *result, uint32 accountId);
128
129        void SendTrainerList( uint64 guid );
130        void SendTrainerList( uint64 guid,std::string strTitle );
131        void SendListInventory( uint64 guid );
132        void SendShowBank( uint64 guid );
133        void SendTabardVendorActivate( uint64 guid );
134        void SendSpiritResurrect();
135        void SendBindPoint(Creature* npc);
136        void SendGMTicketGetTicket(uint32 status, char const* text);
137
138        void SendAttackStop(Unit const* enemy);
139
140        void SendBattlegGroundList( uint64 guid, uint32 bgTypeId );
141
142        void SendTradeStatus(uint32 status);
143        void SendCancelTrade();
144
145        void SendStablePet(uint64 guid );
146        void SendPetitionQueryOpcode( uint64 petitionguid);
147        void SendUpdateTrade();
148
149        //pet
150        void SendPetNameQuery(uint64 guid, uint32 petnumber);
151
152        //mail
153                                                            //used with item_page table
154        bool SendItemInfo( uint32 itemid, WorldPacket data );
155        static void SendReturnToSender(uint8 messageType, uint32 sender_acc, uint32 sender_guid, uint32 receiver_guid, std::string subject, uint32 itemTextId, MailItemsInfo *mi, uint32 money, uint32 COD, uint16 mailTemplateId = 0);
156        static void SendMailTo(Player* receiver, uint8 messageType, uint8 stationery, uint32 sender_guidlow_or_entry, uint32 received_guidlow, std::string subject, uint32 itemTextId, MailItemsInfo* mi, uint32 money, uint32 COD, uint32 checked, uint32 deliver_delay = 0, uint16 mailTemplateId = 0);
157
158        //auction
159        void SendAuctionHello( uint64 guid, Creature * unit );
160        void SendAuctionCommandResult( uint32 auctionId, uint32 Action, uint32 ErrorCode, uint32 bidError = 0);
161        void SendAuctionBidderNotification( uint32 location, uint32 auctionId, uint64 bidder, uint32 bidSum, uint32 diff, uint32 item_template);
162        void SendAuctionOwnerNotification( AuctionEntry * auction );
163        bool SendAuctionInfo(WorldPacket & data, AuctionEntry* auction);
164        void SendAuctionOutbiddedMail( AuctionEntry * auction, uint32 newPrice );
165        void SendAuctionCancelledToBidderMail( AuctionEntry* auction );
166
167        //Item Enchantment
168        void SendEnchantmentLog(uint64 Target, uint64 Caster,uint32 ItemID,uint32 SpellID);
169        void SendItemEnchantTimeUpdate(uint64 Playerguid, uint64 Itemguid,uint32 slot,uint32 Duration);
170
171        //Taxi
172        void SendTaxiStatus( uint64 guid );
173        void SendTaxiMenu( Creature* unit );
174        void SendDoFlight( uint16 MountId, uint32 path, uint32 pathNode = 0 );
175        bool SendLearnNewTaxiNode( Creature* unit );
176
177        // Guild/Arena Team
178        void SendGuildCommandResult(uint32 typecmd,std::string str,uint32 cmdresult);
179        void SendArenaTeamCommandResult(uint32 unk1, std::string str1, std::string str2, uint32 unk3);
180        void BuildArenaTeamEventPacket(WorldPacket *data, uint8 eventid, uint8 str_count, std::string str1, std::string str2, std::string str3);
181        void SendNotInArenaTeamPacket(uint8 type);
182        void SendPetitionShowList( uint64 guid );
183        void SendSaveGuildEmblem( uint32 msg );
184
185        // Looking For Group
186        // TRUE values set by client sending CMSG_LFG_SET_AUTOJOIN and CMSG_LFM_CLEAR_AUTOFILL before player login
187        bool LookingForGroup_auto_join;
188        bool LookingForGroup_auto_add;
189
190        void BuildPartyMemberStatsChangedPacket(Player *player, WorldPacket *data);
191
192        void DoLootRelease( uint64 lguid );
193
194        // Account mute time
195        time_t m_muteTime;
196
197        // Locales
198        LocaleConstant GetSessionDbcLocale() const { return m_sessionDbcLocale; }
199                int GetSessionDbLocaleIndex() const { return m_sessionDbLocaleIndex; }
200                const char *GetTrinityString(int32 entry) const;
201
202        uint32 GetLatency() const { return m_latency; }
203        void SetLatency(uint32 latency) { m_latency = latency; }
204        uint32 getDialogStatus(Player *pPlayer, Object* questgiver, uint32 defstatus);
205
206    public:                                                 // opcodes handlers
207
208        void Handle_NULL(WorldPacket& recvPacket);          // not used
209        void Handle_EarlyProccess( WorldPacket& recvPacket);// just mark packets processed in WorldSocket::OnRead
210        void Handle_ServerSide(WorldPacket& recvPacket);    // sever side only, can't be accepted from client
211        void Handle_Depricated(WorldPacket& recvPacket);    // never used anymore by client
212
213        void HandleCharEnumOpcode(WorldPacket& recvPacket);
214        void HandleCharDeleteOpcode(WorldPacket& recvPacket);
215        void HandleCharCreateOpcode(WorldPacket& recvPacket);
216        void HandlePlayerLoginOpcode(WorldPacket& recvPacket);
217        void HandleCharEnum(QueryResult * result);
218        void HandlePlayerLogin(LoginQueryHolder * holder);
219
220        // played time
221        void HandlePlayedTime(WorldPacket& recvPacket);
222
223        // new
224        void HandleMoveUnRootAck(WorldPacket& recvPacket);
225        void HandleMoveRootAck(WorldPacket& recvPacket);
226        void HandleLookingForGroup(WorldPacket& recvPacket);
227
228        // new inspect
229        void HandleInspectOpcode(WorldPacket& recvPacket);
230
231        // new party stats
232        void HandleInspectHonorStatsOpcode(WorldPacket& recvPacket);
233
234        void HandleMoveWaterWalkAck(WorldPacket& recvPacket);
235        void HandleFeatherFallAck(WorldPacket &recv_data);
236
237        void HandleMoveHoverAck( WorldPacket & recv_data );
238
239        void HandleMountSpecialAnimOpcode(WorldPacket &recvdata);
240
241        // character view
242        void HandleToggleHelmOpcode(WorldPacket& recv_data);
243        void HandleToggleCloakOpcode(WorldPacket& recv_data);
244
245        // repair
246        void HandleRepairItemOpcode(WorldPacket& recvPacket);
247
248        // Knockback
249        void HandleMoveKnockBackAck(WorldPacket& recvPacket);
250
251        void HandleMoveTeleportAck(WorldPacket& recvPacket);
252        void HandleForceSpeedChangeAck( WorldPacket & recv_data );
253
254        void HandlePingOpcode(WorldPacket& recvPacket);
255        void HandleAuthSessionOpcode(WorldPacket& recvPacket);
256        void HandleRepopRequestOpcode(WorldPacket& recvPacket);
257        void HandleAutostoreLootItemOpcode(WorldPacket& recvPacket);
258        void HandleLootMoneyOpcode(WorldPacket& recvPacket);
259        void HandleLootOpcode(WorldPacket& recvPacket);
260        void HandleLootReleaseOpcode(WorldPacket& recvPacket);
261        void HandleLootMasterGiveOpcode(WorldPacket& recvPacket);
262        void HandleWhoOpcode(WorldPacket& recvPacket);
263        void HandleLogoutRequestOpcode(WorldPacket& recvPacket);
264        void HandlePlayerLogoutOpcode(WorldPacket& recvPacket);
265        void HandleLogoutCancelOpcode(WorldPacket& recvPacket);
266        void HandleGMTicketGetTicketOpcode(WorldPacket& recvPacket);
267        void HandleGMTicketCreateOpcode(WorldPacket& recvPacket);
268        void HandleGMTicketSystemStatusOpcode(WorldPacket& recvPacket);
269
270        void HandleGMTicketDeleteOpcode(WorldPacket& recvPacket);
271        void HandleGMTicketUpdateTextOpcode(WorldPacket& recvPacket);
272
273        void HandleGMSurveySubmit(WorldPacket& recvPacket);
274
275        void HandleTogglePvP(WorldPacket& recvPacket);
276
277        void HandleZoneUpdateOpcode(WorldPacket& recvPacket);
278        void HandleSetTargetOpcode(WorldPacket& recvPacket);
279        void HandleSetSelectionOpcode(WorldPacket& recvPacket);
280        void HandleStandStateChangeOpcode(WorldPacket& recvPacket);
281        void HandleEmoteOpcode(WorldPacket& recvPacket);
282        void HandleFriendListOpcode(WorldPacket& recvPacket);
283        void HandleAddFriendOpcode(WorldPacket& recvPacket);
284        static void HandleAddFriendOpcodeCallBack(QueryResult *result, uint32 accountId, std::string friendNote);
285        void HandleDelFriendOpcode(WorldPacket& recvPacket);
286        void HandleAddIgnoreOpcode(WorldPacket& recvPacket);
287        static void HandleAddIgnoreOpcodeCallBack(QueryResult *result, uint32 accountId);
288        void HandleDelIgnoreOpcode(WorldPacket& recvPacket);
289        void HandleSetFriendNoteOpcode(WorldPacket& recvPacket);
290        void HandleBugOpcode(WorldPacket& recvPacket);
291        void HandleSetAmmoOpcode(WorldPacket& recvPacket);
292        void HandleItemNameQueryOpcode(WorldPacket& recvPacket);
293
294        void HandleAreaTriggerOpcode(WorldPacket& recvPacket);
295
296        void HandleSetFactionAtWar( WorldPacket & recv_data );
297        void HandleSetFactionCheat( WorldPacket & recv_data );
298        void HandleSetWatchedFactionIndexOpcode(WorldPacket & recv_data);
299        void HandleSetWatchedFactionInactiveOpcode(WorldPacket & recv_data);
300
301        void HandleUpdateAccountData(WorldPacket& recvPacket);
302        void HandleRequestAccountData(WorldPacket& recvPacket);
303        void HandleSetActionButtonOpcode(WorldPacket& recvPacket);
304
305        void HandleGameObjectUseOpcode(WorldPacket& recPacket);
306        void HandleMeetingStoneInfo(WorldPacket& recPacket);
307
308        void HandleNameQueryOpcode(WorldPacket& recvPacket);
309
310        void HandleQueryTimeOpcode(WorldPacket& recvPacket);
311
312        void HandleCreatureQueryOpcode(WorldPacket& recvPacket);
313
314        void HandleGameObjectQueryOpcode(WorldPacket& recvPacket);
315
316        void HandleMoveWorldportAckOpcode(WorldPacket& recvPacket);
317        void HandleMoveWorldportAckOpcode();                // for server-side calls
318
319        void HandleMovementOpcodes(WorldPacket& recvPacket);
320        void HandleSetActiveMoverOpcode(WorldPacket &recv_data);
321        void HandleMoveTimeSkippedOpcode(WorldPacket &recv_data);
322
323        void HandleRequestRaidInfoOpcode( WorldPacket & recv_data );
324
325        void HandleBattlefieldStatusOpcode(WorldPacket &recv_data);
326        void HandleBattleMasterHelloOpcode(WorldPacket &recv_data);
327
328        void HandleGroupInviteOpcode(WorldPacket& recvPacket);
329        //void HandleGroupCancelOpcode(WorldPacket& recvPacket);
330        void HandleGroupAcceptOpcode(WorldPacket& recvPacket);
331        void HandleGroupDeclineOpcode(WorldPacket& recvPacket);
332        void HandleGroupUninviteNameOpcode(WorldPacket& recvPacket);
333        void HandleGroupUninviteGuidOpcode(WorldPacket& recvPacket);
334        void HandleGroupUninvite(uint64 guid, std::string name);
335        void HandleGroupSetLeaderOpcode(WorldPacket& recvPacket);
336        void HandleGroupLeaveOpcode(WorldPacket& recvPacket);
337        void HandleGroupPassOnLootOpcode( WorldPacket &recv_data );
338        void HandleLootMethodOpcode(WorldPacket& recvPacket);
339        void HandleLootRoll( WorldPacket &recv_data );
340        void HandleRequestPartyMemberStatsOpcode( WorldPacket &recv_data );
341        void HandleRaidIconTargetOpcode( WorldPacket & recv_data );
342        void HandleRaidReadyCheckOpcode( WorldPacket & recv_data );
343        void HandleRaidReadyCheckFinishOpcode( WorldPacket & recv_data );
344        void HandleRaidConvertOpcode( WorldPacket & recv_data );
345        void HandleGroupChangeSubGroupOpcode( WorldPacket & recv_data );
346        void HandleGroupAssistantOpcode( WorldPacket & recv_data );
347        void HandleGroupPromoteOpcode( WorldPacket & recv_data );
348
349        void HandlePetitionBuyOpcode(WorldPacket& recv_data);
350        void HandlePetitionShowSignOpcode(WorldPacket& recv_data);
351        void HandlePetitionQueryOpcode(WorldPacket& recv_data);
352        void HandlePetitionRenameOpcode(WorldPacket& recv_data);
353        void HandlePetitionSignOpcode(WorldPacket& recv_data);
354        void HandlePetitionDeclineOpcode(WorldPacket& recv_data);
355        void HandleOfferPetitionOpcode(WorldPacket& recv_data);
356        void HandleTurnInPetitionOpcode(WorldPacket& recv_data);
357
358        void HandleGuildQueryOpcode(WorldPacket& recvPacket);
359        void HandleGuildCreateOpcode(WorldPacket& recvPacket);
360        void HandleGuildInviteOpcode(WorldPacket& recvPacket);
361        void HandleGuildRemoveOpcode(WorldPacket& recvPacket);
362        void HandleGuildAcceptOpcode(WorldPacket& recvPacket);
363        void HandleGuildDeclineOpcode(WorldPacket& recvPacket);
364        void HandleGuildInfoOpcode(WorldPacket& recvPacket);
365        void HandleGuildEventLogOpcode(WorldPacket& recvPacket);
366        void HandleGuildRosterOpcode(WorldPacket& recvPacket);
367        void HandleGuildPromoteOpcode(WorldPacket& recvPacket);
368        void HandleGuildDemoteOpcode(WorldPacket& recvPacket);
369        void HandleGuildLeaveOpcode(WorldPacket& recvPacket);
370        void HandleGuildDisbandOpcode(WorldPacket& recvPacket);
371        void HandleGuildLeaderOpcode(WorldPacket& recvPacket);
372        void HandleGuildMOTDOpcode(WorldPacket& recvPacket);
373        void HandleGuildSetPublicNoteOpcode(WorldPacket& recvPacket);
374        void HandleGuildSetOfficerNoteOpcode(WorldPacket& recvPacket);
375        void HandleGuildRankOpcode(WorldPacket& recvPacket);
376        void HandleGuildAddRankOpcode(WorldPacket& recvPacket);
377        void HandleGuildDelRankOpcode(WorldPacket& recvPacket);
378        void HandleGuildChangeInfoOpcode(WorldPacket& recvPacket);
379        void HandleGuildSaveEmblemOpcode(WorldPacket& recvPacket);
380
381        void HandleTaxiNodeStatusQueryOpcode(WorldPacket& recvPacket);
382        void HandleTaxiQueryAvailableNodesOpcode(WorldPacket& recvPacket);
383        void HandleActivateTaxiOpcode(WorldPacket& recvPacket);
384        void HandleActivateTaxiFarOpcode(WorldPacket& recvPacket);
385        void HandleTaxiNextDestinationOpcode(WorldPacket& recvPacket);
386
387        void HandleTabardVendorActivateOpcode(WorldPacket& recvPacket);
388        void HandleBankerActivateOpcode(WorldPacket& recvPacket);
389        void HandleBuyBankSlotOpcode(WorldPacket& recvPacket);
390        void HandleTrainerListOpcode(WorldPacket& recvPacket);
391        void HandleTrainerBuySpellOpcode(WorldPacket& recvPacket);
392        void HandlePetitionShowListOpcode(WorldPacket& recvPacket);
393        void HandleGossipHelloOpcode(WorldPacket& recvPacket);
394        void HandleGossipSelectOptionOpcode(WorldPacket& recvPacket);
395        void HandleSpiritHealerActivateOpcode(WorldPacket& recvPacket);
396        void HandleNpcTextQueryOpcode(WorldPacket& recvPacket);
397        void HandleBinderActivateOpcode(WorldPacket& recvPacket);
398        void HandleListStabledPetsOpcode(WorldPacket& recvPacket);
399        void HandleStablePet(WorldPacket& recvPacket);
400        void HandleUnstablePet(WorldPacket& recvPacket);
401        void HandleBuyStableSlot(WorldPacket& recvPacket);
402        void HandleStableRevivePet(WorldPacket& recvPacket);
403        void HandleStableSwapPet(WorldPacket& recvPacket);
404
405        void HandleDuelAcceptedOpcode(WorldPacket& recvPacket);
406        void HandleDuelCancelledOpcode(WorldPacket& recvPacket);
407
408        void HandleAcceptTradeOpcode(WorldPacket& recvPacket);
409        void HandleBeginTradeOpcode(WorldPacket& recvPacket);
410        void HandleBusyTradeOpcode(WorldPacket& recvPacket);
411        void HandleCancelTradeOpcode(WorldPacket& recvPacket);
412        void HandleClearTradeItemOpcode(WorldPacket& recvPacket);
413        void HandleIgnoreTradeOpcode(WorldPacket& recvPacket);
414        void HandleInitiateTradeOpcode(WorldPacket& recvPacket);
415        void HandleSetTradeGoldOpcode(WorldPacket& recvPacket);
416        void HandleSetTradeItemOpcode(WorldPacket& recvPacket);
417        void HandleUnacceptTradeOpcode(WorldPacket& recvPacket);
418
419        void HandleAuctionHelloOpcode(WorldPacket& recvPacket);
420        void HandleAuctionListItems( WorldPacket & recv_data );
421        void HandleAuctionListBidderItems( WorldPacket & recv_data );
422        void HandleAuctionSellItem( WorldPacket & recv_data );
423        void HandleAuctionRemoveItem( WorldPacket & recv_data );
424        void HandleAuctionListOwnerItems( WorldPacket & recv_data );
425        void HandleAuctionPlaceBid( WorldPacket & recv_data );
426
427        void HandleGetMail( WorldPacket & recv_data );
428        void HandleSendMail( WorldPacket & recv_data );
429        void HandleTakeMoney( WorldPacket & recv_data );
430        void HandleTakeItem( WorldPacket & recv_data );
431        void HandleMarkAsRead( WorldPacket & recv_data );
432        void HandleReturnToSender( WorldPacket & recv_data );
433        void HandleMailDelete( WorldPacket & recv_data );
434        void HandleItemTextQuery( WorldPacket & recv_data);
435        void HandleMailCreateTextItem(WorldPacket & recv_data );
436        void HandleMsgQueryNextMailtime(WorldPacket & recv_data );
437        void HandleCancelChanneling(WorldPacket & recv_data );
438
439        void SendItemPageInfo( ItemPrototype *itemProto );
440        void HandleSplitItemOpcode(WorldPacket& recvPacket);
441        void HandleSwapInvItemOpcode(WorldPacket& recvPacket);
442        void HandleDestroyItemOpcode(WorldPacket& recvPacket);
443        void HandleAutoEquipItemOpcode(WorldPacket& recvPacket);
444        void HandleItemQuerySingleOpcode(WorldPacket& recvPacket);
445        void HandleSellItemOpcode(WorldPacket& recvPacket);
446        void HandleBuyItemInSlotOpcode(WorldPacket& recvPacket);
447        void HandleBuyItemOpcode(WorldPacket& recvPacket);
448        void HandleListInventoryOpcode(WorldPacket& recvPacket);
449        void HandleAutoStoreBagItemOpcode(WorldPacket& recvPacket);
450        void HandleReadItem(WorldPacket& recvPacket);
451        void HandleAutoEquipItemSlotOpcode(WorldPacket & recvPacket);
452        void HandleSwapItem( WorldPacket & recvPacket);
453        void HandleBuybackItem(WorldPacket & recvPacket);
454        void HandleAutoBankItemOpcode(WorldPacket& recvPacket);
455        void HandleAutoStoreBankItemOpcode(WorldPacket& recvPacket);
456        void HandleWrapItemOpcode(WorldPacket& recvPacket);
457
458        void HandleAttackSwingOpcode(WorldPacket& recvPacket);
459        void HandleAttackStopOpcode(WorldPacket& recvPacket);
460        void HandleSetSheathedOpcode(WorldPacket& recvPacket);
461
462        void HandleUseItemOpcode(WorldPacket& recvPacket);
463        void HandleOpenItemOpcode(WorldPacket& recvPacket);
464        void HandleCastSpellOpcode(WorldPacket& recvPacket);
465        void HandleCancelCastOpcode(WorldPacket& recvPacket);
466        void HandleCancelAuraOpcode(WorldPacket& recvPacket);
467        void HandleCancelGrowthAuraOpcode(WorldPacket& recvPacket);
468        void HandleCancelAutoRepeatSpellOpcode(WorldPacket& recvPacket);
469
470        void HandleLearnTalentOpcode(WorldPacket& recvPacket);
471        void HandleTalentWipeOpcode(WorldPacket& recvPacket);
472        void HandleUnlearnSkillOpcode(WorldPacket& recvPacket);
473
474        void HandleQuestgiverStatusQueryOpcode(WorldPacket& recvPacket);
475        void HandleQuestgiverStatusQueryMultipleOpcode(WorldPacket& recvPacket);
476        void HandleQuestgiverHelloOpcode(WorldPacket& recvPacket);
477        void HandleQuestgiverAcceptQuestOpcode(WorldPacket& recvPacket);
478        void HandleQuestgiverQuestQueryOpcode(WorldPacket& recvPacket);
479        void HandleQuestgiverChooseRewardOpcode(WorldPacket& recvPacket);
480        void HandleQuestgiverRequestRewardOpcode(WorldPacket& recvPacket);
481        void HandleQuestQueryOpcode(WorldPacket& recvPacket);
482        void HandleQuestgiverCancel(WorldPacket& recv_data );
483        void HandleQuestLogSwapQuest(WorldPacket& recv_data );
484        void HandleQuestLogRemoveQuest(WorldPacket& recv_data);
485        void HandleQuestConfirmAccept(WorldPacket& recv_data);
486        void HandleQuestComplete(WorldPacket& recv_data);
487        void HandleQuestAutoLaunch(WorldPacket& recvPacket);
488        void HandleQuestPushToParty(WorldPacket& recvPacket);
489        void HandleQuestPushResult(WorldPacket& recvPacket);
490
491        void HandleMessagechatOpcode(WorldPacket& recvPacket);
492        void HandleTextEmoteOpcode(WorldPacket& recvPacket);
493        void HandleChatIgnoredOpcode(WorldPacket& recvPacket);
494
495        void HandleCorpseReclaimOpcode( WorldPacket& recvPacket );
496        void HandleCorpseQueryOpcode( WorldPacket& recvPacket );
497        void HandleResurrectResponseOpcode(WorldPacket& recvPacket);
498        void HandleSummonResponseOpcode(WorldPacket& recv_data);
499
500        void HandleChannelJoin(WorldPacket& recvPacket);
501        void HandleChannelLeave(WorldPacket& recvPacket);
502        void HandleChannelList(WorldPacket& recvPacket);
503        void HandleChannelPassword(WorldPacket& recvPacket);
504        void HandleChannelSetOwner(WorldPacket& recvPacket);
505        void HandleChannelOwner(WorldPacket& recvPacket);
506        void HandleChannelModerator(WorldPacket& recvPacket);
507        void HandleChannelUnmoderator(WorldPacket& recvPacket);
508        void HandleChannelMute(WorldPacket& recvPacket);
509        void HandleChannelUnmute(WorldPacket& recvPacket);
510        void HandleChannelInvite(WorldPacket& recvPacket);
511        void HandleChannelKick(WorldPacket& recvPacket);
512        void HandleChannelBan(WorldPacket& recvPacket);
513        void HandleChannelUnban(WorldPacket& recvPacket);
514        void HandleChannelAnnounce(WorldPacket& recvPacket);
515        void HandleChannelModerate(WorldPacket& recvPacket);
516        void HandleChannelRosterQuery(WorldPacket& recvPacket);
517        void HandleChannelInfoQuery(WorldPacket& recvPacket);
518        void HandleChannelJoinNotify(WorldPacket& recvPacket);
519
520        void HandleCompleteCinema(WorldPacket& recvPacket);
521        void HandleNextCinematicCamera(WorldPacket& recvPacket);
522
523        void HandlePageQuerySkippedOpcode(WorldPacket& recvPacket);
524        void HandlePageQueryOpcode(WorldPacket& recvPacket);
525
526        void HandleTutorialFlag ( WorldPacket & recv_data );
527        void HandleTutorialClear( WorldPacket & recv_data );
528        void HandleTutorialReset( WorldPacket & recv_data );
529
530        //Pet
531        void HandlePetAction( WorldPacket & recv_data );
532        void HandlePetNameQuery( WorldPacket & recv_data );
533        void HandlePetSetAction( WorldPacket & recv_data );
534        void HandlePetAbandon( WorldPacket & recv_data );
535        void HandlePetRename( WorldPacket & recv_data );
536        void HandlePetCancelAuraOpcode( WorldPacket& recvPacket );
537        void HandlePetUnlearnOpcode( WorldPacket& recvPacket );
538        void HandlePetSpellAutocastOpcode( WorldPacket& recvPacket );
539        void HandlePetCastSpellOpcode( WorldPacket& recvPacket );
540
541        void HandleSetActionBar(WorldPacket& recv_data);
542
543        void HandleChangePlayerNameOpcode(WorldPacket& recv_data);
544        void HandleDeclinedPlayerNameOpcode(WorldPacket& recv_data);
545
546        void HandleTotemDestroy(WorldPacket& recv_data);
547
548        //BattleGround
549        void HandleBattleGroundHelloOpcode(WorldPacket &recv_data);
550        void HandleBattleGroundJoinOpcode(WorldPacket &recv_data);
551        void HandleBattleGroundPlayerPositionsOpcode(WorldPacket& recv_data);
552        void HandleBattleGroundPVPlogdataOpcode( WorldPacket &recv_data );
553        void HandleBattleGroundPlayerPortOpcode( WorldPacket &recv_data );
554        void HandleBattleGroundListOpcode( WorldPacket &recv_data );
555        void HandleBattleGroundLeaveOpcode( WorldPacket &recv_data );
556        void HandleBattleGroundArenaJoin( WorldPacket &recv_data );
557        void HandleBattleGroundReportAFK( WorldPacket &recv_data );
558
559        void HandleWardenDataOpcode(WorldPacket& recv_data);
560        void HandleWorldTeleportOpcode(WorldPacket& recv_data);
561        void HandleMinimapPingOpcode(WorldPacket& recv_data);
562        void HandleRandomRollOpcode(WorldPacket& recv_data);
563        void HandleFarSightOpcode(WorldPacket& recv_data);
564        void HandleSetLfgOpcode(WorldPacket& recv_data);
565        void HandleDungeonDifficultyOpcode(WorldPacket& recv_data);
566        void HandleMoveFlyModeChangeAckOpcode(WorldPacket& recv_data);
567        void HandleLfgAutoJoinOpcode(WorldPacket& recv_data);
568        void HandleLfgCancelAutoJoinOpcode(WorldPacket& recv_data);
569        void HandleLfmAutoAddMembersOpcode(WorldPacket& recv_data);
570        void HandleLfmCancelAutoAddmembersOpcode(WorldPacket& recv_data);
571        void HandleLfgClearOpcode(WorldPacket& recv_data);
572        void HandleLfmSetNoneOpcode(WorldPacket& recv_data);
573        void HandleLfmSetOpcode(WorldPacket& recv_data);
574        void HandleLfgSetCommentOpcode(WorldPacket& recv_data);
575        void HandleNewUnknownOpcode(WorldPacket& recv_data);
576        void HandleChooseTitleOpcode(WorldPacket& recv_data);
577        void HandleRealmStateRequestOpcode(WorldPacket& recv_data);
578        void HandleAllowMoveAckOpcode(WorldPacket& recv_data);
579        void HandleWhoisOpcode(WorldPacket& recv_data);
580        void HandleResetInstancesOpcode(WorldPacket& recv_data);
581
582        // Arena Team
583        void HandleInspectArenaStatsOpcode(WorldPacket& recv_data);
584        void HandleArenaTeamQueryOpcode(WorldPacket& recv_data);
585        void HandleArenaTeamRosterOpcode(WorldPacket& recv_data);
586        void HandleArenaTeamAddMemberOpcode(WorldPacket& recv_data);
587        void HandleArenaTeamInviteAcceptOpcode(WorldPacket& recv_data);
588        void HandleArenaTeamInviteDeclineOpcode(WorldPacket& recv_data);
589        void HandleArenaTeamLeaveOpcode(WorldPacket& recv_data);
590        void HandleArenaTeamRemoveFromTeamOpcode(WorldPacket& recv_data);
591        void HandleArenaTeamDisbandOpcode(WorldPacket& recv_data);
592        void HandleArenaTeamPromoteToCaptainOpcode(WorldPacket& recv_data);
593
594        void HandleAreaSpiritHealerQueryOpcode(WorldPacket& recv_data);
595        void HandleAreaSpiritHealerQueueOpcode(WorldPacket& recv_data);
596        void HandleDismountOpcode(WorldPacket& recv_data);
597        void HandleSelfResOpcode(WorldPacket& recv_data);
598        void HandleReportSpamOpcode(WorldPacket& recv_data);
599        void HandleRequestPetInfoOpcode(WorldPacket& recv_data);
600
601        // Socket gem
602        void HandleSocketOpcode(WorldPacket& recv_data);
603
604        void HandleCancelTempItemEnchantmentOpcode(WorldPacket& recv_data);
605
606        void HandleChannelEnableVoiceOpcode(WorldPacket & recv_data);
607        void HandleVoiceSettingsOpcode(WorldPacket& recv_data);
608        void HandleChannelVoiceChatQuery(WorldPacket& recv_data);
609        void HandleSetTaxiBenchmarkOpcode(WorldPacket& recv_data);
610
611        // Guild Bank
612        void HandleGuildBankGetRights(WorldPacket& recv_data);
613        void HandleGuildBankGetMoneyAmount(WorldPacket& recv_data);
614        void HandleGuildBankQuery(WorldPacket& recv_data);
615        void HandleGuildBankTabColon(WorldPacket& recv_data);
616        void HandleGuildBankLog(WorldPacket& recv_data);
617        void HandleGuildBankDeposit(WorldPacket& recv_data);
618        void HandleGuildBankWithdraw(WorldPacket& recv_data);
619        void HandleGuildBankDepositItem(WorldPacket& recv_data);
620        void HandleGuildBankModifyTab(WorldPacket& recv_data);
621        void HandleGuildBankBuyTab(WorldPacket& recv_data);
622        void HandleGuildBankTabText(WorldPacket& recv_data);
623        void HandleGuildBankSetTabText(WorldPacket& recv_data);
624    private:
625        // private trade methods
626        void moveItems(Item* myItems[], Item* hisItems[]);
627
628        // logging helper
629        void logUnexpectedOpcode(WorldPacket *packet, const char * reason);
630        Player *_player;
631        WorldSocket *m_Socket;
632        std::string m_Address;
633
634        uint32 _security;
635        uint32 _accountId;
636        uint8 m_expansion;
637
638        time_t _logoutTime;
639        bool m_playerLoading;                               // code processed in LoginPlayer
640        bool m_playerLogout;                                // code processed in LogoutPlayer
641        bool m_playerRecentlyLogout;
642        LocaleConstant m_sessionDbcLocale;
643        int m_sessionDbLocaleIndex;
644        uint32 m_latency;
645
646        ZThread::LockedQueue<WorldPacket*,ZThread::FastMutex> _recvQueue;
647};
648#endif
649/// @}
Note: See TracBrowser for help on using the browser.