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
13enum
14{
17
19
22};
23
25{
26public:
27 virtual ~IEnvelopePointAccess() = default;
28 virtual int NumPoints() const = 0;
29 virtual const CEnvPoint *GetPoint(int Index) const = 0;
30 virtual const CEnvPointBezier *GetBezier(int Index) const = 0;
31 int FindPointIndex(CFixedTime Time) const;
32};
33
35{
42
43public:
45 void SetPointsRange(int StartPoint, int NumPoints);
46 int StartPoint() const;
47 int NumPoints() const override;
48 int NumPointsMax() const;
49 const CEnvPoint *GetPoint(int Index) const override;
50 const CEnvPointBezier *GetBezier(int Index) const override;
51};
52
53class IGraphics;
54class ITextRender;
55
57{
58public:
60 uint8_t TuneNumberToColorIndex(uint8_t TuneNumber);
61 ColorRGBA TuneColorIndexToColor(uint8_t TuneColorIndex) const;
62 void Reset();
63
64private:
65 std::array<uint8_t, 255> m_aTuneNumberToColorIndex;
67};
68
70{
73
74public:
75 void Init(IGraphics *pGraphics, ITextRender *pTextRender);
78
79 // map render methods (render_map.cpp)
80 static void RenderEvalEnvelope(const IEnvelopePointAccess *pPoints, std::chrono::nanoseconds TimeNanos, ColorRGBA &Result, size_t Channels);
81 void ForceRenderQuads(CQuad *pQuads, int NumQuads, int Flags, IEnvelopeEval *pEnvEval, float Alpha = 1.0f);
82 void RenderTile(int x, int y, unsigned char Index, float Scale, ColorRGBA Color);
83 void RenderTilemap(CTile *pTiles, int w, int h, float Scale, ColorRGBA Color, int RenderFlags);
84
85 // render a rectangle made of IndexIn tiles, over a background made of IndexOut tiles
86 // the rectangle include all tiles in [RectX, RectX+RectW-1] x [RectY, RectY+RectH-1]
87 void RenderTileRectangle(int RectX, int RectY, int RectW, int RectH, unsigned char IndexIn, unsigned char IndexOut, float Scale, ColorRGBA Color, int RenderFlags);
88
89 // DDRace
90 void RenderTeleOverlay(CTeleTile *pTele, int w, int h, float Scale, int OverlayRenderFlags, float Alpha = 1.0f);
91 void RenderSpeedupOverlay(CSpeedupTile *pSpeedup, int w, int h, float Scale, int OverlayRenderFlags, float Alpha = 1.0f);
92 void RenderSwitchOverlay(CSwitchTile *pSwitch, int w, int h, float Scale, int OverlayRenderFlags, float Alpha = 1.0f);
93 void RenderTuneOverlay(CTuneTile *pTune, int w, int h, float Scale, int OverlayRenderFlags, float Alpha = 1.0f);
94 void RenderTelemap(CTeleTile *pTele, int w, int h, float Scale, ColorRGBA Color, int RenderFlags);
95 void RenderSwitchmap(CSwitchTile *pSwitch, int w, int h, float Scale, ColorRGBA Color, int RenderFlags);
96 void RenderTunemap(CTuneTile *pTune, int w, int h, float Scale, ColorRGBA Color, int RenderFlags, CTuneColorMapper *pTuneColorMapper);
97
98 void RenderDebugClip(float ClipX, float ClipY, float ClipW, float ClipH, ColorRGBA Color, float Zoom, const char *pLabel);
99};
100
101#endif
Definition mapitems.h:518
Definition mapitems.h:507
Definition mapitems.h:486
Definition mapitems.h:259
int m_NumPoints
Definition render_map.h:37
int NumPointsMax() const
Definition render_map.cpp:125
CMapBasedEnvelopePointAccess(class IMap *pMap)
Definition render_map.cpp:55
int NumPoints() const override
Definition render_map.cpp:120
int m_StartPoint
Definition render_map.h:36
CEnvPoint * m_pPoints
Definition render_map.h:39
int m_NumPointsMax
Definition render_map.h:38
int StartPoint() const
Definition render_map.cpp:115
CEnvPointBezier_upstream * m_pPointsBezierUpstream
Definition render_map.h:41
const CEnvPointBezier * GetBezier(int Index) const override
Definition render_map.cpp:141
CEnvPointBezier * m_pPointsBezier
Definition render_map.h:40
const CEnvPoint * GetPoint(int Index) const override
Definition render_map.cpp:130
void SetPointsRange(int StartPoint, int NumPoints)
Definition render_map.cpp:109
Definition mapitems.h:337
Definition render_map.h:70
void RenderTelemap(CTeleTile *pTele, int w, int h, float Scale, ColorRGBA Color, int RenderFlags)
Definition render_map.cpp:979
void Init(IGraphics *pGraphics, ITextRender *pTextRender)
Definition render_map.cpp:243
void RenderSwitchOverlay(CSwitchTile *pSwitch, int w, int h, float Scale, int OverlayRenderFlags, float Alpha=1.0f)
Definition render_map.cpp:882
static void RenderEvalEnvelope(const IEnvelopePointAccess *pPoints, std::chrono::nanoseconds TimeNanos, ColorRGBA &Result, size_t Channels)
Definition render_map.cpp:249
void RenderTeleOverlay(CTeleTile *pTele, int w, int h, float Scale, int OverlayRenderFlags, float Alpha=1.0f)
Definition render_map.cpp:756
IGraphics * Graphics()
Definition render_map.h:76
ITextRender * TextRender()
Definition render_map.h:77
void RenderTilemap(CTile *pTiles, int w, int h, float Scale, ColorRGBA Color, int RenderFlags)
Definition render_map.cpp:597
void RenderTileRectangle(int RectX, int RectY, int RectW, int RectH, unsigned char IndexIn, unsigned char IndexOut, float Scale, ColorRGBA Color, int RenderFlags)
Definition render_map.cpp:437
IGraphics * m_pGraphics
Definition render_map.h:71
void RenderSpeedupOverlay(CSpeedupTile *pSpeedup, int w, int h, float Scale, int OverlayRenderFlags, float Alpha=1.0f)
Definition render_map.cpp:803
void RenderTile(int x, int y, unsigned char Index, float Scale, ColorRGBA Color)
Definition render_map.cpp:530
void ForceRenderQuads(CQuad *pQuads, int NumQuads, int Flags, IEnvelopeEval *pEnvEval, float Alpha=1.0f)
Definition render_map.cpp:372
void RenderSwitchmap(CSwitchTile *pSwitch, int w, int h, float Scale, ColorRGBA Color, int RenderFlags)
Definition render_map.cpp:1094
void RenderTuneOverlay(CTuneTile *pTune, int w, int h, float Scale, int OverlayRenderFlags, float Alpha=1.0f)
Definition render_map.cpp:932
ITextRender * m_pTextRender
Definition render_map.h:72
void RenderTunemap(CTuneTile *pTune, int w, int h, float Scale, ColorRGBA Color, int RenderFlags, CTuneColorMapper *pTuneColorMapper)
Definition render_map.cpp:1252
void RenderDebugClip(float ClipX, float ClipY, float ClipW, float ClipH, ColorRGBA Color, float Zoom, const char *pLabel)
Definition render_map.cpp:1378
Definition mapitems.h:642
Definition mapitems.h:651
Definition mapitems.h:635
Definition mapitems.h:351
Definition render_map.h:57
uint8_t TuneNumberToColorIndex(uint8_t TuneNumber)
Definition render_map.cpp:1404
ColorRGBA TuneColorIndexToColor(uint8_t TuneColorIndex) const
Definition render_map.cpp:1418
uint8_t m_NextTuneNumberIndex
Definition render_map.h:66
std::array< uint8_t, 255 > m_aTuneNumberToColorIndex
Definition render_map.h:65
void Reset()
Definition render_map.cpp:1427
CTuneColorMapper()
Definition render_map.cpp:1399
Definition mapitems.h:668
Definition color.h:182
Definition render_interfaces.h:23
Definition render_map.h:25
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:186
Definition map.h:20
Definition textrender.h:194
@ OVERLAYRENDERFLAG_TEXT
Definition render_map.h:20
@ TILERENDERFLAG_EXTEND
Definition render_map.h:18
@ OVERLAYRENDERFLAG_EDITOR
Definition render_map.h:21
@ LAYERRENDERFLAG_OPAQUE
Definition render_map.h:15
@ LAYERRENDERFLAG_TRANSPARENT
Definition render_map.h:16