3#ifndef GAME_CLIENT_COMPONENTS_SKINS_H
4#define GAME_CLIENT_COMPONENTS_SKINS_H
19#include <unordered_map>
231 int Sizeof()
const override {
return sizeof(*this); }
264 constexpr static const char *
VANILLA_SKINS[] = {
"bluekitty",
"bluestripe",
"brownbear",
265 "cammo",
"cammostripes",
"coala",
"default",
"limekitty",
266 "pinky",
"redbopp",
"redstripe",
"saddo",
"toptri",
267 "twinbop",
"twintri",
"warpaint",
"x_ninja",
"x_spec"};
296 std::unordered_map<std::string_view, std::unique_ptr<CSkinContainer>>
m_Skins;
314 static int SkinScan(
const char *pName,
int IsDir,
int StorageType,
void *pUser);
Definition component.h:165
char m_aName[MAX_SKIN_LENGTH]
Definition skins.h:53
bool m_NotFound
Definition skins.h:49
CSkins * m_pSkins
Definition skins.h:52
~CAbstractSkinLoadJob() override
Definition skins.cpp:31
CAbstractSkinLoadJob(CSkins *pSkins, const char *pName)
Definition skins.cpp:24
CSkinLoadData m_Data
Definition skins.h:48
EState State() const
Definition skins.h:119
EType m_Type
Definition skins.h:130
bool m_AlwaysLoaded
Definition skins.h:134
std::shared_ptr< CAbstractSkinLoadJob > m_pLoadJob
Definition skins.h:138
CSkins * m_pSkins
Definition skins.h:128
EState m_State
Definition skins.h:136
bool IsVanilla() const
Definition skins.h:116
EType Type() const
Definition skins.h:114
~CSkinContainer()
Definition skins.cpp:54
bool operator<(const CSkinContainer &Other) const
Definition skins.cpp:62
bool m_Special
Definition skins.h:133
char m_aName[MAX_SKIN_LENGTH]
Definition skins.h:129
int StorageType() const
Definition skins.h:115
EState
Definition skins.h:78
@ UNLOADED
Definition skins.h:82
@ NOT_FOUND
Definition skins.h:103
@ LOADED
Definition skins.h:95
@ ERROR
Definition skins.h:99
@ PENDING
Definition skins.h:87
@ LOADING
Definition skins.h:91
bool IsSpecial() const
Definition skins.h:117
bool m_Vanilla
Definition skins.h:132
friend class CSkins
Definition skins.h:62
void SetState(EState State)
Definition skins.cpp:136
void RequestLoad()
Definition skins.cpp:74
EState DetermineInitialState() const
Definition skins.cpp:117
std::optional< std::chrono::nanoseconds > m_FirstLoadRequest
Definition skins.h:143
const char * Name() const
Definition skins.h:113
EType
Definition skins.h:66
@ LOCAL
Definition skins.h:70
@ DOWNLOAD
Definition skins.h:74
std::unique_ptr< CSkin > m_pSkin
Definition skins.h:137
std::optional< std::chrono::nanoseconds > m_LastLoadRequest
Definition skins.h:147
CSkinContainer & operator=(CSkinContainer &&Other)=default
bool IsAlwaysLoaded() const
Definition skins.h:118
std::optional< std::list< std::string_view >::iterator > m_UsageEntryIterator
Definition skins.h:151
CSkinContainer(CSkinContainer &&Other)=default
const std::unique_ptr< CSkin > & Skin() const
Definition skins.h:120
int m_StorageType
Definition skins.h:131
std::shared_ptr< CHttpRequest > m_pGetRequest GUARDED_BY(m_Lock)
void Run() override REQUIRES(!m_Lock)
Definition skins.cpp:991
CSkinDownloadJob(CSkins *pSkins, const char *pName)
Definition skins.cpp:970
bool Abort() override REQUIRES(!m_Lock)
Definition skins.cpp:975
CLock m_Lock
Definition skins.h:292
const std::optional< std::pair< int, int > > & NameMatch() const
Definition skins.h:179
CSkinContainer * m_pSkinContainer
Definition skins.h:191
bool operator<(const CSkinListEntry &Other) const
Definition skins.cpp:163
char m_ListItemId
Definition skins.h:196
const void * ErrorTooltipId() const
Definition skins.h:183
bool m_SelectedMain
Definition skins.h:193
CSkinListEntry()
Definition skins.h:163
bool IsFavorite() const
Definition skins.h:176
bool m_SelectedDummy
Definition skins.h:194
std::optional< std::pair< int, int > > m_NameMatch
Definition skins.h:195
CSkinListEntry(CSkinContainer *pSkinContainer, bool Favorite, bool SelectedMain, bool SelectedDummy, std::optional< std::pair< int, int > > NameMatch)
Definition skins.h:166
bool IsSelectedMain() const
Definition skins.h:177
bool IsSelectedDummy() const
Definition skins.h:178
const CSkinContainer * SkinContainer() const
Definition skins.h:175
const void * ListItemId() const
Definition skins.h:181
char m_FavoriteButtonId
Definition skins.h:197
char m_ErrorTooltipId
Definition skins.h:198
const void * FavoriteButtonId() const
Definition skins.h:182
bool m_Favorite
Definition skins.h:192
void RequestLoad()
Definition skins.cpp:176
void ForceRefresh()
Definition skins.h:208
int m_UnfilteredCount
Definition skins.h:212
friend class CSkins
Definition skins.h:203
std::vector< CSkinListEntry > & Skins()
Definition skins.h:206
std::vector< CSkinListEntry > m_vSkins
Definition skins.h:211
int UnfilteredCount() const
Definition skins.h:207
bool m_NeedsUpdate
Definition skins.h:213
CSkin::CSkinMetrics m_Metrics
Definition skins.h:35
CImageInfo m_Info
Definition skins.h:33
CImageInfo m_InfoGrayscale
Definition skins.h:34
ColorRGBA m_BloodColor
Definition skins.h:36
CSkinLoadJob(CSkins *pSkins, const char *pName, int StorageType)
Definition skins.cpp:37
void Run() override
Definition skins.cpp:952
int m_StorageType
Definition skins.h:278
size_t m_NumUnloaded
Definition skins.h:219
size_t m_NumLoading
Definition skins.h:221
size_t m_NumError
Definition skins.h:223
size_t m_NumNotFound
Definition skins.h:224
size_t m_NumPending
Definition skins.h:220
size_t m_NumLoaded
Definition skins.h:222
std::set< std::string > m_Favorites
Definition skins.h:305
bool IsFavorite(const char *pName) const
Definition skins.cpp:881
void UpdateStartLoading(CSkinLoadingStats &Stats)
Definition skins.cpp:590
static void ConchainRefreshSkinList(IConsole::IResult *pResult, void *pUserData, IConsole::FCommandCallback pfnCallback, void *pCallbackUserData)
Definition skins.cpp:1131
char m_aEventSkinPrefix[MAX_SKIN_LENGTH]
Definition skins.h:308
const CSkin * FindOrNullptr(const char *pName)
Definition skins.cpp:845
static bool IsVanillaSkin(const char *pName)
Definition skins.cpp:206
void OnUpdate() override
Definition skins.cpp:517
std::unordered_map< std::string_view, std::unique_ptr< CSkinContainer > > m_Skins
Definition skins.h:296
std::optional< std::chrono::nanoseconds > m_ContainerUpdateTime
Definition skins.h:297
void UpdateUnloadSkins(CSkinLoadingStats &Stats)
Definition skins.cpp:543
CSkin m_PlaceholderSkin
Definition skins.h:307
void OnShutdown() override
Definition skins.cpp:505
const CSkinContainer * FindContainerOrNullptr(const char *pName)
Definition skins.cpp:809
CSkins()
Definition skins.cpp:181
void RemoveFavorite(const char *pName)
Definition skins.cpp:871
CSkinList & SkinList()
Definition skins.cpp:736
int Sizeof() const override
Definition skins.h:231
void OnInit() override
Definition skins.cpp:495
static void ConfigSaveCallback(IConfigManager *pConfigManager, void *pUserData)
Definition skins.cpp:1115
std::function< void()> TSkinLoadedCallback
Definition skins.h:229
CSkinLoadingStats LoadingStats() const
Definition skins.cpp:706
void RandomizeSkin(int Dummy)
Definition skins.cpp:886
void UpdateFinishLoading(CSkinLoadingStats &Stats, std::chrono::nanoseconds StartTime, std::chrono::nanoseconds MaxTime)
Definition skins.cpp:620
void LoadSkinFinish(CSkinContainer *pSkinContainer, const CSkinLoadData &Data)
Definition skins.cpp:413
static void ConRemFavoriteSkin(IConsole::IResult *pResult, void *pUserData)
Definition skins.cpp:1109
static bool IsSpecialSkin(const char *pName)
Definition skins.cpp:201
static void ConAddFavoriteSkin(IConsole::IResult *pResult, void *pUserData)
Definition skins.cpp:1103
static constexpr const char * VANILLA_SKINS[]
Definition skins.h:264
CSkinList m_SkinList
Definition skins.h:304
bool LoadSkinData(const char *pName, CSkinLoadData &Data) const
Definition skins.cpp:288
const CSkin * Find(const char *pName)
Definition skins.cpp:795
void OnConsoleInit() override
Definition skins.cpp:485
const char * SkinPrefix() const
Definition skins.cpp:939
void OnConfigSave(IConfigManager *pConfigManager)
Definition skins.cpp:1121
std::list< std::string_view > m_SkinsUsageList
Definition skins.h:302
void AddFavorite(const char *pName)
Definition skins.cpp:855
void RefreshEventSkins()
Definition skins.cpp:667
void Refresh(TSkinLoadedCallback &&SkinLoadedCallback)
Definition skins.cpp:680
void LoadSkinDirect(const char *pName)
Definition skins.cpp:453
static int SkinScan(const char *pName, int IsDir, int StorageType, void *pUser)
Definition skins.cpp:220
const CSkinContainer * FindContainerImpl(const char *pName)
Definition skins.cpp:826
void(* FCommandCallback)(IResult *pResult, void *pUserData)
Definition console.h:102
IJob()
Definition jobs.cpp:7
@ MAX_SKIN_LENGTH
Definition protocol.h:101
#define REQUIRES(...)
Definition lock.h:34