Finally: User supplied avatars are transfered! They are stored on the server and clients request them if needed. Make sure the server has write access to the cache dir to make it work.
This commit is contained in:
@@ -169,6 +169,13 @@ ServerLobbyThread::HandleGameRetrievePlayerInfo(SessionWrapper session, const Ne
|
||||
HandleNetPacketRetrievePlayerInfo(session, tmpPacket);
|
||||
}
|
||||
|
||||
void
|
||||
ServerLobbyThread::HandleGameRetrieveAvatar(SessionWrapper session, const NetPacketRetrieveAvatar &tmpPacket)
|
||||
{
|
||||
// Someone within a game requested an avatar.
|
||||
HandleNetPacketRetrieveAvatar(session, tmpPacket);
|
||||
}
|
||||
|
||||
void
|
||||
ServerLobbyThread::RemoveGame(unsigned id)
|
||||
{
|
||||
@@ -295,6 +302,8 @@ ServerLobbyThread::ProcessLoop()
|
||||
{
|
||||
if (packet->ToNetPacketRetrievePlayerInfo())
|
||||
HandleNetPacketRetrievePlayerInfo(session, *packet->ToNetPacketRetrievePlayerInfo());
|
||||
else if (packet->ToNetPacketRetrieveAvatar())
|
||||
HandleNetPacketRetrieveAvatar(session, *packet->ToNetPacketRetrieveAvatar());
|
||||
else if (packet->ToNetPacketCreateGame())
|
||||
HandleNetPacketCreateGame(session, *packet->ToNetPacketCreateGame());
|
||||
else if (packet->ToNetPacketJoinGame())
|
||||
@@ -356,7 +365,7 @@ ServerLobbyThread::HandleNetPacketInit(SessionWrapper session, const NetPacketIn
|
||||
m_sessionManager.SetSessionPlayerData(session.sessionData->GetSocket(), tmpPlayerData);
|
||||
session.playerData = tmpPlayerData;
|
||||
|
||||
if (!GetAvatarManager().HasAvatar(initData.avatar))
|
||||
if (initData.showAvatar && !GetAvatarManager().HasAvatar(initData.avatar))
|
||||
RequestPlayerAvatar(session);
|
||||
else
|
||||
EstablishSession(session);
|
||||
@@ -416,6 +425,7 @@ ServerLobbyThread::HandleNetPacketAvatarEnd(SessionWrapper session, const NetPac
|
||||
if (avatarSize == tmpAvatar->reportedSize)
|
||||
{
|
||||
GetAvatarManager().StoreAvatarInCache(avatarMD5, tmpAvatar->fileType, &tmpAvatar->fileData[0], avatarSize);
|
||||
// TODO log error
|
||||
// Free memory.
|
||||
session.playerData->SetNetAvatarData(boost::shared_ptr<AvatarData>());
|
||||
// Init finished - start session.
|
||||
@@ -454,6 +464,21 @@ ServerLobbyThread::HandleNetPacketRetrievePlayerInfo(SessionWrapper session, con
|
||||
// TODO: handle error
|
||||
}
|
||||
|
||||
void
|
||||
ServerLobbyThread::HandleNetPacketRetrieveAvatar(SessionWrapper session, const NetPacketRetrieveAvatar &tmpPacket)
|
||||
{
|
||||
NetPacketRetrieveAvatar::Data request;
|
||||
tmpPacket.GetData(request);
|
||||
|
||||
string tmpFile;
|
||||
if (GetAvatarManager().GetAvatarFileName(request.avatar, tmpFile))
|
||||
{
|
||||
NetPacketList tmpPackets;
|
||||
if (GetAvatarManager().AvatarFileToNetPackets(tmpFile, request.requestId, tmpPackets))
|
||||
GetSender().SendLowPrio(session.sessionData->GetSocket(), tmpPackets);
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
ServerLobbyThread::HandleNetPacketCreateGame(SessionWrapper session, const NetPacketCreateGame &tmpPacket)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user