DDNet documentation
Loading...
Searching...
No Matches
render_map.h
Go to the documentation of this file.
1#ifndef GAME_MAP_RENDER_MAP_H
2#define GAME_MAP_RENDER_MAP_H
3
4#include <base/color.h>
5
7#include <game/mapitems.h>
8
9#include <array>
10#include <chrono>
11#include <memory>
12#include <vector>
13
14enum
15{
18
20
23};
24
26{
27public:
28 virtual ~IEnvelopePointAccess() = default;
29 virtual int NumPoints() const = 0;
30 virtual const CEnvPoint *GetPoint(int Index) const = 0;
31 virtual const CEnvPointBezier *GetBezier(int Index) const = 0;
32 int FindPointIndex(CFixedTime Time) const;
33};
34
36{
37 std::vector<const CMapItemEnvelope *> m_vpEnvelopes;
44
45public:
47 const std::vector<const CMapItemEnvelope *> &Envelopes() const;
48 void SetPointsRange(int StartPoint, int NumPoints);
49 int StartPoint() const;
50 int NumPoints() const override;
51 int NumPointsMax() const;
52 const CEnvPoint *GetPoint(int Index) const override;
53 const CEnvPointBezier *GetBezier(int Index) const override;
54};
55
56class IGraphics;
57class ITextRender;
58
60{
61public:
63 uint8_t TuneNumberToColorIndex(uint8_t TuneNumber);
64 ColorRGBA TuneColorIndexToColor(uint8_t TuneColorIndex) const;
65 void Reset();
66
67private:
68 std::array<uint8_t, 255> m_aTuneNumberToColorIndex;
70};
71
73{
76
77public:
78 void Init(IGraphics *pGraphics, ITextRender *pTextRender);
81
82 // map render methods (render_map.cpp)
83 static void RenderEvalEnvelope(const IEnvelopePointAccess *pPoints, std::chrono::nanoseconds TimeNanos, ColorRGBA &Result, size_t Channels);
84 void ForceRenderQuads(CQuad *pQuads, int NumQuads, const IEnvelopeEval *pEnvEval, float Alpha);
85 void RenderTile(int x, int y, unsigned char Index, float Scale, ColorRGBA Color);
86 void RenderTilemap(CTile *pTiles, int w, int h, float Scale, ColorRGBA Color, int RenderFlags);
87
88 // render a rectangle made of IndexIn tiles, over a background made of IndexOut tiles
89 // the rectangle include all tiles in [RectX, RectX+RectW-1] x [RectY, RectY+RectH-1]
90 void RenderTileRectangle(int RectX, int RectY, int RectW, int RectH, unsigned char IndexIn, unsigned char IndexOut, float Scale, ColorRGBA Color);
91
92 // DDRace
93 void RenderTeleOverlay(CTeleTile *pTele, int w, int h, float Scale, int OverlayRenderFlags, float Alpha = 1.0f);
94 void RenderSpeedupOverlay(CSpeedupTile *pSpeedup, int w, int h, float Scale, int OverlayRenderFlags, float Alpha = 1.0f);
95 void RenderSwitchOverlay(CSwitchTile *pSwitch, int w, int h, float Scale, int OverlayRenderFlags, float Alpha = 1.0f);
96 void RenderTuneOverlay(CTuneTile *pTune, int w, int h, float Scale, int OverlayRenderFlags, float Alpha = 1.0f);
97 void RenderTelemap(CTeleTile *pTele, int w, int h, float Scale, ColorRGBA Color, bool ExtendTiles);
98 void RenderSwitchmap(CSwitchTile *pSwitch, int w, int h, float Scale, ColorRGBA Color, bool ExtendTiles);
99 void RenderTunemap(CTuneTile *pTune, int w, int h, float Scale, ColorRGBA Color, bool ExtendTiles, CTuneColorMapper *pTuneColorMapper);
100
101 void RenderDebugClip(float ClipX, float ClipY, float ClipW, float ClipH, ColorRGBA Color, float Zoom, const char *pLabel);
102};
103
104#endif
Definition mapitems.h:538
Definition mapitems.h:527
Definition mapitems.h:506
Definition mapitems.h:259
const std::vector< const CMapItemEnvelope * > & Envelopes() const
Definition render_map.cpp:110
int m_NumPoints
Definition render_map.h:39
int NumPointsMax() const
Definition render_map.cpp:131
CMapBasedEnvelopePointAccess(class IMap *pMap)
Definition render_map.cpp:55
int NumPoints() const override
Definition render_map.cpp:126
int m_StartPoint
Definition render_map.h:38
CEnvPoint * m_pPoints
Definition render_map.h:41
int m_NumPointsMax
Definition render_map.h:40
int StartPoint() const
Definition render_map.cpp:121
CEnvPointBezier_upstream * m_pPointsBezierUpstream
Definition render_map.h:43
const CEnvPointBezier * GetBezier(int Index) const override
Definition render_map.cpp:147
CEnvPointBezier * m_pPointsBezier
Definition render_map.h:42
const CEnvPoint * GetPoint(int Index) const override
Definition render_map.cpp:136
void SetPointsRange(int StartPoint, int NumPoints)
Definition render_map.cpp:115
std::vector< const CMapItemEnvelope * > m_vpEnvelopes
Definition render_map.h:37
Definition mapitems.h:337
Definition render_map.h:73
void RenderTunemap(CTuneTile *pTune, int w, int h, float Scale, ColorRGBA Color, bool ExtendTiles, CTuneColorMapper *pTuneColorMapper)
Definition render_map.cpp:1200
void Init(IGraphics *pGraphics, ITextRender *pTextRender)
Definition render_map.cpp:249
void RenderSwitchOverlay(CSwitchTile *pSwitch, int w, int h, float Scale, int OverlayRenderFlags, float Alpha=1.0f)
Definition render_map.cpp:860
void RenderTileRectangle(int RectX, int RectY, int RectW, int RectH, unsigned char IndexIn, unsigned char IndexOut, float Scale, ColorRGBA Color)
Definition render_map.cpp:424
static void RenderEvalEnvelope(const IEnvelopePointAccess *pPoints, std::chrono::nanoseconds TimeNanos, ColorRGBA &Result, size_t Channels)
Definition render_map.cpp:255
void RenderTeleOverlay(CTeleTile *pTele, int w, int h, float Scale, int OverlayRenderFlags, float Alpha=1.0f)
Definition render_map.cpp:736
IGraphics * Graphics()
Definition render_map.h:79
ITextRender * TextRender()
Definition render_map.h:80
void RenderTilemap(CTile *pTiles, int w, int h, float Scale, ColorRGBA Color, int RenderFlags)
Definition render_map.cpp:575
void RenderSwitchmap(CSwitchTile *pSwitch, int w, int h, float Scale, ColorRGBA Color, bool ExtendTiles)
Definition render_map.cpp:1060
IGraphics * m_pGraphics
Definition render_map.h:74
void RenderSpeedupOverlay(CSpeedupTile *pSpeedup, int w, int h, float Scale, int OverlayRenderFlags, float Alpha=1.0f)
Definition render_map.cpp:782
void RenderTile(int x, int y, unsigned char Index, float Scale, ColorRGBA Color)
Definition render_map.cpp:509
void RenderTuneOverlay(CTuneTile *pTune, int w, int h, float Scale, int OverlayRenderFlags, float Alpha=1.0f)
Definition render_map.cpp:909
ITextRender * m_pTextRender
Definition render_map.h:75
void ForceRenderQuads(CQuad *pQuads, int NumQuads, const IEnvelopeEval *pEnvEval, float Alpha)
Definition render_map.cpp:370
void RenderDebugClip(float ClipX, float ClipY, float ClipW, float ClipH, ColorRGBA Color, float Zoom, const char *pLabel)
Definition render_map.cpp:1316
void RenderTelemap(CTeleTile *pTele, int w, int h, float Scale, ColorRGBA Color, bool ExtendTiles)
Definition render_map.cpp:955
Definition mapitems.h:662
Definition mapitems.h:672
Definition mapitems.h:655
Definition mapitems.h:351
Definition render_map.h:60
uint8_t TuneNumberToColorIndex(uint8_t TuneNumber)
Definition render_map.cpp:1342
ColorRGBA TuneColorIndexToColor(uint8_t TuneColorIndex) const
Definition render_map.cpp:1356
uint8_t m_NextTuneNumberIndex
Definition render_map.h:69
std::array< uint8_t, 255 > m_aTuneNumberToColorIndex
Definition render_map.h:68
void Reset()
Definition render_map.cpp:1365
CTuneColorMapper()
Definition render_map.cpp:1337
Definition mapitems.h:689
Definition color.h:183
Definition render_interfaces.h:23
Definition render_map.h:26
virtual const CEnvPointBezier * GetBezier(int Index) const =0
int FindPointIndex(CFixedTime Time) const
Definition render_map.cpp:26
virtual ~IEnvelopePointAccess()=default
virtual int NumPoints() const =0
virtual const CEnvPoint * GetPoint(int Index) const =0
Definition graphics.h:240
Definition map.h:20
Definition textrender.h:194
@ OVERLAYRENDERFLAG_TEXT
Definition render_map.h:21
@ TILERENDERFLAG_EXTEND
Definition render_map.h:19
@ OVERLAYRENDERFLAG_EDITOR
Definition render_map.h:22
@ LAYERRENDERFLAG_OPAQUE
Definition render_map.h:16
@ LAYERRENDERFLAG_TRANSPARENT
Definition render_map.h:17