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

Revision 2, 30.3 kB (checked in by yumileroy, 17 years ago)

[svn] * Proper SVN structure

Original author: Neo2003
Date: 2008-10-02 16:23:55-05:00

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