DDraceNetwork Docs
skins7.h
Go to the documentation of this file.
1/* (c) Magnus Auvinen. See licence.txt in the root of the distribution for more information. */
2/* If you are missing that file, acquire a complete release at teeworlds.com. */
3#ifndef GAME_CLIENT_COMPONENTS_SKINS7_H
4#define GAME_CLIENT_COMPONENTS_SKINS7_H
5
6#include <base/color.h>
7#include <base/vmath.h>
8
10#include <engine/graphics.h>
11
13#include <game/client/render.h>
16
17#include <chrono>
18#include <vector>
19
20class CSkins7 : public CComponent
21{
22public:
23 enum
24 {
27
29
32 };
33
34 typedef std::function<void()> TSkinLoadedCallback;
35
37 {
38 public:
39 int m_Type;
41 char m_aName[24];
45
46 void ApplyTo(CTeeRenderInfo::CSixup &SixupRenderInfo) const;
47
48 bool operator<(const CSkinPart &Other) const;
49 };
50
51 class CSkin
52 {
53 public:
55 char m_aName[24];
59
60 bool operator<(const CSkin &Other) const;
61 bool operator==(const CSkin &Other) const;
62 };
63
66 static const char *const ms_apColorComponents[NUM_COLOR_COMPONENTS];
67
70 static int *ms_apUCCVariables[NUM_DUMMIES][protocol7::NUM_SKINPARTS]; // use custom color
72
73 int Sizeof() const override { return sizeof(*this); }
74 void OnInit() override;
75
76 void Refresh(TSkinLoadedCallback &&SkinLoadedCallback);
77 std::chrono::nanoseconds LastRefreshTime() const { return m_LastRefreshTime; }
78
79 const std::vector<CSkin> &GetSkins() const;
80 const std::vector<CSkinPart> &GetSkinParts(int Part) const;
81 const CSkinPart *FindSkinPartOrNullptr(int Part, const char *pName, bool AllowSpecialPart) const;
82 const CSkinPart *FindDefaultSkinPart(int Part) const;
83 const CSkinPart *FindSkinPart(int Part, const char *pName, bool AllowSpecialPart) const;
84 void RandomizeSkin(int Dummy) const;
85
86 ColorRGBA GetColor(int Value, bool UseAlpha) const;
87 void ApplyColorTo(CTeeRenderInfo::CSixup &SixupRenderInfo, bool UseCustomColors, int Value, int Part) const;
88 ColorRGBA GetTeamColor(int UseCustomColors, int PartColor, int Team, int Part) const;
89
90 // returns true if everything was valid and nothing changed
91 bool ValidateSkinParts(char *apPartNames[protocol7::NUM_SKINPARTS], int *pUseCustomColors, int *pPartColors, int GameFlags) const;
92
93 bool SaveSkinfile(const char *pName, int Dummy);
94 bool RemoveSkin(const CSkin *pSkin);
95
98
99 static bool IsSpecialSkin(const char *pName);
100
101private:
102 std::chrono::nanoseconds m_LastRefreshTime;
103
106 std::vector<CSkin> m_vSkins;
107
110
111 static int SkinPartScan(const char *pName, int IsDir, int DirType, void *pUser);
112 bool LoadSkinPart(int PartType, const char *pName, int DirType);
113 static int SkinScan(const char *pName, int IsDir, int DirType, void *pUser);
114 bool LoadSkin(const char *pName, int DirType);
115
117 void LoadXmasHat();
118 void LoadBotDecoration();
119
120 void AddSkinFromConfigVariables(const char *pName, int Dummy);
121};
122
123#endif
Definition: component.h:20
Definition: skins7.h:37
void ApplyTo(CTeeRenderInfo::CSixup &SixupRenderInfo) const
Definition: skins7.cpp:37
bool operator<(const CSkinPart &Other) const
Definition: skins7.cpp:47
IGraphics::CTextureHandle m_ColorableTexture
Definition: skins7.h:43
char m_aName[24]
Definition: skins7.h:41
int m_Type
Definition: skins7.h:39
int m_Flags
Definition: skins7.h:40
ColorRGBA m_BloodColor
Definition: skins7.h:44
IGraphics::CTextureHandle m_OriginalTexture
Definition: skins7.h:42
Definition: skins7.h:52
int m_aUseCustomColors[protocol7::NUM_SKINPARTS]
Definition: skins7.h:57
char m_aName[24]
Definition: skins7.h:55
bool operator<(const CSkin &Other) const
Definition: skins7.cpp:52
const CSkinPart * m_apParts[protocol7::NUM_SKINPARTS]
Definition: skins7.h:56
unsigned m_aPartColors[protocol7::NUM_SKINPARTS]
Definition: skins7.h:58
bool operator==(const CSkin &Other) const
Definition: skins7.cpp:57
int m_Flags
Definition: skins7.h:54
Definition: skins7.h:21
void RandomizeSkin(int Dummy) const
Definition: skins7.cpp:541
int Sizeof() const override
Definition: skins7.h:73
static char * ms_apSkinNameVariables[NUM_DUMMIES]
Definition: skins7.h:68
const std::vector< CSkin > & GetSkins() const
Definition: skins7.cpp:494
static int SkinPartScan(const char *pName, int IsDir, int DirType, void *pUser)
Definition: skins7.cpp:75
std::chrono::nanoseconds m_LastRefreshTime
Definition: skins7.h:102
const CSkinPart * FindDefaultSkinPart(int Part) const
Definition: skins7.cpp:520
static unsigned * ms_apColorVariables[NUM_DUMMIES][protocol7::NUM_SKINPARTS]
Definition: skins7.h:71
void AddSkinFromConfigVariables(const char *pName, int Dummy)
Definition: skins7.cpp:455
IGraphics::CTextureHandle m_BotTexture
Definition: skins7.h:109
static bool IsSpecialSkin(const char *pName)
Definition: skins7.cpp:62
void LoadBotDecoration()
Definition: skins7.cpp:432
void LoadXmasHat()
Definition: skins7.cpp:409
std::vector< CSkin > m_vSkins
Definition: skins7.h:106
bool ValidateSkinParts(char *apPartNames[protocol7::NUM_SKINPARTS], int *pUseCustomColors, int *pPartColors, int GameFlags) const
Definition: skins7.cpp:626
const CSkinPart * FindSkinPart(int Part, const char *pName, bool AllowSpecialPart) const
Definition: skins7.cpp:531
static int SkinScan(const char *pName, int IsDir, int DirType, void *pUser)
Definition: skins7.cpp:176
void Refresh(TSkinLoadedCallback &&SkinLoadedCallback)
Definition: skins7.cpp:365
static const char *const ms_apColorComponents[NUM_COLOR_COMPONENTS]
Definition: skins7.h:66
IGraphics::CTextureHandle m_XmasHatTexture
Definition: skins7.h:108
std::function< void()> TSkinLoadedCallback
Definition: skins7.h:34
bool LoadSkinPart(int PartType, const char *pName, int DirType)
Definition: skins7.cpp:119
IGraphics::CTextureHandle XmasHatTexture() const
Definition: skins7.h:96
void OnInit() override
Definition: skins7.cpp:300
static int * ms_apUCCVariables[NUM_DUMMIES][protocol7::NUM_SKINPARTS]
Definition: skins7.h:70
CSkinPart m_aPlaceholderSkinParts[protocol7::NUM_SKINPARTS]
Definition: skins7.h:105
ColorRGBA GetColor(int Value, bool UseAlpha) const
Definition: skins7.cpp:580
void InitPlaceholderSkinParts()
Definition: skins7.cpp:351
bool LoadSkin(const char *pName, int DirType)
Definition: skins7.cpp:187
const std::vector< CSkinPart > & GetSkinParts(int Part) const
Definition: skins7.cpp:499
ColorRGBA GetTeamColor(int UseCustomColors, int PartColor, int Team, int Part) const
Definition: skins7.cpp:598
std::vector< CSkinPart > m_avSkinParts[protocol7::NUM_SKINPARTS]
Definition: skins7.h:104
std::chrono::nanoseconds LastRefreshTime() const
Definition: skins7.h:77
bool SaveSkinfile(const char *pName, int Dummy)
Definition: skins7.cpp:641
static const char *const ms_apSkinPartNamesLocalized[protocol7::NUM_SKINPARTS]
Definition: skins7.h:65
@ SKINFLAG_SPECIAL
Definition: skins7.h:25
@ HAT_NUM
Definition: skins7.h:30
@ SKINFLAG_STANDARD
Definition: skins7.h:26
@ NUM_COLOR_COMPONENTS
Definition: skins7.h:28
@ HAT_OFFSET_SIDE
Definition: skins7.h:31
static char * ms_apSkinVariables[NUM_DUMMIES][protocol7::NUM_SKINPARTS]
Definition: skins7.h:69
IGraphics::CTextureHandle BotDecorationTexture() const
Definition: skins7.h:97
const CSkinPart * FindSkinPartOrNullptr(int Part, const char *pName, bool AllowSpecialPart) const
Definition: skins7.cpp:504
void ApplyColorTo(CTeeRenderInfo::CSixup &SixupRenderInfo, bool UseCustomColors, int Value, int Part) const
Definition: skins7.cpp:585
bool RemoveSkin(const CSkin *pSkin)
Definition: skins7.cpp:478
static const char *const ms_apSkinPartNames[protocol7::NUM_SKINPARTS]
Definition: skins7.h:64
Definition: render.h:138
Definition: color.h:210
Definition: graphics.h:201
@ NUM_DUMMIES
Definition: enums.h:8
@ NUM_SKINPARTS
Definition: protocol7.h:36
Definition: skin.h:15