2021-12-05 17:54:36 +00:00
|
|
|
#pragma once
|
|
|
|
#include "dCommonVars.h"
|
|
|
|
#include "dNetCommon.h"
|
|
|
|
#include "BitStream.h"
|
|
|
|
|
|
|
|
struct PlayerData;
|
2022-07-13 03:36:06 +00:00
|
|
|
enum class eAddFriendResponseType : uint8_t;
|
2021-12-05 17:54:36 +00:00
|
|
|
|
2023-08-07 21:12:20 +00:00
|
|
|
enum class eChatChannel : uint8_t {
|
|
|
|
SystemNotify,
|
|
|
|
SystemWarning,
|
|
|
|
SystemError,
|
|
|
|
Broadcast,
|
|
|
|
Local,
|
|
|
|
LocalNoanim,
|
|
|
|
Emote,
|
|
|
|
Private,
|
|
|
|
Team,
|
|
|
|
TeamLocal,
|
|
|
|
Guild,
|
|
|
|
GuildNotify,
|
|
|
|
Property,
|
|
|
|
Admin,
|
|
|
|
CombatDamage,
|
|
|
|
CombatHealing,
|
|
|
|
CombatLoot,
|
|
|
|
CombatExp,
|
|
|
|
CombatDeath,
|
|
|
|
General,
|
|
|
|
Trade,
|
|
|
|
Lfg,
|
|
|
|
User
|
|
|
|
};
|
|
|
|
|
|
|
|
enum class eChatMessageResponseCode : uint8_t {
|
|
|
|
Sent,
|
|
|
|
NotOnline,
|
|
|
|
GeneralError,
|
|
|
|
ReceivedNewWhisper,
|
|
|
|
NotFriends,
|
|
|
|
SenderFreeTrial,
|
|
|
|
ReceiverFreeTrial,
|
|
|
|
};
|
|
|
|
|
2021-12-05 17:54:36 +00:00
|
|
|
namespace ChatPacketHandler {
|
|
|
|
void HandleFriendlistRequest(Packet* packet);
|
|
|
|
void HandleFriendRequest(Packet* packet);
|
|
|
|
void HandleFriendResponse(Packet* packet);
|
|
|
|
void HandleRemoveFriend(Packet* packet);
|
|
|
|
|
|
|
|
void HandleChatMessage(Packet* packet);
|
|
|
|
void HandlePrivateChatMessage(Packet* packet);
|
|
|
|
|
|
|
|
void HandleTeamInvite(Packet* packet);
|
|
|
|
void HandleTeamInviteResponse(Packet* packet);
|
|
|
|
void HandleTeamLeave(Packet* packet);
|
|
|
|
void HandleTeamKick(Packet* packet);
|
|
|
|
void HandleTeamPromote(Packet* packet);
|
|
|
|
void HandleTeamLootOption(Packet* packet);
|
|
|
|
void HandleTeamStatusRequest(Packet* packet);
|
|
|
|
|
|
|
|
void SendTeamInvite(PlayerData* receiver, PlayerData* sender);
|
|
|
|
void SendTeamInviteConfirm(PlayerData* receiver, bool bLeaderIsFreeTrial, LWOOBJID i64LeaderID, LWOZONEID i64LeaderZoneID, uint8_t ucLootFlag, uint8_t ucNumOfOtherPlayers, uint8_t ucResponseCode, std::u16string wsLeaderName);
|
|
|
|
void SendTeamStatus(PlayerData* receiver, LWOOBJID i64LeaderID, LWOZONEID i64LeaderZoneID, uint8_t ucLootFlag, uint8_t ucNumOfOtherPlayers, std::u16string wsLeaderName);
|
|
|
|
void SendTeamSetLeader(PlayerData* receiver, LWOOBJID i64PlayerID);
|
|
|
|
void SendTeamAddPlayer(PlayerData* receiver, bool bIsFreeTrial, bool bLocal, bool bNoLootOnDeath, LWOOBJID i64PlayerID, std::u16string wsPlayerName, LWOZONEID zoneID);
|
|
|
|
void SendTeamRemovePlayer(PlayerData* receiver, bool bDisband, bool bIsKicked, bool bIsLeaving, bool bLocal, LWOOBJID i64LeaderID, LWOOBJID i64PlayerID, std::u16string wsPlayerName);
|
|
|
|
void SendTeamSetOffWorldFlag(PlayerData* receiver, LWOOBJID i64PlayerID, LWOZONEID zoneID);
|
|
|
|
|
|
|
|
//FriendData is the player we're SENDING this stuff to. Player is the friend that changed state.
|
2022-07-13 03:36:06 +00:00
|
|
|
void SendFriendUpdate(PlayerData* friendData, PlayerData* playerData, uint8_t notifyType, uint8_t isBestFriend);
|
2021-12-05 17:54:36 +00:00
|
|
|
|
2022-07-13 03:36:06 +00:00
|
|
|
void SendFriendRequest(PlayerData* receiver, PlayerData* sender);
|
|
|
|
void SendFriendResponse(PlayerData* receiver, PlayerData* sender, eAddFriendResponseType responseCode, uint8_t isBestFriendsAlready = 0U, uint8_t isBestFriendRequest = 0U);
|
2021-12-05 17:54:36 +00:00
|
|
|
void SendRemoveFriend(PlayerData* receiver, std::string& personToRemove, bool isSuccessful);
|
|
|
|
};
|