DDNet 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
>
7
#include <
engine/serverbrowser.h
>
8
#include <
engine/shared/jobs.h
>
9
10
#include <
game/client/component.h
>
11
#include <
game/client/ui_rect.h
>
12
13
#include <optional>
14
15
class
IHttpRequest
;
16
17
class
CCommunityIcon
18
{
19
friend
class
CCommunityIcons
;
20
21
private
:
22
char
m_aCommunityId
[
CServerInfo::MAX_COMMUNITY_ID_LENGTH
];
23
SHA256_DIGEST
m_Sha256
;
24
IGraphics::CTextureHandle
m_OrgTexture
;
25
IGraphics::CTextureHandle
m_GreyTexture
;
26
};
27
28
class
CCommunityIcons
:
public
CComponentInterfaces
29
{
30
public
:
31
const
CCommunityIcon
*
Find
(
const
char
*pCommunityId);
32
void
Render
(
const
CCommunityIcon
*pIcon,
CUIRect
Rect,
bool
Active);
33
void
Load
();
34
void
Update
();
35
void
Shutdown
();
36
37
private
:
38
class
CAbstractCommunityIconJob
39
{
40
protected
:
41
CCommunityIcons
*
m_pCommunityIcons
;
42
char
m_aCommunityId
[
CServerInfo::MAX_COMMUNITY_ID_LENGTH
];
43
char
m_aPath
[
IO_MAX_PATH_LENGTH
];
44
int
m_StorageType
;
45
bool
m_Success
=
false
;
46
SHA256_DIGEST
m_Sha256
;
47
48
CAbstractCommunityIconJob
(
CCommunityIcons
*pCommunityIcons,
const
char
*pCommunityId,
int
StorageType);
49
50
public
:
51
const
char
*
CommunityId
()
const
{
return
m_aCommunityId
; }
52
bool
Success
()
const
{
return
m_Success
; }
53
const
SHA256_DIGEST
&
Sha256
()
const
{
return
m_Sha256
; }
54
virtual
~CAbstractCommunityIconJob
() =
default
;
55
};
56
57
class
CCommunityIconLoadJob
:
public
IJob
,
public
CAbstractCommunityIconJob
58
{
59
CImageInfo
m_ImageInfo
;
60
CImageInfo
m_ImageInfoGrayscale
;
61
62
protected
:
63
void
Run
()
override
;
64
65
public
:
66
CCommunityIconLoadJob
(
CCommunityIcons
*pCommunityIcons,
const
char
*pCommunityId,
int
StorageType);
67
~CCommunityIconLoadJob
()
override
;
68
69
CImageInfo
&
ImageInfo
() {
return
m_ImageInfo
; }
70
CImageInfo
&
ImageInfoGrayscale
() {
return
m_ImageInfoGrayscale
; }
71
};
72
73
class
CCommunityIconDownloadJob
:
public
CAbstractCommunityIconJob
74
{
75
std::shared_ptr<IHttpRequest>
m_pHttpRequest
;
76
77
public
:
78
CCommunityIconDownloadJob
(
CCommunityIcons
*pCommunityIcons,
const
char
*pCommunityId,
const
char
*pUrl,
const
SHA256_DIGEST
&
Sha256
);
79
std::shared_ptr<IHttpRequest>
HttpRequest
() {
return
m_pHttpRequest
; }
80
};
81
82
std::vector<CCommunityIcon>
m_vCommunityIcons
;
83
std::deque<std::shared_ptr<CCommunityIconLoadJob>>
m_CommunityIconLoadJobs
;
84
std::deque<std::shared_ptr<CCommunityIconDownloadJob>>
m_CommunityIconDownloadJobs
;
85
std::optional<SHA256_DIGEST>
m_CommunityIconsInfoSha256
;
86
static
int
FileScan
(
const
char
*pName,
int
IsDir,
int
DirType,
void
*pUser);
87
bool
LoadFile
(
const
char
*pPath,
int
DirType,
CImageInfo
&Info,
CImageInfo
&InfoGrayscale,
SHA256_DIGEST
&Sha256);
88
void
LoadFinish
(
const
char
*pCommunityId,
CImageInfo
&Info,
CImageInfo
&InfoGrayscale,
const
SHA256_DIGEST
&Sha256);
89
};
90
91
#endif
CCommunityIcon
Definition
community_icons.h:18
CCommunityIcon::m_Sha256
SHA256_DIGEST m_Sha256
Definition
community_icons.h:23
CCommunityIcon::m_aCommunityId
char m_aCommunityId[CServerInfo::MAX_COMMUNITY_ID_LENGTH]
Definition
community_icons.h:22
CCommunityIcon::m_OrgTexture
IGraphics::CTextureHandle m_OrgTexture
Definition
community_icons.h:24
CCommunityIcon::m_GreyTexture
IGraphics::CTextureHandle m_GreyTexture
Definition
community_icons.h:25
CCommunityIcon::CCommunityIcons
friend class CCommunityIcons
Definition
community_icons.h:19
CCommunityIcons::CAbstractCommunityIconJob::m_aCommunityId
char m_aCommunityId[CServerInfo::MAX_COMMUNITY_ID_LENGTH]
Definition
community_icons.h:42
CCommunityIcons::CAbstractCommunityIconJob::m_StorageType
int m_StorageType
Definition
community_icons.h:44
CCommunityIcons::CAbstractCommunityIconJob::Success
bool Success() const
Definition
community_icons.h:52
CCommunityIcons::CAbstractCommunityIconJob::CommunityId
const char * CommunityId() const
Definition
community_icons.h:51
CCommunityIcons::CAbstractCommunityIconJob::m_Success
bool m_Success
Definition
community_icons.h:45
CCommunityIcons::CAbstractCommunityIconJob::m_aPath
char m_aPath[IO_MAX_PATH_LENGTH]
Definition
community_icons.h:43
CCommunityIcons::CAbstractCommunityIconJob::m_pCommunityIcons
CCommunityIcons * m_pCommunityIcons
Definition
community_icons.h:41
CCommunityIcons::CAbstractCommunityIconJob::m_Sha256
SHA256_DIGEST m_Sha256
Definition
community_icons.h:46
CCommunityIcons::CAbstractCommunityIconJob::~CAbstractCommunityIconJob
virtual ~CAbstractCommunityIconJob()=default
CCommunityIcons::CAbstractCommunityIconJob::CAbstractCommunityIconJob
CAbstractCommunityIconJob(CCommunityIcons *pCommunityIcons, const char *pCommunityId, int StorageType)
Definition
community_icons.cpp:10
CCommunityIcons::CAbstractCommunityIconJob::Sha256
const SHA256_DIGEST & Sha256() const
Definition
community_icons.h:53
CCommunityIcons::CCommunityIconDownloadJob::CCommunityIconDownloadJob
CCommunityIconDownloadJob(CCommunityIcons *pCommunityIcons, const char *pCommunityId, const char *pUrl, const SHA256_DIGEST &Sha256)
Definition
community_icons.cpp:18
CCommunityIcons::CCommunityIconDownloadJob::HttpRequest
std::shared_ptr< IHttpRequest > HttpRequest()
Definition
community_icons.h:79
CCommunityIcons::CCommunityIconDownloadJob::m_pHttpRequest
std::shared_ptr< IHttpRequest > m_pHttpRequest
Definition
community_icons.h:75
CCommunityIcons::CCommunityIconLoadJob::ImageInfoGrayscale
CImageInfo & ImageInfoGrayscale()
Definition
community_icons.h:70
CCommunityIcons::CCommunityIconLoadJob::CCommunityIconLoadJob
CCommunityIconLoadJob(CCommunityIcons *pCommunityIcons, const char *pCommunityId, int StorageType)
Definition
community_icons.cpp:33
CCommunityIcons::CCommunityIconLoadJob::Run
void Run() override
Definition
community_icons.cpp:28
CCommunityIcons::CCommunityIconLoadJob::ImageInfo
CImageInfo & ImageInfo()
Definition
community_icons.h:69
CCommunityIcons::CCommunityIconLoadJob::~CCommunityIconLoadJob
~CCommunityIconLoadJob() override
Definition
community_icons.cpp:39
CCommunityIcons::CCommunityIconLoadJob::m_ImageInfoGrayscale
CImageInfo m_ImageInfoGrayscale
Definition
community_icons.h:60
CCommunityIcons::CCommunityIconLoadJob::m_ImageInfo
CImageInfo m_ImageInfo
Definition
community_icons.h:59
CCommunityIcons
Definition
community_icons.h:29
CCommunityIcons::Update
void Update()
Definition
community_icons.cpp:144
CCommunityIcons::LoadFinish
void LoadFinish(const char *pCommunityId, CImageInfo &Info, CImageInfo &InfoGrayscale, const SHA256_DIGEST &Sha256)
Definition
community_icons.cpp:93
CCommunityIcons::Find
const CCommunityIcon * Find(const char *pCommunityId)
Definition
community_icons.cpp:61
CCommunityIcons::m_CommunityIconsInfoSha256
std::optional< SHA256_DIGEST > m_CommunityIconsInfoSha256
Definition
community_icons.h:85
CCommunityIcons::LoadFile
bool LoadFile(const char *pPath, int DirType, CImageInfo &Info, CImageInfo &InfoGrayscale, SHA256_DIGEST &Sha256)
Definition
community_icons.cpp:69
CCommunityIcons::Load
void Load()
Definition
community_icons.cpp:132
CCommunityIcons::FileScan
static int FileScan(const char *pName, int IsDir, int DirType, void *pUser)
Definition
community_icons.cpp:45
CCommunityIcons::Shutdown
void Shutdown()
Definition
community_icons.cpp:138
CCommunityIcons::m_vCommunityIcons
std::vector< CCommunityIcon > m_vCommunityIcons
Definition
community_icons.h:82
CCommunityIcons::m_CommunityIconDownloadJobs
std::deque< std::shared_ptr< CCommunityIconDownloadJob > > m_CommunityIconDownloadJobs
Definition
community_icons.h:84
CCommunityIcons::m_CommunityIconLoadJobs
std::deque< std::shared_ptr< CCommunityIconLoadJob > > m_CommunityIconLoadJobs
Definition
community_icons.h:83
CCommunityIcons::Render
void Render(const CCommunityIcon *pIcon, CUIRect Rect, bool Active)
Definition
community_icons.cpp:118
CComponentInterfaces
Definition
component.h:15
CImageInfo
Definition
image.h:12
CServerInfo::MAX_COMMUNITY_ID_LENGTH
@ MAX_COMMUNITY_ID_LENGTH
Definition
serverbrowser.h:63
CUIRect
Definition
ui_rect.h:12
IGraphics::CTextureHandle
Definition
graphics.h:258
IHttpRequest
Definition
http.h:53
IJob::IJob
IJob()
Definition
jobs.cpp:11
component.h
graphics.h
IO_MAX_PATH_LENGTH
constexpr auto IO_MAX_PATH_LENGTH
Definition
types.h:26
hash.h
jobs.h
serverbrowser.h
SHA256_DIGEST
Definition
hash.h:12
ui_rect.h
src
game
client
components
community_icons.h
Generated by
1.16.1