DDraceNetwork Documentation
Loading...
Searching...
No Matches
render.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_RENDER_H
4#define GAME_CLIENT_RENDER_H
5
6#include <base/color.h>
7#include <base/vmath.h>
8
10
11#include <generated/protocol.h>
12#include <generated/protocol7.h>
13
14#include <game/client/skin.h>
15#include <game/client/ui_rect.h>
16
17#include <functional>
18#include <memory>
19
20class CAnimState;
21class CSpeedupTile;
22class CSwitchTile;
23class CTeleTile;
24class CTile;
25class CTuneTile;
26class CEnvPoint;
27class CEnvPointBezier;
29class CMapItemGroup;
30class CQuad;
31
33{
34public:
35 enum
36 {
39 };
40 unsigned m_Flags;
41
43
44 class CSixup
45 {
46 public:
50
51 void Reset();
52 bool operator==(const CSixup &Other) const;
53 bool operator!=(const CSixup &Other) const { return !(*this == Other); }
54 };
56
58 void Reset();
59 bool IsValid() const;
60 bool operator==(const CSkinDescriptor &Other) const;
61 bool operator!=(const CSkinDescriptor &Other) const { return !(*this == Other); }
62};
63
65{
66public:
68 {
69 Reset();
70 }
71
72 void Reset()
73 {
76 m_SkinMetrics.Reset();
77 m_CustomColoredSkin = false;
78 m_BloodColor = ColorRGBA(1.0f, 1.0f, 1.0f, 1.0f);
79 m_ColorBody = ColorRGBA(1.0f, 1.0f, 1.0f, 1.0f);
80 m_ColorFeet = ColorRGBA(1.0f, 1.0f, 1.0f, 1.0f);
81 m_Size = 1.0f;
82 m_GotAirJump = true;
84 m_FeetFlipped = false;
85
86 for(auto &Sixup : m_aSixup)
87 Sixup.Reset();
88 }
89
90 void Apply(const CSkin *pSkin)
91 {
95 m_SkinMetrics = pSkin->m_Metrics;
96 }
97
98 void ApplySkin(const CTeeRenderInfo &TeeRenderInfo)
99 {
102 m_BloodColor = TeeRenderInfo.m_BloodColor;
103 m_SkinMetrics = TeeRenderInfo.m_SkinMetrics;
104 }
105
106 void ApplyColors(bool CustomColoredSkin, int ColorBody, int ColorFeet)
107 {
108 m_CustomColoredSkin = CustomColoredSkin;
109 if(CustomColoredSkin)
110 {
113 }
114 else
115 {
116 m_ColorBody = ColorRGBA(1.0f, 1.0f, 1.0f, 1.0f);
117 m_ColorFeet = ColorRGBA(1.0f, 1.0f, 1.0f, 1.0f);
118 }
119 }
120
123
125
128
131 float m_Size;
135
136 bool Valid() const
137 {
138 return m_CustomColoredSkin ? m_ColorableRenderSkin.m_Body.IsValid() : m_OriginalRenderSkin.m_Body.IsValid();
139 }
140
141 class CSixup
142 {
143 public:
144 void Reset()
145 {
146 for(auto &Texture : m_aOriginalTextures)
147 {
148 Texture.Invalidate();
149 }
150 for(auto &Texture : m_aColorableTextures)
151 {
152 Texture.Invalidate();
153 }
154 std::fill(std::begin(m_aUseCustomColors), std::end(m_aUseCustomColors), false);
155 std::fill(std::begin(m_aColors), std::end(m_aColors), ColorRGBA(1.0f, 1.0f, 1.0f, 1.0f));
156 m_BloodColor = ColorRGBA(1.0f, 1.0f, 1.0f, 1.0f);
157 m_HatTexture.Invalidate();
158 m_BotTexture.Invalidate();
160 m_BotColor = ColorRGBA(0.0f, 0.0f, 0.0f, 0.0f);
161 }
162
172
174 {
176 }
177 };
178
180};
181
201
202// Tee Render Flags
203enum
204{
208};
209
211{
214
216
217 static void GetRenderTeeBodyScale(float BaseSize, float &BodyScale);
218 static void GetRenderTeeFeetScale(float BaseSize, float &FeetScaleWidth, float &FeetScaleHeight);
219
220 void RenderTee6(const CAnimState *pAnim, const CTeeRenderInfo *pInfo, int Emote, vec2 Dir, vec2 Pos, float Alpha = 1.0f) const;
221 void RenderTee7(const CAnimState *pAnim, const CTeeRenderInfo *pInfo, int Emote, vec2 Dir, vec2 Pos, float Alpha = 1.0f) const;
222
223public:
224 class IGraphics *Graphics() const { return m_pGraphics; }
225 class ITextRender *TextRender() const { return m_pTextRender; }
226
227 void Init(class IGraphics *pGraphics, class ITextRender *pTextRender);
228
229 void RenderCursor(vec2 Center, float Size) const;
230 void RenderIcon(int ImageId, int SpriteId, const CUIRect *pRect, const ColorRGBA *pColor = nullptr) const;
231
232 // larger rendering methods
233 static void GetRenderTeeBodySize(const CAnimState *pAnim, const CTeeRenderInfo *pInfo, vec2 &BodyOffset, float &Width, float &Height);
234 static void GetRenderTeeFeetSize(const CAnimState *pAnim, const CTeeRenderInfo *pInfo, vec2 &FeetOffset, float &Width, float &Height);
235 static void GetRenderTeeAnimScaleAndBaseSize(const CTeeRenderInfo *pInfo, float &AnimScale, float &BaseSize);
236
237 // returns the offset to use, to render the tee with @see RenderTee exactly in the mid
238 static void GetRenderTeeOffsetToRenderedTee(const CAnimState *pAnim, const CTeeRenderInfo *pInfo, vec2 &TeeOffsetToMid);
239 // object render methods
240 void RenderTee(const CAnimState *pAnim, const CTeeRenderInfo *pInfo, int Emote, vec2 Dir, vec2 Pos, float Alpha = 1.0f) const;
241};
242
243#endif
Definition animstate.h:9
Definition mapitems.h:518
Definition mapitems.h:507
Definition mapitems.h:486
std::function< void()> m_RefreshCallback
Definition render.h:187
void SetRefreshCallback(const std::function< void()> &RefreshCallback)
Definition render.h:199
const CSkinDescriptor & SkinDescriptor() const
Definition render.h:198
CSkinDescriptor m_SkinDescriptor
Definition render.h:186
CManagedTeeRenderInfo(const CTeeRenderInfo &TeeRenderInfo, const CSkinDescriptor &SkinDescriptor)
Definition render.h:190
const CTeeRenderInfo & TeeRenderInfo() const
Definition render.h:197
friend class CGameClient
Definition render.h:184
CTeeRenderInfo m_TeeRenderInfo
Definition render.h:185
CTeeRenderInfo & TeeRenderInfo()
Definition render.h:196
Definition mapitems.h:408
Definition mapitems.h:337
Definition render.h:211
static void GetRenderTeeFeetSize(const CAnimState *pAnim, const CTeeRenderInfo *pInfo, vec2 &FeetOffset, float &Width, float &Height)
Definition render.cpp:187
void RenderTee7(const CAnimState *pAnim, const CTeeRenderInfo *pInfo, int Emote, vec2 Dir, vec2 Pos, float Alpha=1.0f) const
Definition render.cpp:266
void RenderTee(const CAnimState *pAnim, const CTeeRenderInfo *pInfo, int Emote, vec2 Dir, vec2 Pos, float Alpha=1.0f) const
Definition render.cpp:255
void RenderCursor(vec2 Center, float Size) const
Definition render.cpp:131
static void GetRenderTeeAnimScaleAndBaseSize(const CTeeRenderInfo *pInfo, float &AnimScale, float &BaseSize)
Definition render.cpp:155
void RenderIcon(int ImageId, int SpriteId, const CUIRect *pRect, const ColorRGBA *pColor=nullptr) const
Definition render.cpp:143
void RenderTee6(const CAnimState *pAnim, const CTeeRenderInfo *pInfo, int Emote, vec2 Dir, vec2 Pos, float Alpha=1.0f) const
Definition render.cpp:485
static void GetRenderTeeFeetScale(float BaseSize, float &FeetScaleWidth, float &FeetScaleHeight)
Definition render.cpp:167
class ITextRender * m_pTextRender
Definition render.h:213
static void GetRenderTeeBodyScale(float BaseSize, float &BodyScale)
Definition render.cpp:161
static void GetRenderTeeOffsetToRenderedTee(const CAnimState *pAnim, const CTeeRenderInfo *pInfo, vec2 &TeeOffsetToMid)
Definition render.cpp:201
static void GetRenderTeeBodySize(const CAnimState *pAnim, const CTeeRenderInfo *pInfo, vec2 &BodyOffset, float &Width, float &Height)
Definition render.cpp:173
class IGraphics * Graphics() const
Definition render.h:224
void Init(class IGraphics *pGraphics, class ITextRender *pTextRender)
Definition render.cpp:93
class ITextRender * TextRender() const
Definition render.h:225
class IGraphics * m_pGraphics
Definition render.h:212
int m_TeeQuadContainerIndex
Definition render.h:215
Definition render.h:45
bool m_BotDecoration
Definition render.h:48
bool operator!=(const CSixup &Other) const
Definition render.h:53
bool operator==(const CSixup &Other) const
Definition render.cpp:80
void Reset()
Definition render.cpp:70
char m_aaSkinPartNames[protocol7::NUM_SKINPARTS][protocol7::MAX_SKIN_LENGTH]
Definition render.h:47
bool m_XmasHat
Definition render.h:49
Definition render.h:33
CSixup m_aSixup[NUM_DUMMIES]
Definition render.h:55
bool operator!=(const CSkinDescriptor &Other) const
Definition render.h:61
bool operator==(const CSkinDescriptor &Other) const
Definition render.cpp:41
unsigned m_Flags
Definition render.h:40
@ FLAG_SIX
Definition render.h:37
@ FLAG_SEVEN
Definition render.h:38
bool IsValid() const
Definition render.cpp:36
void Reset()
Definition render.cpp:26
CSkinDescriptor()
Definition render.cpp:21
char m_aSkinName[MAX_SKIN_LENGTH]
Definition render.h:42
Definition skin.h:79
Definition skin.h:16
Definition skin.h:11
CSkinMetrics m_Metrics
Definition skin.h:87
ColorRGBA m_BloodColor
Definition skin.h:35
CSkinTextures m_OriginalSkin
Definition skin.h:33
CSkinTextures m_ColorableSkin
Definition skin.h:34
Definition mapitems.h:642
Definition mapitems.h:651
Definition render.h:142
ColorRGBA m_BotColor
Definition render.h:171
bool m_aUseCustomColors[protocol7::NUM_SKINPARTS]
Definition render.h:165
void Reset()
Definition render.h:144
ColorRGBA m_BloodColor
Definition render.h:167
IGraphics::CTextureHandle m_aColorableTextures[protocol7::NUM_SKINPARTS]
Definition render.h:164
IGraphics::CTextureHandle m_aOriginalTextures[protocol7::NUM_SKINPARTS]
Definition render.h:163
const IGraphics::CTextureHandle & PartTexture(int Part) const
Definition render.h:173
ColorRGBA m_aColors[protocol7::NUM_SKINPARTS]
Definition render.h:166
int m_HatSpriteIndex
Definition render.h:170
IGraphics::CTextureHandle m_HatTexture
Definition render.h:168
IGraphics::CTextureHandle m_BotTexture
Definition render.h:169
Definition render.h:65
void Apply(const CSkin *pSkin)
Definition render.h:90
void Reset()
Definition render.h:72
bool Valid() const
Definition render.h:136
ColorRGBA m_BloodColor
Definition render.h:127
void ApplySkin(const CTeeRenderInfo &TeeRenderInfo)
Definition render.h:98
void ApplyColors(bool CustomColoredSkin, int ColorBody, int ColorFeet)
Definition render.h:106
bool m_CustomColoredSkin
Definition render.h:126
CTeeRenderInfo()
Definition render.h:67
bool m_GotAirJump
Definition render.h:132
CSkin::CSkinMetrics m_SkinMetrics
Definition render.h:124
ColorRGBA m_ColorBody
Definition render.h:129
bool m_FeetFlipped
Definition render.h:134
CSkin::CSkinTextures m_ColorableRenderSkin
Definition render.h:122
CSkin::CSkinTextures m_OriginalRenderSkin
Definition render.h:121
int m_TeeRenderFlags
Definition render.h:133
ColorRGBA m_ColorFeet
Definition render.h:130
CSixup m_aSixup[NUM_DUMMIES]
Definition render.h:179
float m_Size
Definition render.h:131
Definition mapitems.h:635
Definition mapitems.h:351
Definition mapitems.h:668
Definition ui_rect.h:12
Definition color.h:145
static constexpr const float DARKEST_LGT
Definition color.h:150
Definition color.h:182
Definition graphics.h:206
Definition graphics.h:189
Definition textrender.h:291
constexpr T color_cast(const F &)=delete
@ NUM_DUMMIES
Definition enums.h:8
@ MAX_SKIN_LENGTH
Definition protocol.h:101
@ MAX_SKIN_LENGTH
Definition protocol7.h:73
@ NUM_SKINPARTS
Definition protocol7.h:46
@ TEE_EFFECT_SPARKLE
Definition render.h:207
@ TEE_NO_WEAPON
Definition render.h:206
@ TEE_EFFECT_FROZEN
Definition render.h:205
vector2_base< float > vec2
Definition vmath.h:161