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
7
8#include <base/color.h>
9#include <base/vmath.h>
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;
26namespace client_data7 {
27struct CDataSprite;
28}
29struct CDataSprite;
30class CEnvPoint;
31class CEnvPointBezier;
33class CMapItemGroup;
34class CQuad;
35
37{
38public:
39 enum
40 {
43 };
44 unsigned m_Flags;
45
47
48 class CSixup
49 {
50 public:
54
55 void Reset();
56 bool operator==(const CSixup &Other) const;
57 bool operator!=(const CSixup &Other) const { return !(*this == Other); }
58 };
60
62 void Reset();
63 bool IsValid() const;
64 bool operator==(const CSkinDescriptor &Other) const;
65 bool operator!=(const CSkinDescriptor &Other) const { return !(*this == Other); }
66};
67
69{
70public:
72 {
73 Reset();
74 }
75
76 void Reset()
77 {
81 m_CustomColoredSkin = false;
82 m_BloodColor = ColorRGBA(1.0f, 1.0f, 1.0f, 1.0f);
83 m_ColorBody = ColorRGBA(1.0f, 1.0f, 1.0f, 1.0f);
84 m_ColorFeet = ColorRGBA(1.0f, 1.0f, 1.0f, 1.0f);
85 m_Size = 1.0f;
86 m_GotAirJump = true;
88 m_FeetFlipped = false;
89
90 for(auto &Sixup : m_aSixup)
91 Sixup.Reset();
92 }
93
94 void Apply(const CSkin *pSkin)
95 {
96 m_OriginalRenderSkin = pSkin->m_OriginalSkin;
97 m_ColorableRenderSkin = pSkin->m_ColorableSkin;
98 m_BloodColor = pSkin->m_BloodColor;
99 m_SkinMetrics = pSkin->m_Metrics;
100 }
101
102 void ApplySkin(const CTeeRenderInfo &TeeRenderInfo)
103 {
106 m_BloodColor = TeeRenderInfo.m_BloodColor;
107 m_SkinMetrics = TeeRenderInfo.m_SkinMetrics;
108 }
109
111 {
114 {
117 }
118 else
119 {
120 m_ColorBody = ColorRGBA(1.0f, 1.0f, 1.0f, 1.0f);
121 m_ColorFeet = ColorRGBA(1.0f, 1.0f, 1.0f, 1.0f);
122 }
123 }
124
127
129
132
135 float m_Size;
139
144
145 class CSixup
146 {
147 public:
148 void Reset()
149 {
150 for(auto &Texture : m_aOriginalTextures)
151 {
152 Texture.Invalidate();
153 }
154 for(auto &Texture : m_aColorableTextures)
155 {
156 Texture.Invalidate();
157 }
158 std::fill(std::begin(m_aUseCustomColors), std::end(m_aUseCustomColors), false);
159 std::fill(std::begin(m_aColors), std::end(m_aColors), ColorRGBA(1.0f, 1.0f, 1.0f, 1.0f));
160 m_BloodColor = ColorRGBA(1.0f, 1.0f, 1.0f, 1.0f);
164 m_BotColor = ColorRGBA(0.0f, 0.0f, 0.0f, 0.0f);
165 }
166
176
181 };
182
184};
185
205
206// Tee Render Flags
207enum
208{
212};
213
215{
218
220
221 static void GetRenderTeeBodyScale(float BaseSize, float &BodyScale);
222 static void GetRenderTeeFeetScale(float BaseSize, float &FeetScaleWidth, float &FeetScaleHeight);
223
224 void RenderTee6(const CAnimState *pAnim, const CTeeRenderInfo *pInfo, int Emote, vec2 Dir, vec2 Pos, float Alpha = 1.0f) const;
225 void RenderTee7(const CAnimState *pAnim, const CTeeRenderInfo *pInfo, int Emote, vec2 Dir, vec2 Pos, float Alpha = 1.0f) const;
226
227public:
228 class IGraphics *Graphics() const { return m_pGraphics; }
229 class ITextRender *TextRender() const { return m_pTextRender; }
230
231 void Init(class IGraphics *pGraphics, class ITextRender *pTextRender);
232
233 void RenderCursor(vec2 Center, float Size) const;
234 void RenderIcon(int ImageId, int SpriteId, const CUIRect *pRect, const ColorRGBA *pColor = nullptr) const;
235
236 // larger rendering methods
237 static void GetRenderTeeBodySize(const CAnimState *pAnim, const CTeeRenderInfo *pInfo, vec2 &BodyOffset, float &Width, float &Height);
238 static void GetRenderTeeFeetSize(const CAnimState *pAnim, const CTeeRenderInfo *pInfo, vec2 &FeetOffset, float &Width, float &Height);
239 static void GetRenderTeeAnimScaleAndBaseSize(const CTeeRenderInfo *pInfo, float &AnimScale, float &BaseSize);
240
241 // returns the offset to use, to render the tee with @see RenderTee exactly in the mid
243 // object render methods
244 void RenderTee(const CAnimState *pAnim, const CTeeRenderInfo *pInfo, int Emote, vec2 Dir, vec2 Pos, float Alpha = 1.0f) const;
245};
246
247#endif
Definition animstate.h:9
Definition mapitems.h:484
Definition mapitems.h:473
Definition mapitems.h:452
Definition gameclient.h:132
Definition render.h:187
std::function< void()> m_RefreshCallback
Definition render.h:191
void SetRefreshCallback(const std::function< void()> &RefreshCallback)
Definition render.h:203
const CSkinDescriptor & SkinDescriptor() const
Definition render.h:202
CSkinDescriptor m_SkinDescriptor
Definition render.h:190
CManagedTeeRenderInfo(const CTeeRenderInfo &TeeRenderInfo, const CSkinDescriptor &SkinDescriptor)
Definition render.h:194
const CTeeRenderInfo & TeeRenderInfo() const
Definition render.h:201
CTeeRenderInfo m_TeeRenderInfo
Definition render.h:189
CTeeRenderInfo & TeeRenderInfo()
Definition render.h:200
Definition mapitems.h:374
Definition mapitems.h:303
Definition render.h:215
static void GetRenderTeeFeetSize(const CAnimState *pAnim, const CTeeRenderInfo *pInfo, vec2 &FeetOffset, float &Width, float &Height)
Definition render.cpp:186
void RenderTee7(const CAnimState *pAnim, const CTeeRenderInfo *pInfo, int Emote, vec2 Dir, vec2 Pos, float Alpha=1.0f) const
Definition render.cpp:265
void RenderTee(const CAnimState *pAnim, const CTeeRenderInfo *pInfo, int Emote, vec2 Dir, vec2 Pos, float Alpha=1.0f) const
Definition render.cpp:254
void RenderCursor(vec2 Center, float Size) const
Definition render.cpp:130
static void GetRenderTeeAnimScaleAndBaseSize(const CTeeRenderInfo *pInfo, float &AnimScale, float &BaseSize)
Definition render.cpp:154
void RenderIcon(int ImageId, int SpriteId, const CUIRect *pRect, const ColorRGBA *pColor=nullptr) const
Definition render.cpp:142
void RenderTee6(const CAnimState *pAnim, const CTeeRenderInfo *pInfo, int Emote, vec2 Dir, vec2 Pos, float Alpha=1.0f) const
Definition render.cpp:484
static void GetRenderTeeFeetScale(float BaseSize, float &FeetScaleWidth, float &FeetScaleHeight)
Definition render.cpp:166
class ITextRender * m_pTextRender
Definition render.h:217
static void GetRenderTeeBodyScale(float BaseSize, float &BodyScale)
Definition render.cpp:160
static void GetRenderTeeOffsetToRenderedTee(const CAnimState *pAnim, const CTeeRenderInfo *pInfo, vec2 &TeeOffsetToMid)
Definition render.cpp:200
static void GetRenderTeeBodySize(const CAnimState *pAnim, const CTeeRenderInfo *pInfo, vec2 &BodyOffset, float &Width, float &Height)
Definition render.cpp:172
class IGraphics * Graphics() const
Definition render.h:228
void Init(class IGraphics *pGraphics, class ITextRender *pTextRender)
Definition render.cpp:92
class ITextRender * TextRender() const
Definition render.h:229
class IGraphics * m_pGraphics
Definition render.h:216
int m_TeeQuadContainerIndex
Definition render.h:219
Definition render.h:49
bool m_BotDecoration
Definition render.h:52
bool operator!=(const CSixup &Other) const
Definition render.h:57
bool operator==(const CSixup &Other) const
Definition render.cpp:79
void Reset()
Definition render.cpp:69
char m_aaSkinPartNames[protocol7::NUM_SKINPARTS][protocol7::MAX_SKIN_LENGTH]
Definition render.h:51
bool m_XmasHat
Definition render.h:53
Definition render.h:37
CSixup m_aSixup[NUM_DUMMIES]
Definition render.h:59
bool operator!=(const CSkinDescriptor &Other) const
Definition render.h:65
bool operator==(const CSkinDescriptor &Other) const
Definition render.cpp:40
unsigned m_Flags
Definition render.h:44
bool IsValid() const
Definition render.cpp:35
void Reset()
Definition render.cpp:25
@ FLAG_SIX
Definition render.h:41
@ FLAG_SEVEN
Definition render.h:42
CSkinDescriptor()
Definition render.cpp:20
char m_aSkinName[MAX_SKIN_LENGTH]
Definition render.h:46
Definition skin.h:79
void Reset()
Definition skin.cpp:113
Definition skin.h:16
IGraphics::CTextureHandle m_Body
Definition skin.h:18
void Reset()
Definition skin.cpp:8
Definition skin.h:11
Definition mapitems.h:608
Definition mapitems.h:617
Definition render.h:146
ColorRGBA m_BotColor
Definition render.h:175
bool m_aUseCustomColors[protocol7::NUM_SKINPARTS]
Definition render.h:169
void Reset()
Definition render.h:148
ColorRGBA m_BloodColor
Definition render.h:171
IGraphics::CTextureHandle m_aColorableTextures[protocol7::NUM_SKINPARTS]
Definition render.h:168
IGraphics::CTextureHandle m_aOriginalTextures[protocol7::NUM_SKINPARTS]
Definition render.h:167
const IGraphics::CTextureHandle & PartTexture(int Part) const
Definition render.h:177
ColorRGBA m_aColors[protocol7::NUM_SKINPARTS]
Definition render.h:170
int m_HatSpriteIndex
Definition render.h:174
IGraphics::CTextureHandle m_HatTexture
Definition render.h:172
IGraphics::CTextureHandle m_BotTexture
Definition render.h:173
Definition render.h:69
void Apply(const CSkin *pSkin)
Definition render.h:94
void Reset()
Definition render.h:76
bool Valid() const
Definition render.h:140
ColorRGBA m_BloodColor
Definition render.h:131
void ApplySkin(const CTeeRenderInfo &TeeRenderInfo)
Definition render.h:102
void ApplyColors(bool CustomColoredSkin, int ColorBody, int ColorFeet)
Definition render.h:110
bool m_CustomColoredSkin
Definition render.h:130
CTeeRenderInfo()
Definition render.h:71
bool m_GotAirJump
Definition render.h:136
CSkin::CSkinMetrics m_SkinMetrics
Definition render.h:128
ColorRGBA m_ColorBody
Definition render.h:133
bool m_FeetFlipped
Definition render.h:138
CSkin::CSkinTextures m_ColorableRenderSkin
Definition render.h:126
CSkin::CSkinTextures m_OriginalRenderSkin
Definition render.h:125
int m_TeeRenderFlags
Definition render.h:137
ColorRGBA m_ColorFeet
Definition render.h:134
CSixup m_aSixup[NUM_DUMMIES]
Definition render.h:183
float m_Size
Definition render.h:135
Definition mapitems.h:601
Definition mapitems.h:317
Definition mapitems.h:634
Definition ui_rect.h:11
Definition color.h:161
static constexpr const float DARKEST_LGT
Definition color.h:166
Definition color.h:198
Definition graphics.h:205
void Invalidate()
Definition graphics.h:218
bool IsValid() const
Definition graphics.h:215
Definition graphics.h:188
Definition textrender.h:280
Definition vmath.h:15
@ NUM_DUMMIES
Definition enums.h:8
@ MAX_SKIN_LENGTH
Definition protocol.h:100
Definition render.h:26
@ NUM_SKINPARTS
Definition protocol7.h:37
@ MAX_SKIN_LENGTH
Definition protocol7.h:69
@ TEE_EFFECT_SPARKLE
Definition render.h:211
@ TEE_NO_WEAPON
Definition render.h:210
@ TEE_EFFECT_FROZEN
Definition render.h:209
Definition data_types.h:30