Merge pull request #9252 from Robyt3/Client-CMapLayers-Parameter-Cleanup

Remove unused parameters of `CMapLayers` functions
This commit is contained in:
heinrich5991 2024-11-15 21:52:15 +00:00 committed by GitHub
commit b83bad7c27
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 93 additions and 92 deletions

View file

@ -87,7 +87,7 @@ void CMapLayers::EnvelopeEval(int TimeOffsetMillis, int Env, ColorRGBA &Result,
CRenderTools::RenderEvalEnvelope(&EnvelopePoints, s_Time + std::chrono::nanoseconds(std::chrono::milliseconds(TimeOffsetMillis)), Result, Channels); CRenderTools::RenderEvalEnvelope(&EnvelopePoints, s_Time + std::chrono::nanoseconds(std::chrono::milliseconds(TimeOffsetMillis)), Result, Channels);
} }
void FillTmpTile(SGraphicTile *pTmpTile, SGraphicTileTexureCoords *pTmpTex, unsigned char Flags, unsigned char Index, int x, int y, const ivec2 &Offset, int Scale, CMapItemGroup *pGroup) static void FillTmpTile(SGraphicTile *pTmpTile, SGraphicTileTexureCoords *pTmpTex, unsigned char Flags, unsigned char Index, int x, int y, const ivec2 &Offset, int Scale)
{ {
if(pTmpTex) if(pTmpTex)
{ {
@ -161,10 +161,10 @@ void FillTmpTile(SGraphicTile *pTmpTile, SGraphicTileTexureCoords *pTmpTex, unsi
pTmpTile->m_BottomRight.y = y * Scale + Scale + Offset.y; pTmpTile->m_BottomRight.y = y * Scale + Scale + Offset.y;
} }
void FillTmpTileSpeedup(SGraphicTile *pTmpTile, SGraphicTileTexureCoords *pTmpTex, unsigned char Flags, unsigned char Index, int x, int y, const ivec2 &Offset, int Scale, CMapItemGroup *pGroup, short AngleRotate) static void FillTmpTileSpeedup(SGraphicTile *pTmpTile, SGraphicTileTexureCoords *pTmpTex, unsigned char Flags, int x, int y, const ivec2 &Offset, int Scale, short AngleRotate)
{ {
int Angle = AngleRotate % 360; int Angle = AngleRotate % 360;
FillTmpTile(pTmpTile, pTmpTex, Angle >= 270 ? ROTATION_270 : (Angle >= 180 ? ROTATION_180 : (Angle >= 90 ? ROTATION_90 : 0)), AngleRotate % 90, x, y, Offset, Scale, pGroup); FillTmpTile(pTmpTile, pTmpTex, Angle >= 270 ? ROTATION_270 : (Angle >= 180 ? ROTATION_180 : (Angle >= 90 ? ROTATION_90 : 0)), AngleRotate % 90, x, y, Offset, Scale);
} }
bool CMapLayers::STileLayerVisuals::Init(unsigned int Width, unsigned int Height) bool CMapLayers::STileLayerVisuals::Init(unsigned int Width, unsigned int Height)
@ -194,7 +194,7 @@ CMapLayers::STileLayerVisuals::~STileLayerVisuals()
m_pTilesOfLayer = NULL; m_pTilesOfLayer = NULL;
} }
bool AddTile(std::vector<SGraphicTile> &vTmpTiles, std::vector<SGraphicTileTexureCoords> &vTmpTileTexCoords, unsigned char Index, unsigned char Flags, int x, int y, CMapItemGroup *pGroup, bool DoTextureCoords, bool FillSpeedup = false, int AngleRotate = -1, const ivec2 &Offset = ivec2{0, 0}, int Scale = 32) static bool AddTile(std::vector<SGraphicTile> &vTmpTiles, std::vector<SGraphicTileTexureCoords> &vTmpTileTexCoords, unsigned char Index, unsigned char Flags, int x, int y, bool DoTextureCoords, bool FillSpeedup = false, int AngleRotate = -1, const ivec2 &Offset = ivec2{0, 0}, int Scale = 32)
{ {
if(Index) if(Index)
{ {
@ -208,9 +208,9 @@ bool AddTile(std::vector<SGraphicTile> &vTmpTiles, std::vector<SGraphicTileTexur
pTileTex = &TileTex; pTileTex = &TileTex;
} }
if(FillSpeedup) if(FillSpeedup)
FillTmpTileSpeedup(&Tile, pTileTex, Flags, 0, x, y, Offset, Scale, pGroup, AngleRotate); FillTmpTileSpeedup(&Tile, pTileTex, Flags, x, y, Offset, Scale, AngleRotate);
else else
FillTmpTile(&Tile, pTileTex, Flags, Index, x, y, Offset, Scale, pGroup); FillTmpTile(&Tile, pTileTex, Flags, Index, x, y, Offset, Scale);
return true; return true;
} }
@ -556,7 +556,7 @@ void CMapLayers::OnMapLoad()
if(IsSpeedupLayer && CurOverlay == 0) if(IsSpeedupLayer && CurOverlay == 0)
AddAsSpeedup = true; AddAsSpeedup = true;
if(AddTile(vtmpTiles, vtmpTileTexCoords, Index, Flags, x, y, pGroup, DoTextureCoords, AddAsSpeedup, AngleRotate)) if(AddTile(vtmpTiles, vtmpTileTexCoords, Index, Flags, x, y, DoTextureCoords, AddAsSpeedup, AngleRotate))
Visuals.m_pTilesOfLayer[y * pTMap->m_Width + x].Draw(true); Visuals.m_pTilesOfLayer[y * pTMap->m_Width + x].Draw(true);
//do the border tiles //do the border tiles
@ -565,17 +565,17 @@ void CMapLayers::OnMapLoad()
if(y == 0) if(y == 0)
{ {
Visuals.m_BorderTopLeft.SetIndexBufferByteOffset((offset_ptr32)(vtmpBorderCorners.size())); Visuals.m_BorderTopLeft.SetIndexBufferByteOffset((offset_ptr32)(vtmpBorderCorners.size()));
if(AddTile(vtmpBorderCorners, vtmpBorderCornersTexCoords, Index, Flags, 0, 0, pGroup, DoTextureCoords, AddAsSpeedup, AngleRotate, ivec2{-32, -32})) if(AddTile(vtmpBorderCorners, vtmpBorderCornersTexCoords, Index, Flags, 0, 0, DoTextureCoords, AddAsSpeedup, AngleRotate, ivec2{-32, -32}))
Visuals.m_BorderTopLeft.Draw(true); Visuals.m_BorderTopLeft.Draw(true);
} }
else if(y == pTMap->m_Height - 1) else if(y == pTMap->m_Height - 1)
{ {
Visuals.m_BorderBottomLeft.SetIndexBufferByteOffset((offset_ptr32)(vtmpBorderCorners.size())); Visuals.m_BorderBottomLeft.SetIndexBufferByteOffset((offset_ptr32)(vtmpBorderCorners.size()));
if(AddTile(vtmpBorderCorners, vtmpBorderCornersTexCoords, Index, Flags, 0, 0, pGroup, DoTextureCoords, AddAsSpeedup, AngleRotate, ivec2{-32, 0})) if(AddTile(vtmpBorderCorners, vtmpBorderCornersTexCoords, Index, Flags, 0, 0, DoTextureCoords, AddAsSpeedup, AngleRotate, ivec2{-32, 0}))
Visuals.m_BorderBottomLeft.Draw(true); Visuals.m_BorderBottomLeft.Draw(true);
} }
Visuals.m_vBorderLeft[y].SetIndexBufferByteOffset((offset_ptr32)(vtmpBorderLeftTiles.size())); Visuals.m_vBorderLeft[y].SetIndexBufferByteOffset((offset_ptr32)(vtmpBorderLeftTiles.size()));
if(AddTile(vtmpBorderLeftTiles, vtmpBorderLeftTilesTexCoords, Index, Flags, 0, y, pGroup, DoTextureCoords, AddAsSpeedup, AngleRotate, ivec2{-32, 0})) if(AddTile(vtmpBorderLeftTiles, vtmpBorderLeftTilesTexCoords, Index, Flags, 0, y, DoTextureCoords, AddAsSpeedup, AngleRotate, ivec2{-32, 0}))
Visuals.m_vBorderLeft[y].Draw(true); Visuals.m_vBorderLeft[y].Draw(true);
} }
else if(x == pTMap->m_Width - 1) else if(x == pTMap->m_Width - 1)
@ -583,29 +583,29 @@ void CMapLayers::OnMapLoad()
if(y == 0) if(y == 0)
{ {
Visuals.m_BorderTopRight.SetIndexBufferByteOffset((offset_ptr32)(vtmpBorderCorners.size())); Visuals.m_BorderTopRight.SetIndexBufferByteOffset((offset_ptr32)(vtmpBorderCorners.size()));
if(AddTile(vtmpBorderCorners, vtmpBorderCornersTexCoords, Index, Flags, 0, 0, pGroup, DoTextureCoords, AddAsSpeedup, AngleRotate, ivec2{0, -32})) if(AddTile(vtmpBorderCorners, vtmpBorderCornersTexCoords, Index, Flags, 0, 0, DoTextureCoords, AddAsSpeedup, AngleRotate, ivec2{0, -32}))
Visuals.m_BorderTopRight.Draw(true); Visuals.m_BorderTopRight.Draw(true);
} }
else if(y == pTMap->m_Height - 1) else if(y == pTMap->m_Height - 1)
{ {
Visuals.m_BorderBottomRight.SetIndexBufferByteOffset((offset_ptr32)(vtmpBorderCorners.size())); Visuals.m_BorderBottomRight.SetIndexBufferByteOffset((offset_ptr32)(vtmpBorderCorners.size()));
if(AddTile(vtmpBorderCorners, vtmpBorderCornersTexCoords, Index, Flags, 0, 0, pGroup, DoTextureCoords, AddAsSpeedup, AngleRotate, ivec2{0, 0})) if(AddTile(vtmpBorderCorners, vtmpBorderCornersTexCoords, Index, Flags, 0, 0, DoTextureCoords, AddAsSpeedup, AngleRotate, ivec2{0, 0}))
Visuals.m_BorderBottomRight.Draw(true); Visuals.m_BorderBottomRight.Draw(true);
} }
Visuals.m_vBorderRight[y].SetIndexBufferByteOffset((offset_ptr32)(vtmpBorderRightTiles.size())); Visuals.m_vBorderRight[y].SetIndexBufferByteOffset((offset_ptr32)(vtmpBorderRightTiles.size()));
if(AddTile(vtmpBorderRightTiles, vtmpBorderRightTilesTexCoords, Index, Flags, 0, y, pGroup, DoTextureCoords, AddAsSpeedup, AngleRotate, ivec2{0, 0})) if(AddTile(vtmpBorderRightTiles, vtmpBorderRightTilesTexCoords, Index, Flags, 0, y, DoTextureCoords, AddAsSpeedup, AngleRotate, ivec2{0, 0}))
Visuals.m_vBorderRight[y].Draw(true); Visuals.m_vBorderRight[y].Draw(true);
} }
if(y == 0) if(y == 0)
{ {
Visuals.m_vBorderTop[x].SetIndexBufferByteOffset((offset_ptr32)(vtmpBorderTopTiles.size())); Visuals.m_vBorderTop[x].SetIndexBufferByteOffset((offset_ptr32)(vtmpBorderTopTiles.size()));
if(AddTile(vtmpBorderTopTiles, vtmpBorderTopTilesTexCoords, Index, Flags, x, 0, pGroup, DoTextureCoords, AddAsSpeedup, AngleRotate, ivec2{0, -32})) if(AddTile(vtmpBorderTopTiles, vtmpBorderTopTilesTexCoords, Index, Flags, x, 0, DoTextureCoords, AddAsSpeedup, AngleRotate, ivec2{0, -32}))
Visuals.m_vBorderTop[x].Draw(true); Visuals.m_vBorderTop[x].Draw(true);
} }
else if(y == pTMap->m_Height - 1) else if(y == pTMap->m_Height - 1)
{ {
Visuals.m_vBorderBottom[x].SetIndexBufferByteOffset((offset_ptr32)(vtmpBorderBottomTiles.size())); Visuals.m_vBorderBottom[x].SetIndexBufferByteOffset((offset_ptr32)(vtmpBorderBottomTiles.size()));
if(AddTile(vtmpBorderBottomTiles, vtmpBorderBottomTilesTexCoords, Index, Flags, x, 0, pGroup, DoTextureCoords, AddAsSpeedup, AngleRotate, ivec2{0, 0})) if(AddTile(vtmpBorderBottomTiles, vtmpBorderBottomTilesTexCoords, Index, Flags, x, 0, DoTextureCoords, AddAsSpeedup, AngleRotate, ivec2{0, 0}))
Visuals.m_vBorderBottom[x].Draw(true); Visuals.m_vBorderBottom[x].Draw(true);
} }
} }
@ -615,7 +615,7 @@ void CMapLayers::OnMapLoad()
if(IsGameLayer) if(IsGameLayer)
{ {
Visuals.m_BorderKillTile.SetIndexBufferByteOffset((offset_ptr32)(vtmpTiles.size())); Visuals.m_BorderKillTile.SetIndexBufferByteOffset((offset_ptr32)(vtmpTiles.size()));
if(AddTile(vtmpTiles, vtmpTileTexCoords, TILE_DEATH, 0, 0, 0, pGroup, DoTextureCoords)) if(AddTile(vtmpTiles, vtmpTileTexCoords, TILE_DEATH, 0, 0, 0, DoTextureCoords))
Visuals.m_BorderKillTile.Draw(true); Visuals.m_BorderKillTile.Draw(true);
} }
@ -838,7 +838,7 @@ void CMapLayers::OnMapLoad()
} }
} }
void CMapLayers::RenderTileLayer(int LayerIndex, const ColorRGBA &Color, CMapItemLayerTilemap *pTileLayer, CMapItemGroup *pGroup) void CMapLayers::RenderTileLayer(int LayerIndex, const ColorRGBA &Color)
{ {
STileLayerVisuals &Visuals = *m_vpTileLayerVisuals[LayerIndex]; STileLayerVisuals &Visuals = *m_vpTileLayerVisuals[LayerIndex];
if(Visuals.m_BufferContainerIndex == -1) if(Visuals.m_BufferContainerIndex == -1)
@ -865,14 +865,14 @@ void CMapLayers::RenderTileLayer(int LayerIndex, const ColorRGBA &Color, CMapIte
Y0 = 0; Y0 = 0;
DrawBorder = true; DrawBorder = true;
} }
if(X1 > pTileLayer->m_Width) if(X1 > (int)Visuals.m_Width)
{ {
X1 = pTileLayer->m_Width; X1 = Visuals.m_Width;
DrawBorder = true; DrawBorder = true;
} }
if(Y1 > pTileLayer->m_Height) if(Y1 > (int)Visuals.m_Height)
{ {
Y1 = pTileLayer->m_Height; Y1 = Visuals.m_Height;
DrawBorder = true; DrawBorder = true;
} }
@ -881,9 +881,9 @@ void CMapLayers::RenderTileLayer(int LayerIndex, const ColorRGBA &Color, CMapIte
DrawLayer = false; DrawLayer = false;
if(Y1 <= 0) if(Y1 <= 0)
DrawLayer = false; DrawLayer = false;
if(X0 >= pTileLayer->m_Width) if(X0 >= (int)Visuals.m_Width)
DrawLayer = false; DrawLayer = false;
if(Y0 >= pTileLayer->m_Height) if(Y0 >= (int)Visuals.m_Height)
DrawLayer = false; DrawLayer = false;
if(DrawLayer) if(DrawLayer)
@ -905,13 +905,13 @@ void CMapLayers::RenderTileLayer(int LayerIndex, const ColorRGBA &Color, CMapIte
continue; continue;
int XR = X1 - 1; int XR = X1 - 1;
dbg_assert(Visuals.m_pTilesOfLayer[y * pTileLayer->m_Width + XR].IndexBufferByteOffset() >= Visuals.m_pTilesOfLayer[y * pTileLayer->m_Width + X0].IndexBufferByteOffset(), "Tile count wrong."); dbg_assert(Visuals.m_pTilesOfLayer[y * Visuals.m_Width + XR].IndexBufferByteOffset() >= Visuals.m_pTilesOfLayer[y * Visuals.m_Width + X0].IndexBufferByteOffset(), "Tile count wrong.");
unsigned int NumVertices = ((Visuals.m_pTilesOfLayer[y * pTileLayer->m_Width + XR].IndexBufferByteOffset() - Visuals.m_pTilesOfLayer[y * pTileLayer->m_Width + X0].IndexBufferByteOffset()) / sizeof(unsigned int)) + (Visuals.m_pTilesOfLayer[y * pTileLayer->m_Width + XR].DoDraw() ? 6lu : 0lu); unsigned int NumVertices = ((Visuals.m_pTilesOfLayer[y * Visuals.m_Width + XR].IndexBufferByteOffset() - Visuals.m_pTilesOfLayer[y * Visuals.m_Width + X0].IndexBufferByteOffset()) / sizeof(unsigned int)) + (Visuals.m_pTilesOfLayer[y * Visuals.m_Width + XR].DoDraw() ? 6lu : 0lu);
if(NumVertices) if(NumVertices)
{ {
s_vpIndexOffsets.push_back((offset_ptr_size)Visuals.m_pTilesOfLayer[y * pTileLayer->m_Width + X0].IndexBufferByteOffset()); s_vpIndexOffsets.push_back((offset_ptr_size)Visuals.m_pTilesOfLayer[y * Visuals.m_Width + X0].IndexBufferByteOffset());
s_vDrawCounts.push_back(NumVertices); s_vDrawCounts.push_back(NumVertices);
} }
} }
@ -924,10 +924,10 @@ void CMapLayers::RenderTileLayer(int LayerIndex, const ColorRGBA &Color, CMapIte
} }
if(DrawBorder) if(DrawBorder)
RenderTileBorder(LayerIndex, Color, pTileLayer, pGroup, BorderX0, BorderY0, BorderX1, BorderY1); RenderTileBorder(LayerIndex, Color, BorderX0, BorderY0, BorderX1, BorderY1);
} }
void CMapLayers::RenderTileBorder(int LayerIndex, const ColorRGBA &Color, CMapItemLayerTilemap *pTileLayer, CMapItemGroup *pGroup, int BorderX0, int BorderY0, int BorderX1, int BorderY1) void CMapLayers::RenderTileBorder(int LayerIndex, const ColorRGBA &Color, int BorderX0, int BorderY0, int BorderX1, int BorderY1)
{ {
STileLayerVisuals &Visuals = *m_vpTileLayerVisuals[LayerIndex]; STileLayerVisuals &Visuals = *m_vpTileLayerVisuals[LayerIndex];
@ -940,10 +940,10 @@ void CMapLayers::RenderTileBorder(int LayerIndex, const ColorRGBA &Color, CMapIt
X0 = 0; X0 = 0;
if(Y0 < 0) if(Y0 < 0)
Y0 = 0; Y0 = 0;
if(X1 > pTileLayer->m_Width) if(X1 > (int)Visuals.m_Width)
X1 = pTileLayer->m_Width; X1 = (int)Visuals.m_Width;
if(Y1 > pTileLayer->m_Height) if(Y1 > (int)Visuals.m_Height)
Y1 = pTileLayer->m_Height; Y1 = (int)Visuals.m_Height;
// corners // corners
if(BorderX0 < 0) if(BorderX0 < 0)
@ -963,22 +963,22 @@ void CMapLayers::RenderTileBorder(int LayerIndex, const ColorRGBA &Color, CMapIt
Graphics()->RenderBorderTiles(Visuals.m_BufferContainerIndex, Color, (offset_ptr_size)Visuals.m_BorderTopLeft.IndexBufferByteOffset(), Offset, Scale, 1); Graphics()->RenderBorderTiles(Visuals.m_BufferContainerIndex, Color, (offset_ptr_size)Visuals.m_BorderTopLeft.IndexBufferByteOffset(), Offset, Scale, 1);
} }
} }
if(BorderY1 > pTileLayer->m_Height) if(BorderY1 > (int)Visuals.m_Height)
{ {
if(Visuals.m_BorderBottomLeft.DoDraw()) if(Visuals.m_BorderBottomLeft.DoDraw())
{ {
vec2 Offset; vec2 Offset;
Offset.x = 0; Offset.x = 0;
Offset.y = pTileLayer->m_Height * 32.0f; Offset.y = Visuals.m_Height * 32.0f;
vec2 Scale; vec2 Scale;
Scale.x = absolute(BorderX0); Scale.x = absolute(BorderX0);
Scale.y = BorderY1 - pTileLayer->m_Height; Scale.y = BorderY1 - Visuals.m_Height;
Graphics()->RenderBorderTiles(Visuals.m_BufferContainerIndex, Color, (offset_ptr_size)Visuals.m_BorderBottomLeft.IndexBufferByteOffset(), Offset, Scale, 1); Graphics()->RenderBorderTiles(Visuals.m_BufferContainerIndex, Color, (offset_ptr_size)Visuals.m_BorderBottomLeft.IndexBufferByteOffset(), Offset, Scale, 1);
} }
} }
} }
if(BorderX1 > pTileLayer->m_Width) if(BorderX1 > (int)Visuals.m_Width)
{ {
// Draw corners on right side // Draw corners on right side
if(BorderY0 < 0) if(BorderY0 < 0)
@ -986,44 +986,44 @@ void CMapLayers::RenderTileBorder(int LayerIndex, const ColorRGBA &Color, CMapIt
if(Visuals.m_BorderTopRight.DoDraw()) if(Visuals.m_BorderTopRight.DoDraw())
{ {
vec2 Offset; vec2 Offset;
Offset.x = pTileLayer->m_Width * 32.0f; Offset.x = Visuals.m_Width * 32.0f;
Offset.y = 0; Offset.y = 0;
vec2 Scale; vec2 Scale;
Scale.x = BorderX1 - pTileLayer->m_Width; Scale.x = BorderX1 - Visuals.m_Width;
Scale.y = absolute(BorderY0); Scale.y = absolute(BorderY0);
Graphics()->RenderBorderTiles(Visuals.m_BufferContainerIndex, Color, (offset_ptr_size)Visuals.m_BorderTopRight.IndexBufferByteOffset(), Offset, Scale, 1); Graphics()->RenderBorderTiles(Visuals.m_BufferContainerIndex, Color, (offset_ptr_size)Visuals.m_BorderTopRight.IndexBufferByteOffset(), Offset, Scale, 1);
} }
} }
if(BorderY1 > pTileLayer->m_Height) if(BorderY1 > (int)Visuals.m_Height)
{ {
if(Visuals.m_BorderBottomRight.DoDraw()) if(Visuals.m_BorderBottomRight.DoDraw())
{ {
vec2 Offset; vec2 Offset;
Offset.x = pTileLayer->m_Width * 32.0f; Offset.x = Visuals.m_Width * 32.0f;
Offset.y = pTileLayer->m_Height * 32.0f; Offset.y = Visuals.m_Height * 32.0f;
vec2 Scale; vec2 Scale;
Scale.x = BorderX1 - pTileLayer->m_Width; Scale.x = BorderX1 - Visuals.m_Width;
Scale.y = BorderY1 - pTileLayer->m_Height; Scale.y = BorderY1 - Visuals.m_Height;
Graphics()->RenderBorderTiles(Visuals.m_BufferContainerIndex, Color, (offset_ptr_size)Visuals.m_BorderBottomRight.IndexBufferByteOffset(), Offset, Scale, 1); Graphics()->RenderBorderTiles(Visuals.m_BufferContainerIndex, Color, (offset_ptr_size)Visuals.m_BorderBottomRight.IndexBufferByteOffset(), Offset, Scale, 1);
} }
} }
} }
if(BorderX1 > pTileLayer->m_Width) if(BorderX1 > (int)Visuals.m_Width)
{ {
// Draw right border // Draw right border
if(Y0 < pTileLayer->m_Height && Y1 > 0) if(Y0 < (int)Visuals.m_Height && Y1 > 0)
{ {
int YB = Y1 - 1; int YB = Y1 - 1;
unsigned int DrawNum = ((Visuals.m_vBorderRight[YB].IndexBufferByteOffset() - Visuals.m_vBorderRight[Y0].IndexBufferByteOffset()) / (sizeof(unsigned int) * 6)) + (Visuals.m_vBorderRight[YB].DoDraw() ? 1lu : 0lu); unsigned int DrawNum = ((Visuals.m_vBorderRight[YB].IndexBufferByteOffset() - Visuals.m_vBorderRight[Y0].IndexBufferByteOffset()) / (sizeof(unsigned int) * 6)) + (Visuals.m_vBorderRight[YB].DoDraw() ? 1lu : 0lu);
offset_ptr_size pOffset = (offset_ptr_size)Visuals.m_vBorderRight[Y0].IndexBufferByteOffset(); offset_ptr_size pOffset = (offset_ptr_size)Visuals.m_vBorderRight[Y0].IndexBufferByteOffset();
vec2 Offset; vec2 Offset;
Offset.x = 32.f * pTileLayer->m_Width; Offset.x = 32.f * Visuals.m_Width;
Offset.y = 0.f; Offset.y = 0.f;
vec2 Scale; vec2 Scale;
Scale.x = BorderX1 - pTileLayer->m_Width; Scale.x = BorderX1 - Visuals.m_Width;
Scale.y = 1.f; Scale.y = 1.f;
Graphics()->RenderBorderTiles(Visuals.m_BufferContainerIndex, Color, pOffset, Offset, Scale, DrawNum); Graphics()->RenderBorderTiles(Visuals.m_BufferContainerIndex, Color, pOffset, Offset, Scale, DrawNum);
} }
@ -1031,7 +1031,7 @@ void CMapLayers::RenderTileBorder(int LayerIndex, const ColorRGBA &Color, CMapIt
if(BorderX0 < 0) if(BorderX0 < 0)
{ {
// Draw left border // Draw left border
if(Y0 < pTileLayer->m_Height && Y1 > 0) if(Y0 < (int)Visuals.m_Height && Y1 > 0)
{ {
int YB = Y1 - 1; int YB = Y1 - 1;
unsigned int DrawNum = ((Visuals.m_vBorderLeft[YB].IndexBufferByteOffset() - Visuals.m_vBorderLeft[Y0].IndexBufferByteOffset()) / (sizeof(unsigned int) * 6)) + (Visuals.m_vBorderLeft[YB].DoDraw() ? 1lu : 0lu); unsigned int DrawNum = ((Visuals.m_vBorderLeft[YB].IndexBufferByteOffset() - Visuals.m_vBorderLeft[Y0].IndexBufferByteOffset()) / (sizeof(unsigned int) * 6)) + (Visuals.m_vBorderLeft[YB].DoDraw() ? 1lu : 0lu);
@ -1048,7 +1048,7 @@ void CMapLayers::RenderTileBorder(int LayerIndex, const ColorRGBA &Color, CMapIt
if(BorderY0 < 0) if(BorderY0 < 0)
{ {
// Draw top border // Draw top border
if(X0 < pTileLayer->m_Width && X1 > 0) if(X0 < (int)Visuals.m_Width && X1 > 0)
{ {
int XR = X1 - 1; int XR = X1 - 1;
unsigned int DrawNum = ((Visuals.m_vBorderTop[XR].IndexBufferByteOffset() - Visuals.m_vBorderTop[X0].IndexBufferByteOffset()) / (sizeof(unsigned int) * 6)) + (Visuals.m_vBorderTop[XR].DoDraw() ? 1lu : 0lu); unsigned int DrawNum = ((Visuals.m_vBorderTop[XR].IndexBufferByteOffset() - Visuals.m_vBorderTop[X0].IndexBufferByteOffset()) / (sizeof(unsigned int) * 6)) + (Visuals.m_vBorderTop[XR].DoDraw() ? 1lu : 0lu);
@ -1062,26 +1062,26 @@ void CMapLayers::RenderTileBorder(int LayerIndex, const ColorRGBA &Color, CMapIt
Graphics()->RenderBorderTiles(Visuals.m_BufferContainerIndex, Color, pOffset, Offset, Scale, DrawNum); Graphics()->RenderBorderTiles(Visuals.m_BufferContainerIndex, Color, pOffset, Offset, Scale, DrawNum);
} }
} }
if(BorderY1 > pTileLayer->m_Height) if(BorderY1 > (int)Visuals.m_Height)
{ {
// Draw bottom border // Draw bottom border
if(X0 < pTileLayer->m_Width && X1 > 0) if(X0 < (int)Visuals.m_Width && X1 > 0)
{ {
int XR = X1 - 1; int XR = X1 - 1;
unsigned int DrawNum = ((Visuals.m_vBorderBottom[XR].IndexBufferByteOffset() - Visuals.m_vBorderBottom[X0].IndexBufferByteOffset()) / (sizeof(unsigned int) * 6)) + (Visuals.m_vBorderBottom[XR].DoDraw() ? 1lu : 0lu); unsigned int DrawNum = ((Visuals.m_vBorderBottom[XR].IndexBufferByteOffset() - Visuals.m_vBorderBottom[X0].IndexBufferByteOffset()) / (sizeof(unsigned int) * 6)) + (Visuals.m_vBorderBottom[XR].DoDraw() ? 1lu : 0lu);
offset_ptr_size pOffset = (offset_ptr_size)Visuals.m_vBorderBottom[X0].IndexBufferByteOffset(); offset_ptr_size pOffset = (offset_ptr_size)Visuals.m_vBorderBottom[X0].IndexBufferByteOffset();
vec2 Offset; vec2 Offset;
Offset.x = 0.f; Offset.x = 0.f;
Offset.y = 32.f * pTileLayer->m_Height; Offset.y = 32.f * Visuals.m_Height;
vec2 Scale; vec2 Scale;
Scale.x = 1; Scale.x = 1;
Scale.y = BorderY1 - pTileLayer->m_Height; Scale.y = BorderY1 - Visuals.m_Height;
Graphics()->RenderBorderTiles(Visuals.m_BufferContainerIndex, Color, pOffset, Offset, Scale, DrawNum); Graphics()->RenderBorderTiles(Visuals.m_BufferContainerIndex, Color, pOffset, Offset, Scale, DrawNum);
} }
} }
} }
void CMapLayers::RenderKillTileBorder(int LayerIndex, const ColorRGBA &Color, CMapItemLayerTilemap *pTileLayer, CMapItemGroup *pGroup) void CMapLayers::RenderKillTileBorder(int LayerIndex, const ColorRGBA &Color)
{ {
STileLayerVisuals &Visuals = *m_vpTileLayerVisuals[LayerIndex]; STileLayerVisuals &Visuals = *m_vpTileLayerVisuals[LayerIndex];
if(Visuals.m_BufferContainerIndex == -1) if(Visuals.m_BufferContainerIndex == -1)
@ -1101,9 +1101,9 @@ void CMapLayers::RenderKillTileBorder(int LayerIndex, const ColorRGBA &Color, CM
DrawBorder = true; DrawBorder = true;
if(BorderY0 < -201) if(BorderY0 < -201)
DrawBorder = true; DrawBorder = true;
if(BorderX1 > pTileLayer->m_Width + 201) if(BorderX1 > (int)Visuals.m_Width + 201)
DrawBorder = true; DrawBorder = true;
if(BorderY1 > pTileLayer->m_Height + 201) if(BorderY1 > (int)Visuals.m_Height + 201)
DrawBorder = true; DrawBorder = true;
if(!DrawBorder) if(!DrawBorder)
@ -1115,19 +1115,19 @@ void CMapLayers::RenderKillTileBorder(int LayerIndex, const ColorRGBA &Color, CM
BorderX0 = -300; BorderX0 = -300;
if(BorderY0 < -300) if(BorderY0 < -300)
BorderY0 = -300; BorderY0 = -300;
if(BorderX1 >= pTileLayer->m_Width + 300) if(BorderX1 >= (int)Visuals.m_Width + 300)
BorderX1 = pTileLayer->m_Width + 299; BorderX1 = (int)Visuals.m_Width + 299;
if(BorderY1 >= pTileLayer->m_Height + 300) if(BorderY1 >= (int)Visuals.m_Height + 300)
BorderY1 = pTileLayer->m_Height + 299; BorderY1 = (int)Visuals.m_Height + 299;
if(BorderX1 < -300) if(BorderX1 < -300)
BorderX1 = -300; BorderX1 = -300;
if(BorderY1 < -300) if(BorderY1 < -300)
BorderY1 = -300; BorderY1 = -300;
if(BorderX0 >= pTileLayer->m_Width + 300) if(BorderX0 >= (int)Visuals.m_Width + 300)
BorderX0 = pTileLayer->m_Width + 299; BorderX0 = (int)Visuals.m_Width + 299;
if(BorderY0 >= pTileLayer->m_Height + 300) if(BorderY0 >= (int)Visuals.m_Height + 300)
BorderY0 = pTileLayer->m_Height + 299; BorderY0 = (int)Visuals.m_Height + 299;
// Draw left kill tile border // Draw left kill tile border
if(BorderX0 < -201) if(BorderX0 < -201)
@ -1151,39 +1151,39 @@ void CMapLayers::RenderKillTileBorder(int LayerIndex, const ColorRGBA &Color, CM
Offset.x = maximum(BorderX0, -201) * 32.0f; Offset.x = maximum(BorderX0, -201) * 32.0f;
Offset.y = 32.f * BorderY0; Offset.y = 32.f * BorderY0;
vec2 Scale; vec2 Scale;
Scale.x = minimum(BorderX1, pTileLayer->m_Width + 201) - maximum(BorderX0, -201); Scale.x = minimum(BorderX1, (int)Visuals.m_Width + 201) - maximum(BorderX0, -201);
Scale.y = -201 - BorderY0; Scale.y = -201 - BorderY0;
Graphics()->RenderBorderTiles(Visuals.m_BufferContainerIndex, Color, pOffset, Offset, Scale, DrawNum); Graphics()->RenderBorderTiles(Visuals.m_BufferContainerIndex, Color, pOffset, Offset, Scale, DrawNum);
} }
// Draw right kill tile border // Draw right kill tile border
if(BorderX1 > pTileLayer->m_Width + 201) if(BorderX1 > (int)Visuals.m_Width + 201)
{ {
unsigned int DrawNum = 1; unsigned int DrawNum = 1;
offset_ptr_size pOffset = (offset_ptr_size)Visuals.m_BorderKillTile.IndexBufferByteOffset(); offset_ptr_size pOffset = (offset_ptr_size)Visuals.m_BorderKillTile.IndexBufferByteOffset();
vec2 Offset; vec2 Offset;
Offset.x = 32.0f * (pTileLayer->m_Width + 201); Offset.x = 32.0f * (Visuals.m_Width + 201);
Offset.y = 32.0f * BorderY0; Offset.y = 32.0f * BorderY0;
vec2 Scale; vec2 Scale;
Scale.x = BorderX1 - (pTileLayer->m_Width + 201); Scale.x = BorderX1 - (Visuals.m_Width + 201);
Scale.y = BorderY1 - BorderY0; Scale.y = BorderY1 - BorderY0;
Graphics()->RenderBorderTiles(Visuals.m_BufferContainerIndex, Color, pOffset, Offset, Scale, DrawNum); Graphics()->RenderBorderTiles(Visuals.m_BufferContainerIndex, Color, pOffset, Offset, Scale, DrawNum);
} }
// Draw bottom kill tile border // Draw bottom kill tile border
if(BorderY1 > pTileLayer->m_Height + 201) if(BorderY1 > (int)Visuals.m_Height + 201)
{ {
unsigned int DrawNum = 1; unsigned int DrawNum = 1;
offset_ptr_size pOffset = (offset_ptr_size)Visuals.m_BorderKillTile.IndexBufferByteOffset(); offset_ptr_size pOffset = (offset_ptr_size)Visuals.m_BorderKillTile.IndexBufferByteOffset();
vec2 Offset; vec2 Offset;
Offset.x = maximum(BorderX0, -201) * 32.0f; Offset.x = maximum(BorderX0, -201) * 32.0f;
Offset.y = 32.0f * (pTileLayer->m_Height + 201); Offset.y = 32.0f * (Visuals.m_Height + 201);
vec2 Scale; vec2 Scale;
Scale.x = minimum(BorderX1, pTileLayer->m_Width + 201) - maximum(BorderX0, -201); Scale.x = minimum(BorderX1, (int)Visuals.m_Width + 201) - maximum(BorderX0, -201);
Scale.y = BorderY1 - (pTileLayer->m_Height + 201); Scale.y = BorderY1 - (Visuals.m_Height + 201);
Graphics()->RenderBorderTiles(Visuals.m_BufferContainerIndex, Color, pOffset, Offset, Scale, DrawNum); Graphics()->RenderBorderTiles(Visuals.m_BufferContainerIndex, Color, pOffset, Offset, Scale, DrawNum);
} }
} }
void CMapLayers::RenderQuadLayer(int LayerIndex, CMapItemLayerQuads *pQuadLayer, CMapItemGroup *pGroup, bool Force) void CMapLayers::RenderQuadLayer(int LayerIndex, CMapItemLayerQuads *pQuadLayer, bool Force)
{ {
SQuadLayerVisuals &Visuals = *m_vpQuadLayerVisuals[LayerIndex]; SQuadLayerVisuals &Visuals = *m_vpQuadLayerVisuals[LayerIndex];
if(Visuals.m_BufferContainerIndex == -1) if(Visuals.m_BufferContainerIndex == -1)
@ -1595,9 +1595,9 @@ void CMapLayers::OnRender()
// slow blinking to hint that it's not a part of the map // slow blinking to hint that it's not a part of the map
double Seconds = time_get() / (double)time_freq(); double Seconds = time_get() / (double)time_freq();
ColorRGBA ColorHint = ColorRGBA(1.0f, 1.0f, 1.0f, 0.3 + 0.7 * (1.0 + std::sin(2 * (double)pi * Seconds / 3)) / 2); ColorRGBA ColorHint = ColorRGBA(1.0f, 1.0f, 1.0f, 0.3 + 0.7 * (1.0 + std::sin(2 * (double)pi * Seconds / 3)) / 2);
RenderKillTileBorder(TileLayerCounter - 1, Color.Multiply(ColorHint), pTMap, pGroup); RenderKillTileBorder(TileLayerCounter - 1, Color.Multiply(ColorHint));
} }
RenderTileLayer(TileLayerCounter - 1, Color, pTMap, pGroup); RenderTileLayer(TileLayerCounter - 1, Color);
} }
} }
} }
@ -1625,7 +1625,7 @@ void CMapLayers::OnRender()
} }
else else
{ {
RenderQuadLayer(QuadLayerCounter - 1, pQLayer, pGroup, true); RenderQuadLayer(QuadLayerCounter - 1, pQLayer, true);
} }
} }
} }
@ -1638,7 +1638,7 @@ void CMapLayers::OnRender()
} }
else else
{ {
RenderQuadLayer(QuadLayerCounter - 1, pQLayer, pGroup, false); RenderQuadLayer(QuadLayerCounter - 1, pQLayer, false);
} }
} }
} }
@ -1664,7 +1664,7 @@ void CMapLayers::OnRender()
else else
{ {
Graphics()->BlendNormal(); Graphics()->BlendNormal();
RenderTileLayer(TileLayerCounter - 1, Color, pTMap, pGroup); RenderTileLayer(TileLayerCounter - 1, Color);
} }
} }
} }
@ -1690,13 +1690,13 @@ void CMapLayers::OnRender()
else else
{ {
Graphics()->BlendNormal(); Graphics()->BlendNormal();
RenderTileLayer(TileLayerCounter - 3, Color, pTMap, pGroup); RenderTileLayer(TileLayerCounter - 3, Color);
if(g_Config.m_ClTextEntities) if(g_Config.m_ClTextEntities)
{ {
Graphics()->TextureSet(m_pImages->GetOverlayTop()); Graphics()->TextureSet(m_pImages->GetOverlayTop());
RenderTileLayer(TileLayerCounter - 2, Color, pTMap, pGroup); RenderTileLayer(TileLayerCounter - 2, Color);
Graphics()->TextureSet(m_pImages->GetOverlayBottom()); Graphics()->TextureSet(m_pImages->GetOverlayBottom());
RenderTileLayer(TileLayerCounter - 1, Color, pTMap, pGroup); RenderTileLayer(TileLayerCounter - 1, Color);
} }
} }
} }
@ -1723,11 +1723,11 @@ void CMapLayers::OnRender()
else else
{ {
Graphics()->BlendNormal(); Graphics()->BlendNormal();
RenderTileLayer(TileLayerCounter - 2, Color, pTMap, pGroup); RenderTileLayer(TileLayerCounter - 2, Color);
if(g_Config.m_ClTextEntities) if(g_Config.m_ClTextEntities)
{ {
Graphics()->TextureSet(m_pImages->GetOverlayCenter()); Graphics()->TextureSet(m_pImages->GetOverlayCenter());
RenderTileLayer(TileLayerCounter - 1, Color, pTMap, pGroup); RenderTileLayer(TileLayerCounter - 1, Color);
} }
} }
} }
@ -1758,15 +1758,15 @@ void CMapLayers::OnRender()
// draw arrow -- clamp to the edge of the arrow image // draw arrow -- clamp to the edge of the arrow image
Graphics()->WrapClamp(); Graphics()->WrapClamp();
Graphics()->TextureSet(m_pImages->GetSpeedupArrow()); Graphics()->TextureSet(m_pImages->GetSpeedupArrow());
RenderTileLayer(TileLayerCounter - 3, Color, pTMap, pGroup); RenderTileLayer(TileLayerCounter - 3, Color);
Graphics()->WrapNormal(); Graphics()->WrapNormal();
if(g_Config.m_ClTextEntities) if(g_Config.m_ClTextEntities)
{ {
Graphics()->TextureSet(m_pImages->GetOverlayBottom()); Graphics()->TextureSet(m_pImages->GetOverlayBottom());
RenderTileLayer(TileLayerCounter - 2, Color, pTMap, pGroup); RenderTileLayer(TileLayerCounter - 2, Color);
Graphics()->TextureSet(m_pImages->GetOverlayTop()); Graphics()->TextureSet(m_pImages->GetOverlayTop());
RenderTileLayer(TileLayerCounter - 1, Color, pTMap, pGroup); RenderTileLayer(TileLayerCounter - 1, Color);
} }
} }
} }
@ -1792,7 +1792,7 @@ void CMapLayers::OnRender()
else else
{ {
Graphics()->BlendNormal(); Graphics()->BlendNormal();
RenderTileLayer(TileLayerCounter - 1, Color, pTMap, pGroup); RenderTileLayer(TileLayerCounter - 1, Color);
} }
} }
} }

View file

@ -149,12 +149,13 @@ public:
virtual void OnRender() override; virtual void OnRender() override;
virtual void OnMapLoad() override; virtual void OnMapLoad() override;
void RenderTileLayer(int LayerIndex, const ColorRGBA &Color, CMapItemLayerTilemap *pTileLayer, CMapItemGroup *pGroup);
void RenderTileBorder(int LayerIndex, const ColorRGBA &Color, CMapItemLayerTilemap *pTileLayer, CMapItemGroup *pGroup, int BorderX0, int BorderY0, int BorderX1, int BorderY1);
void RenderKillTileBorder(int LayerIndex, const ColorRGBA &Color, CMapItemLayerTilemap *pTileLayer, CMapItemGroup *pGroup);
void RenderQuadLayer(int LayerIndex, CMapItemLayerQuads *pQuadLayer, CMapItemGroup *pGroup, bool ForceRender = false);
static void EnvelopeEval(int TimeOffsetMillis, int Env, ColorRGBA &Result, size_t Channels, void *pUser); static void EnvelopeEval(int TimeOffsetMillis, int Env, ColorRGBA &Result, size_t Channels, void *pUser);
private:
void RenderTileLayer(int LayerIndex, const ColorRGBA &Color);
void RenderTileBorder(int LayerIndex, const ColorRGBA &Color, int BorderX0, int BorderY0, int BorderX1, int BorderY1);
void RenderKillTileBorder(int LayerIndex, const ColorRGBA &Color);
void RenderQuadLayer(int LayerIndex, CMapItemLayerQuads *pQuadLayer, bool ForceRender = false);
}; };
#endif #endif