3#ifndef GAME_CLIENT_COMPONENTS_SKINS_H
4#define GAME_CLIENT_COMPONENTS_SKINS_H
19#include <unordered_map>
238 int Sizeof()
const override {
return sizeof(*this); }
271 constexpr static const char *
VANILLA_SKINS[] = {
"bluekitty",
"bluestripe",
"brownbear",
272 "cammo",
"cammostripes",
"coala",
"default",
"limekitty",
273 "pinky",
"redbopp",
"redstripe",
"saddo",
"toptri",
274 "twinbop",
"twintri",
"warpaint",
"x_ninja",
"x_spec"};
303 std::unordered_map<std::string_view, std::unique_ptr<CSkinContainer>>
m_Skins;
Definition component.h:165
char m_aName[MAX_SKIN_LENGTH]
Definition skins.h:58
bool m_NotFound
Definition skins.h:54
CSkins * m_pSkins
Definition skins.h:57
CSkinLoadData m_Data
Definition skins.h:53
virtual ~CAbstractSkinLoadJob()
Definition skins.cpp:31
EState State() const
Definition skins.h:125
EType m_Type
Definition skins.h:137
bool m_AlwaysLoaded
Definition skins.h:141
std::shared_ptr< CAbstractSkinLoadJob > m_pLoadJob
Definition skins.h:145
CSkins * m_pSkins
Definition skins.h:134
EState m_State
Definition skins.h:143
bool IsVanilla() const
Definition skins.h:122
EType Type() const
Definition skins.h:120
~CSkinContainer()
Definition skins.cpp:55
bool operator<(const CSkinContainer &Other) const
Definition skins.cpp:63
bool m_Special
Definition skins.h:140
char m_aName[MAX_SKIN_LENGTH]
Definition skins.h:135
int StorageType() const
Definition skins.h:121
EState
Definition skins.h:83
bool IsSpecial() const
Definition skins.h:123
bool m_Vanilla
Definition skins.h:139
const char * NormalizedName() const
Definition skins.h:119
void SetState(EState State)
Definition skins.cpp:137
void RequestLoad()
Definition skins.cpp:75
EState DetermineInitialState() const
Definition skins.cpp:118
std::optional< std::chrono::nanoseconds > m_FirstLoadRequest
Definition skins.h:150
const char * Name() const
Definition skins.h:118
EType
Definition skins.h:71
std::unique_ptr< CSkin > m_pSkin
Definition skins.h:144
std::optional< std::chrono::nanoseconds > m_LastLoadRequest
Definition skins.h:154
CSkinContainer & operator=(CSkinContainer &&Other)=default
bool IsAlwaysLoaded() const
Definition skins.h:124
std::optional< std::list< std::string_view >::iterator > m_UsageEntryIterator
Definition skins.h:158
CSkinContainer(CSkinContainer &&Other)=default
char m_aNormalizedName[NORMALIZED_SKIN_NAME_LENGTH]
Definition skins.h:136
const std::unique_ptr< CSkin > & Skin() const
Definition skins.h:126
int m_StorageType
Definition skins.h:138
std::shared_ptr< CHttpRequest > m_pGetRequest GUARDED_BY(m_Lock)
void Run() override REQUIRES(!m_Lock)
Definition skins.cpp:1012
bool Abort() override REQUIRES(!m_Lock)
Definition skins.cpp:996
CLock m_Lock
Definition skins.h:299
const std::optional< std::pair< int, int > > & NameMatch() const
Definition skins.h:186
CSkinContainer * m_pSkinContainer
Definition skins.h:198
bool operator<(const CSkinListEntry &Other) const
Definition skins.cpp:164
char m_ListItemId
Definition skins.h:203
const void * ErrorTooltipId() const
Definition skins.h:190
bool m_SelectedMain
Definition skins.h:200
CSkinListEntry()
Definition skins.h:170
bool IsFavorite() const
Definition skins.h:183
bool m_SelectedDummy
Definition skins.h:201
std::optional< std::pair< int, int > > m_NameMatch
Definition skins.h:202
CSkinListEntry(CSkinContainer *pSkinContainer, bool Favorite, bool SelectedMain, bool SelectedDummy, std::optional< std::pair< int, int > > NameMatch)
Definition skins.h:173
bool IsSelectedMain() const
Definition skins.h:184
bool IsSelectedDummy() const
Definition skins.h:185
const CSkinContainer * SkinContainer() const
Definition skins.h:182
const void * ListItemId() const
Definition skins.h:188
char m_FavoriteButtonId
Definition skins.h:204
char m_ErrorTooltipId
Definition skins.h:205
const void * FavoriteButtonId() const
Definition skins.h:189
bool m_Favorite
Definition skins.h:199
void RequestLoad()
Definition skins.cpp:177
void ForceRefresh()
Definition skins.h:215
int m_UnfilteredCount
Definition skins.h:219
std::vector< CSkinListEntry > & Skins()
Definition skins.h:213
std::vector< CSkinListEntry > m_vSkins
Definition skins.h:218
int UnfilteredCount() const
Definition skins.h:214
bool m_NeedsUpdate
Definition skins.h:220
CSkin::CSkinMetrics m_Metrics
Definition skins.h:40
CImageInfo m_Info
Definition skins.h:38
CImageInfo m_InfoGrayscale
Definition skins.h:39
ColorRGBA m_BloodColor
Definition skins.h:41
void Run() override
Definition skins.cpp:973
int m_StorageType
Definition skins.h:285
size_t m_NumUnloaded
Definition skins.h:226
size_t m_NumLoading
Definition skins.h:228
size_t m_NumError
Definition skins.h:230
size_t m_NumNotFound
Definition skins.h:231
size_t m_NumPending
Definition skins.h:227
size_t m_NumLoaded
Definition skins.h:229
std::set< std::string > m_Favorites
Definition skins.h:312
bool IsFavorite(const char *pName) const
Definition skins.cpp:900
void UpdateStartLoading(CSkinLoadingStats &Stats)
Definition skins.cpp:613
static void ConchainRefreshSkinList(IConsole::IResult *pResult, void *pUserData, IConsole::FCommandCallback pfnCallback, void *pCallbackUserData)
Definition skins.cpp:1152
char m_aEventSkinPrefix[MAX_SKIN_LENGTH]
Definition skins.h:315
const CSkin * FindOrNullptr(const char *pName)
Definition skins.cpp:860
static bool IsVanillaSkinNormalized(const char *pNormalizedName)
Definition skins.cpp:209
void OnUpdate() override
Definition skins.cpp:540
std::unordered_map< std::string_view, std::unique_ptr< CSkinContainer > > m_Skins
Definition skins.h:303
static bool IsSpecialSkinNormalized(const char *pNormalizedName)
Definition skins.cpp:216
std::optional< std::chrono::nanoseconds > m_ContainerUpdateTime
Definition skins.h:304
void UpdateUnloadSkins(CSkinLoadingStats &Stats)
Definition skins.cpp:566
CSkin m_PlaceholderSkin
Definition skins.h:314
void OnShutdown() override
Definition skins.cpp:528
const CSkinContainer * FindContainerOrNullptr(const char *pName)
Definition skins.cpp:822
CSkins()
Definition skins.cpp:182
void RemoveFavorite(const char *pName)
Definition skins.cpp:888
static constexpr size_t NORMALIZED_SKIN_NAME_LENGTH
Definition skins.h:30
CSkinList & SkinList()
Definition skins.cpp:747
int Sizeof() const override
Definition skins.h:238
void OnInit() override
Definition skins.cpp:510
static void ConfigSaveCallback(IConfigManager *pConfigManager, void *pUserData)
Definition skins.cpp:1136
std::function< void()> TSkinLoadedCallback
Definition skins.h:236
CSkinLoadingStats LoadingStats() const
Definition skins.cpp:717
void RandomizeSkin(int Dummy)
Definition skins.cpp:907
void UpdateFinishLoading(CSkinLoadingStats &Stats, std::chrono::nanoseconds StartTime, std::chrono::nanoseconds MaxTime)
Definition skins.cpp:644
void LoadSkinFinish(CSkinContainer *pSkinContainer, const CSkinLoadData &Data)
Definition skins.cpp:426
static void ConRemFavoriteSkin(IConsole::IResult *pResult, void *pUserData)
Definition skins.cpp:1130
static bool IsSpecialSkin(const char *pName)
Definition skins.cpp:202
static void ConAddFavoriteSkin(IConsole::IResult *pResult, void *pUserData)
Definition skins.cpp:1124
static constexpr const char * VANILLA_SKINS[]
Definition skins.h:271
CSkinList m_SkinList
Definition skins.h:311
bool LoadSkinData(const char *pName, CSkinLoadData &Data) const
Definition skins.cpp:302
const CSkin * Find(const char *pName)
Definition skins.cpp:808
void OnConsoleInit() override
Definition skins.cpp:500
const char * SkinPrefix() const
Definition skins.cpp:960
void OnConfigSave(IConfigManager *pConfigManager)
Definition skins.cpp:1142
std::list< std::string_view > m_SkinsUsageList
Definition skins.h:309
void AddFavorite(const char *pName)
Definition skins.cpp:870
void Refresh(TSkinLoadedCallback &&SkinLoadedCallback)
Definition skins.cpp:691
void LoadSkinDirect(const char *pName)
Definition skins.cpp:466
static int SkinScan(const char *pName, int IsDir, int StorageType, void *pUser)
Definition skins.cpp:228
const CSkinContainer * FindContainerImpl(const char *pName)
Definition skins.cpp:839
void(* FCommandCallback)(IResult *pResult, void *pUserData)
Definition console.h:91
@ MAX_SKIN_LENGTH
Definition protocol.h:100
#define REQUIRES(...)
Definition lock.h:34