diff options
Diffstat (limited to 'src/interface/AvatarButton.cpp')
| -rw-r--r-- | src/interface/AvatarButton.cpp | 21 |
1 files changed, 14 insertions, 7 deletions
diff --git a/src/interface/AvatarButton.cpp b/src/interface/AvatarButton.cpp index 0343aed..0a55ffa 100644 --- a/src/interface/AvatarButton.cpp +++ b/src/interface/AvatarButton.cpp @@ -5,6 +5,7 @@ #include "Format.h" #include "Engine.h" #include "client/Client.h" +#include "client/RequestBroker.h" #include "graphics/Graphics.h" #include "ContextMenu.h" #include "Keys.h" @@ -23,6 +24,7 @@ AvatarButton::AvatarButton(Point position, Point size, std::string username): AvatarButton::~AvatarButton() { + RequestBroker::Ref().DetachRequestListener(this); if(avatar) delete avatar; if(actionCallback) @@ -34,13 +36,18 @@ void AvatarButton::Tick(float dt) if(!avatar && !tried && name.size() > 0) { tried = true; - avatar = Client::Ref().GetAvatar(name); - if(avatar) { - if(avatar->Width != Size.X && avatar->Height != Size.Y) - { - avatar->Resize(Size.X, Size.Y, true); - } - } + RequestBroker::Ref().RetrieveAvatar(name, Size.X, Size.Y, this); + } +} + +void AvatarButton::OnResponseReady(void * imagePtr) +{ + VideoBuffer * image = (VideoBuffer*)imagePtr; + if(image) + { + if(avatar) + delete avatar; + avatar = image; } } |
