DDraceNetwork Documentation
Loading...
Searching...
No Matches
community_icons.h
Go to the documentation of this file.
1#ifndef GAME_CLIENT_COMPONENTS_COMMUNITY_ICONS_H
2#define GAME_CLIENT_COMPONENTS_COMMUNITY_ICONS_H
3
4#include <base/hash.h>
5
6#include <engine/graphics.h>
10
12#include <game/client/ui_rect.h>
13
14#include <optional>
15
26
28{
29public:
30 const CCommunityIcon *Find(const char *pCommunityId);
31 void Render(const CCommunityIcon *pIcon, CUIRect Rect, bool Active);
32 void Load();
33 void Update();
34 void Shutdown();
35
36private:
38 {
39 protected:
44 bool m_Success = false;
46
47 CAbstractCommunityIconJob(CCommunityIcons *pCommunityIcons, const char *pCommunityId, int StorageType);
48
49 public:
50 const char *CommunityId() const { return m_aCommunityId; }
51 bool Success() const { return m_Success; }
52 const SHA256_DIGEST &Sha256() const { return m_Sha256; }
53 virtual ~CAbstractCommunityIconJob() = default;
54 };
55
57 {
60
61 protected:
62 void Run() override;
63
64 public:
65 CCommunityIconLoadJob(CCommunityIcons *pCommunityIcons, const char *pCommunityId, int StorageType);
66 ~CCommunityIconLoadJob() override;
67
70 };
71
73 {
74 public:
75 CCommunityIconDownloadJob(CCommunityIcons *pCommunityIcons, const char *pCommunityId, const char *pUrl, const SHA256_DIGEST &Sha256);
76 };
77
78 std::vector<CCommunityIcon> m_vCommunityIcons;
79 std::deque<std::shared_ptr<CCommunityIconLoadJob>> m_CommunityIconLoadJobs;
80 std::deque<std::shared_ptr<CCommunityIconDownloadJob>> m_CommunityIconDownloadJobs;
81 std::optional<SHA256_DIGEST> m_CommunityIconsInfoSha256;
82 static int FileScan(const char *pName, int IsDir, int DirType, void *pUser);
83 bool LoadFile(const char *pPath, int DirType, CImageInfo &Info, CImageInfo &InfoGrayscale, SHA256_DIGEST &Sha256);
84 void LoadFinish(const char *pCommunityId, CImageInfo &Info, CImageInfo &InfoGrayscale, const SHA256_DIGEST &Sha256);
85};
86
87#endif
Definition community_icons.h:17
SHA256_DIGEST m_Sha256
Definition community_icons.h:22
char m_aCommunityId[CServerInfo::MAX_COMMUNITY_ID_LENGTH]
Definition community_icons.h:21
IGraphics::CTextureHandle m_OrgTexture
Definition community_icons.h:23
IGraphics::CTextureHandle m_GreyTexture
Definition community_icons.h:24
friend class CCommunityIcons
Definition community_icons.h:18
char m_aCommunityId[CServerInfo::MAX_COMMUNITY_ID_LENGTH]
Definition community_icons.h:41
int m_StorageType
Definition community_icons.h:43
bool Success() const
Definition community_icons.h:51
const char * CommunityId() const
Definition community_icons.h:50
bool m_Success
Definition community_icons.h:44
char m_aPath[IO_MAX_PATH_LENGTH]
Definition community_icons.h:42
CCommunityIcons * m_pCommunityIcons
Definition community_icons.h:40
SHA256_DIGEST m_Sha256
Definition community_icons.h:45
CAbstractCommunityIconJob(CCommunityIcons *pCommunityIcons, const char *pCommunityId, int StorageType)
Definition community_icons.cpp:9
const SHA256_DIGEST & Sha256() const
Definition community_icons.h:52
CCommunityIconDownloadJob(CCommunityIcons *pCommunityIcons, const char *pCommunityId, const char *pUrl, const SHA256_DIGEST &Sha256)
Definition community_icons.cpp:17
CImageInfo & ImageInfoGrayscale()
Definition community_icons.h:69
CCommunityIconLoadJob(CCommunityIcons *pCommunityIcons, const char *pCommunityId, int StorageType)
Definition community_icons.cpp:32
void Run() override
Definition community_icons.cpp:27
CImageInfo & ImageInfo()
Definition community_icons.h:68
~CCommunityIconLoadJob() override
Definition community_icons.cpp:38
CImageInfo m_ImageInfoGrayscale
Definition community_icons.h:59
CImageInfo m_ImageInfo
Definition community_icons.h:58
Definition community_icons.h:28
void Update()
Definition community_icons.cpp:143
void LoadFinish(const char *pCommunityId, CImageInfo &Info, CImageInfo &InfoGrayscale, const SHA256_DIGEST &Sha256)
Definition community_icons.cpp:92
const CCommunityIcon * Find(const char *pCommunityId)
Definition community_icons.cpp:60
std::optional< SHA256_DIGEST > m_CommunityIconsInfoSha256
Definition community_icons.h:81
bool LoadFile(const char *pPath, int DirType, CImageInfo &Info, CImageInfo &InfoGrayscale, SHA256_DIGEST &Sha256)
Definition community_icons.cpp:68
void Load()
Definition community_icons.cpp:131
static int FileScan(const char *pName, int IsDir, int DirType, void *pUser)
Definition community_icons.cpp:44
void Shutdown()
Definition community_icons.cpp:137
std::vector< CCommunityIcon > m_vCommunityIcons
Definition community_icons.h:78
std::deque< std::shared_ptr< CCommunityIconDownloadJob > > m_CommunityIconDownloadJobs
Definition community_icons.h:80
std::deque< std::shared_ptr< CCommunityIconLoadJob > > m_CommunityIconLoadJobs
Definition community_icons.h:79
void Render(const CCommunityIcon *pIcon, CUIRect Rect, bool Active)
Definition community_icons.cpp:117
Definition component.h:15
CHttpRequest(const char *pUrl)
Definition http.cpp:62
Definition image.h:12
@ MAX_COMMUNITY_ID_LENGTH
Definition serverbrowser.h:62
Definition ui_rect.h:12
Definition graphics.h:206
IJob()
Definition jobs.cpp:7
Definition hash.h:15
constexpr auto IO_MAX_PATH_LENGTH
Definition types.h:49