Redesign of avatar stuff. First part.
This commit is contained in:
@@ -438,9 +438,6 @@ ClientThread::SetPlayerInfo(unsigned id, const PlayerInfo &info, bool retrieveAv
|
|||||||
retrieveAvatarData.avatar = info.avatar;
|
retrieveAvatarData.avatar = info.avatar;
|
||||||
static_cast<NetPacketRetrieveAvatar *>(retrieveAvatar.get())->SetData(retrieveAvatarData);
|
static_cast<NetPacketRetrieveAvatar *>(retrieveAvatar.get())->SetData(retrieveAvatarData);
|
||||||
GetSender().Send(GetContext().GetSessionData(), retrieveAvatar);
|
GetSender().Send(GetContext().GetSessionData(), retrieveAvatar);
|
||||||
|
|
||||||
// Insert empty value in list to synchronize waiting.
|
|
||||||
m_tempAvatarMap[id] = boost::shared_ptr<AvatarData>();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Remove it from the request list.
|
// Remove it from the request list.
|
||||||
@@ -502,21 +499,24 @@ ClientThread::CompleteTempAvatarData(unsigned playerId)
|
|||||||
boost::shared_ptr<AvatarData> tmpAvatar = pos->second;
|
boost::shared_ptr<AvatarData> tmpAvatar = pos->second;
|
||||||
unsigned avatarSize = (unsigned)tmpAvatar->fileData.size();
|
unsigned avatarSize = (unsigned)tmpAvatar->fileData.size();
|
||||||
if (avatarSize != tmpAvatar->reportedSize)
|
if (avatarSize != tmpAvatar->reportedSize)
|
||||||
throw ClientException(__FILE__, __LINE__, ERR_NET_WRONG_AVATAR_SIZE, 0);
|
LOG_ERROR("Client received invalid avatar file size!");
|
||||||
|
else
|
||||||
|
{
|
||||||
PlayerInfo tmpPlayerInfo;
|
PlayerInfo tmpPlayerInfo;
|
||||||
if (!GetCachedPlayerInfo(playerId, tmpPlayerInfo))
|
if (!GetCachedPlayerInfo(playerId, tmpPlayerInfo))
|
||||||
throw ClientException(__FILE__, __LINE__, ERR_NET_UNKNOWN_PLAYER_ID, 0);
|
LOG_ERROR("Client received invalid player id!");
|
||||||
|
else
|
||||||
|
{
|
||||||
if (!GetAvatarManager().StoreAvatarInCache(tmpPlayerInfo.avatar, tmpAvatar->fileType, &tmpAvatar->fileData[0], avatarSize))
|
if (!GetAvatarManager().StoreAvatarInCache(tmpPlayerInfo.avatar, tmpAvatar->fileType, &tmpAvatar->fileData[0], avatarSize))
|
||||||
LOG_ERROR("Failed to store avatar in cache directory.");
|
LOG_ERROR("Failed to store avatar in cache directory.");
|
||||||
|
|
||||||
// Free memory.
|
|
||||||
m_tempAvatarMap.erase(pos);
|
|
||||||
|
|
||||||
// Update player info, but never re-request avatar.
|
// Update player info, but never re-request avatar.
|
||||||
SetPlayerInfo(playerId, tmpPlayerInfo, false);
|
SetPlayerInfo(playerId, tmpPlayerInfo, false);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
// Free memory.
|
||||||
|
m_tempAvatarMap.erase(pos);
|
||||||
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
ClientThread::SetUnknownAvatar(unsigned playerId)
|
ClientThread::SetUnknownAvatar(unsigned playerId)
|
||||||
@@ -938,6 +938,6 @@ ClientThread::SetSessionEstablished(bool flag)
|
|||||||
bool
|
bool
|
||||||
ClientThread::IsSynchronized() const
|
ClientThread::IsSynchronized() const
|
||||||
{
|
{
|
||||||
return (m_playerInfoRequestList.empty() && m_tempAvatarMap.empty());
|
return m_playerInfoRequestList.empty();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -32,8 +32,13 @@ using namespace std;
|
|||||||
#define SEND_ERROR_NORMAL_TIMEOUT_MSEC 20000
|
#define SEND_ERROR_NORMAL_TIMEOUT_MSEC 20000
|
||||||
#define SEND_ERROR_LOW_PRIO_TIMEOUT_MSEC 10000
|
#define SEND_ERROR_LOW_PRIO_TIMEOUT_MSEC 10000
|
||||||
#define SEND_TIMEOUT_MSEC 10
|
#define SEND_TIMEOUT_MSEC 10
|
||||||
|
#ifdef POKERTH_DEDICATED_SERVER
|
||||||
#define SEND_QUEUE_SIZE 10000
|
#define SEND_QUEUE_SIZE 10000
|
||||||
#define SEND_LOW_PRIO_QUEUE_SIZE 10000000
|
#define SEND_LOW_PRIO_QUEUE_SIZE 10000000
|
||||||
|
#else
|
||||||
|
#define SEND_QUEUE_SIZE 1000
|
||||||
|
#define SEND_LOW_PRIO_QUEUE_SIZE 10000
|
||||||
|
#endif
|
||||||
|
|
||||||
SenderThread::SenderThread(SenderCallback &cb)
|
SenderThread::SenderThread(SenderCallback &cb)
|
||||||
: m_tmpOutBufSize(0), m_tmpIsLowPrio(false), m_callback(cb)
|
: m_tmpOutBufSize(0), m_tmpIsLowPrio(false), m_callback(cb)
|
||||||
|
|||||||
@@ -380,16 +380,16 @@ ServerLobbyThread::HandleNetPacketInit(SessionWrapper session, const NetPacketIn
|
|||||||
new PlayerData(GetNextUniquePlayerId(), 0, PLAYER_TYPE_HUMAN, PLAYER_RIGHTS_NORMAL));
|
new PlayerData(GetNextUniquePlayerId(), 0, PLAYER_TYPE_HUMAN, PLAYER_RIGHTS_NORMAL));
|
||||||
tmpPlayerData->SetName(initData.playerName);
|
tmpPlayerData->SetName(initData.playerName);
|
||||||
tmpPlayerData->SetNetSessionData(session.sessionData);
|
tmpPlayerData->SetNetSessionData(session.sessionData);
|
||||||
// if (initData.showAvatar)
|
if (initData.showAvatar)
|
||||||
// tmpPlayerData->SetAvatarMD5(initData.avatar);
|
tmpPlayerData->SetAvatarMD5(initData.avatar);
|
||||||
|
|
||||||
// Set player data for session.
|
// Set player data for session.
|
||||||
m_sessionManager.SetSessionPlayerData(session.sessionData->GetId(), tmpPlayerData);
|
m_sessionManager.SetSessionPlayerData(session.sessionData->GetId(), tmpPlayerData);
|
||||||
session.playerData = tmpPlayerData;
|
session.playerData = tmpPlayerData;
|
||||||
|
|
||||||
// if (initData.showAvatar && !GetAvatarManager().HasAvatar(initData.avatar))
|
if (initData.showAvatar && !initData.avatar.IsZero() && !GetAvatarManager().HasAvatar(initData.avatar))
|
||||||
// RequestPlayerAvatar(session);
|
RequestPlayerAvatar(session);
|
||||||
// else
|
else
|
||||||
EstablishSession(session);
|
EstablishSession(session);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user