DDraceNetwork Documentation
Loading...
Searching...
No Matches
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
12#include <generated/protocol.h>
13#include <generated/protocol7.h>
14
16#include <game/client/render.h>
17
18#include <chrono>
19#include <vector>
20
21class CSkins7 : public CComponent
22{
23public:
24 enum
25 {
33 };
34
35 typedef std::function<void()> TSkinLoadedCallback;
36
51
52 class CSkin
53 {
54 public:
56 char m_aName[24];
60
61 bool operator<(const CSkin &Other) const;
62 bool operator==(const CSkin &Other) const;
63 };
64
65 static const char *const ms_apSkinPartNames[protocol7::NUM_SKINPARTS];
67 static const char *const ms_apColorComponents[NUM_COLOR_COMPONENTS];
68
71 static int *ms_apUCCVariables[NUM_DUMMIES][protocol7::NUM_SKINPARTS]; // use custom color
73
74 int Sizeof() const override { return sizeof(*this); }
75 void OnInit() override;
76
78 std::chrono::nanoseconds LastRefreshTime() const { return m_LastRefreshTime; }
79
80 const std::vector<CSkin> &GetSkins() const;
81 const std::vector<CSkinPart> &GetSkinParts(int Part) const;
82 const CSkinPart *FindSkinPartOrNullptr(int Part, const char *pName, bool AllowSpecialPart) const;
83 const CSkinPart *FindDefaultSkinPart(int Part) const;
84 const CSkinPart *FindSkinPart(int Part, const char *pName, bool AllowSpecialPart) const;
85 void RandomizeSkin(int Dummy) const;
86
87 ColorRGBA GetColor(int Value, bool UseAlpha) const;
89 ColorRGBA GetTeamColor(int UseCustomColors, int PartColor, int Team, int Part) const;
90
91 // returns true if everything was valid and nothing changed
93
94 bool SaveSkinfile(const char *pName, int Dummy);
95 bool RemoveSkin(const CSkin *pSkin);
96
99
100 static bool IsSpecialSkin(const char *pName);
101
102private:
103 std::chrono::nanoseconds m_LastRefreshTime;
104
107 std::vector<CSkin> m_vSkins;
108
111
112 static int SkinPartScan(const char *pName, int IsDir, int DirType, void *pUser);
113 bool LoadSkinPart(int PartType, const char *pName, int DirType);
114 static int SkinScan(const char *pName, int IsDir, int DirType, void *pUser);
115 bool LoadSkin(const char *pName, int DirType);
116
118 void LoadXmasHat();
119 void LoadBotDecoration();
120
121 void AddSkinFromConfigVariables(const char *pName, int Dummy);
122};
123
124#endif
Definition component.h:165
Definition skin.h:11
Definition skins7.h:38
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:44
char m_aName[24]
Definition skins7.h:42
int m_Type
Definition skins7.h:40
int m_Flags
Definition skins7.h:41
ColorRGBA m_BloodColor
Definition skins7.h:45
IGraphics::CTextureHandle m_OriginalTexture
Definition skins7.h:43
Definition skins7.h:53
int m_aUseCustomColors[protocol7::NUM_SKINPARTS]
Definition skins7.h:58
char m_aName[24]
Definition skins7.h:56
bool operator<(const CSkin &Other) const
Definition skins7.cpp:52
const CSkinPart * m_apParts[protocol7::NUM_SKINPARTS]
Definition skins7.h:57
unsigned m_aPartColors[protocol7::NUM_SKINPARTS]
Definition skins7.h:59
bool operator==(const CSkin &Other) const
Definition skins7.cpp:57
int m_Flags
Definition skins7.h:55
Definition skins7.h:22
void RandomizeSkin(int Dummy) const
Definition skins7.cpp:541
@ SKINFLAG_SPECIAL
Definition skins7.h:26
@ HAT_NUM
Definition skins7.h:31
@ SKINFLAG_STANDARD
Definition skins7.h:27
@ NUM_COLOR_COMPONENTS
Definition skins7.h:29
@ HAT_OFFSET_SIDE
Definition skins7.h:32
int Sizeof() const override
Definition skins7.h:74
static char * ms_apSkinNameVariables[NUM_DUMMIES]
Definition skins7.h:27
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:103
const CSkinPart * FindDefaultSkinPart(int Part) const
Definition skins7.cpp:520
static unsigned * ms_apColorVariables[NUM_DUMMIES][protocol7::NUM_SKINPARTS]
Definition skins7.h:30
void AddSkinFromConfigVariables(const char *pName, int Dummy)
Definition skins7.cpp:455
IGraphics::CTextureHandle m_BotTexture
Definition skins7.h:110
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:107
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:25
IGraphics::CTextureHandle m_XmasHatTexture
Definition skins7.h:109
std::function< void()> TSkinLoadedCallback
Definition skins7.h:35
bool LoadSkinPart(int PartType, const char *pName, int DirType)
Definition skins7.cpp:119
IGraphics::CTextureHandle XmasHatTexture() const
Definition skins7.h:97
void OnInit() override
Definition skins7.cpp:300
static int * ms_apUCCVariables[NUM_DUMMIES][protocol7::NUM_SKINPARTS]
Definition skins7.h:29
CSkinPart m_aPlaceholderSkinParts[protocol7::NUM_SKINPARTS]
Definition skins7.h:106
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:105
std::chrono::nanoseconds LastRefreshTime() const
Definition skins7.h:78
bool SaveSkinfile(const char *pName, int Dummy)
Definition skins7.cpp:641
static const char *const ms_apSkinPartNamesLocalized[protocol7::NUM_SKINPARTS]
Definition skins7.h:24
static char * ms_apSkinVariables[NUM_DUMMIES][protocol7::NUM_SKINPARTS]
Definition skins7.h:28
IGraphics::CTextureHandle BotDecorationTexture() const
Definition skins7.h:98
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:23
Definition render.h:146
Definition color.h:198
Definition graphics.h:205
Definition vmath.h:15
@ NUM_DUMMIES
Definition enums.h:8
@ NUM_SKINPARTS
Definition protocol7.h:37