Redesign of avatar stuff. First part.

This commit is contained in:
lotodore
2007-11-01 00:12:47 +00:00
parent 3a0fc4a71e
commit a3c9390bfe
3 changed files with 27 additions and 22 deletions
+15 -15
View File
@@ -438,9 +438,6 @@ ClientThread::SetPlayerInfo(unsigned id, const PlayerInfo &info, bool retrieveAv
retrieveAvatarData.avatar = info.avatar;
static_cast<NetPacketRetrieveAvatar *>(retrieveAvatar.get())->SetData(retrieveAvatarData);
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.
@@ -502,20 +499,23 @@ ClientThread::CompleteTempAvatarData(unsigned playerId)
boost::shared_ptr<AvatarData> tmpAvatar = pos->second;
unsigned avatarSize = (unsigned)tmpAvatar->fileData.size();
if (avatarSize != tmpAvatar->reportedSize)
throw ClientException(__FILE__, __LINE__, ERR_NET_WRONG_AVATAR_SIZE, 0);
PlayerInfo tmpPlayerInfo;
if (!GetCachedPlayerInfo(playerId, tmpPlayerInfo))
throw ClientException(__FILE__, __LINE__, ERR_NET_UNKNOWN_PLAYER_ID, 0);
if (!GetAvatarManager().StoreAvatarInCache(tmpPlayerInfo.avatar, tmpAvatar->fileType, &tmpAvatar->fileData[0], avatarSize))
LOG_ERROR("Failed to store avatar in cache directory.");
LOG_ERROR("Client received invalid avatar file size!");
else
{
PlayerInfo tmpPlayerInfo;
if (!GetCachedPlayerInfo(playerId, tmpPlayerInfo))
LOG_ERROR("Client received invalid player id!");
else
{
if (!GetAvatarManager().StoreAvatarInCache(tmpPlayerInfo.avatar, tmpAvatar->fileType, &tmpAvatar->fileData[0], avatarSize))
LOG_ERROR("Failed to store avatar in cache directory.");
// Update player info, but never re-request avatar.
SetPlayerInfo(playerId, tmpPlayerInfo, false);
}
}
// Free memory.
m_tempAvatarMap.erase(pos);
// Update player info, but never re-request avatar.
SetPlayerInfo(playerId, tmpPlayerInfo, false);
}
void
@@ -938,6 +938,6 @@ ClientThread::SetSessionEstablished(bool flag)
bool
ClientThread::IsSynchronized() const
{
return (m_playerInfoRequestList.empty() && m_tempAvatarMap.empty());
return m_playerInfoRequestList.empty();
}
+7 -2
View File
@@ -32,8 +32,13 @@ using namespace std;
#define SEND_ERROR_NORMAL_TIMEOUT_MSEC 20000
#define SEND_ERROR_LOW_PRIO_TIMEOUT_MSEC 10000
#define SEND_TIMEOUT_MSEC 10
#define SEND_QUEUE_SIZE 10000
#define SEND_LOW_PRIO_QUEUE_SIZE 10000000
#ifdef POKERTH_DEDICATED_SERVER
#define SEND_QUEUE_SIZE 10000
#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)
: m_tmpOutBufSize(0), m_tmpIsLowPrio(false), m_callback(cb)
+5 -5
View File
@@ -380,16 +380,16 @@ ServerLobbyThread::HandleNetPacketInit(SessionWrapper session, const NetPacketIn
new PlayerData(GetNextUniquePlayerId(), 0, PLAYER_TYPE_HUMAN, PLAYER_RIGHTS_NORMAL));
tmpPlayerData->SetName(initData.playerName);
tmpPlayerData->SetNetSessionData(session.sessionData);
// if (initData.showAvatar)
// tmpPlayerData->SetAvatarMD5(initData.avatar);
if (initData.showAvatar)
tmpPlayerData->SetAvatarMD5(initData.avatar);
// Set player data for session.
m_sessionManager.SetSessionPlayerData(session.sessionData->GetId(), tmpPlayerData);
session.playerData = tmpPlayerData;
// if (initData.showAvatar && !GetAvatarManager().HasAvatar(initData.avatar))
// RequestPlayerAvatar(session);
// else
if (initData.showAvatar && !initData.avatar.IsZero() && !GetAvatarManager().HasAvatar(initData.avatar))
RequestPlayerAvatar(session);
else
EstablishSession(session);
}