mirror of
https://github.com/ddnet/ddnet.git
synced 2024-11-10 10:08:18 +00:00
Properly done cl_show_entities
This commit is contained in:
parent
83318d0583
commit
d0ed9612e1
|
@ -195,7 +195,7 @@ void CMapLayers::OnRender()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if((Render && !IsGameLayer && !IsFrontLayer && !IsTeleLayer && !IsSwitchLayer && !IsSpeedupLayer && (!g_Config.m_ClShowEntities || !g_Config.m_ClDDRaceCheats)) || ((g_Config.m_ClShowEntities && g_Config.m_ClDDRaceCheats) && (IsGameLayer || IsFrontLayer || IsTeleLayer || IsSwitchLayer || IsSpeedupLayer)))
|
if((Render && !IsGameLayer && (!g_Config.m_ClShowEntities || !g_Config.m_ClDDRaceCheats)) || ((g_Config.m_ClShowEntities && g_Config.m_ClDDRaceCheats) && IsGameLayer))
|
||||||
{
|
{
|
||||||
//layershot_begin();
|
//layershot_begin();
|
||||||
|
|
||||||
|
@ -237,6 +237,57 @@ void CMapLayers::OnRender()
|
||||||
|
|
||||||
//layershot_end();
|
//layershot_end();
|
||||||
}
|
}
|
||||||
|
else if((g_Config.m_ClShowEntities && g_Config.m_ClDDRaceCheats) && IsFrontLayer)
|
||||||
|
{
|
||||||
|
CMapItemLayerTilemap *pTMap = (CMapItemLayerTilemap *)pLayer;
|
||||||
|
Graphics()->TextureSet(m_pClient->m_pMapimages->GetEntities());
|
||||||
|
|
||||||
|
CTile *pFrontTiles = (CTile *)m_pLayers->Map()->GetData(pTMap->m_Front);
|
||||||
|
Graphics()->BlendNone();
|
||||||
|
vec4 Color = vec4(pTMap->m_Color.r/255.0f, pTMap->m_Color.g/255.0f, pTMap->m_Color.b/255.0f, pTMap->m_Color.a/255.0f);
|
||||||
|
RenderTools()->RenderTilemap(pFrontTiles, pTMap->m_Width, pTMap->m_Height, 32.0f, Color, TILERENDERFLAG_EXTEND|LAYERRENDERFLAG_OPAQUE);
|
||||||
|
Graphics()->BlendNormal();
|
||||||
|
RenderTools()->RenderTilemap(pFrontTiles, pTMap->m_Width, pTMap->m_Height, 32.0f, Color, TILERENDERFLAG_EXTEND|LAYERRENDERFLAG_TRANSPARENT);
|
||||||
|
}
|
||||||
|
else if((g_Config.m_ClShowEntities && g_Config.m_ClDDRaceCheats) && IsSwitchLayer)
|
||||||
|
{
|
||||||
|
CMapItemLayerTilemap *pTMap = (CMapItemLayerTilemap *)pLayer;
|
||||||
|
Graphics()->TextureSet(m_pClient->m_pMapimages->GetEntities());
|
||||||
|
|
||||||
|
CSwitchTile *pSwitchTiles = (CSwitchTile *)m_pLayers->Map()->GetData(pTMap->m_Switch);
|
||||||
|
Graphics()->BlendNone();
|
||||||
|
vec4 Color = vec4(pTMap->m_Color.r/255.0f, pTMap->m_Color.g/255.0f, pTMap->m_Color.b/255.0f, pTMap->m_Color.a/255.0f);
|
||||||
|
RenderTools()->RenderSwitchmap(pSwitchTiles, pTMap->m_Width, pTMap->m_Height, 32.0f, Color, TILERENDERFLAG_EXTEND|LAYERRENDERFLAG_OPAQUE);
|
||||||
|
Graphics()->BlendNormal();
|
||||||
|
RenderTools()->RenderSwitchmap(pSwitchTiles, pTMap->m_Width, pTMap->m_Height, 32.0f, Color, TILERENDERFLAG_EXTEND|LAYERRENDERFLAG_TRANSPARENT);
|
||||||
|
RenderTools()->RenderSwitchOverlay(pSwitchTiles, pTMap->m_Width, pTMap->m_Height, 32.0f);
|
||||||
|
}
|
||||||
|
else if((g_Config.m_ClShowEntities && g_Config.m_ClDDRaceCheats) && IsTeleLayer)
|
||||||
|
{
|
||||||
|
CMapItemLayerTilemap *pTMap = (CMapItemLayerTilemap *)pLayer;
|
||||||
|
Graphics()->TextureSet(m_pClient->m_pMapimages->GetEntities());
|
||||||
|
|
||||||
|
CTeleTile *pTeleTiles = (CTeleTile *)m_pLayers->Map()->GetData(pTMap->m_Tele);
|
||||||
|
Graphics()->BlendNone();
|
||||||
|
vec4 Color = vec4(pTMap->m_Color.r/255.0f, pTMap->m_Color.g/255.0f, pTMap->m_Color.b/255.0f, pTMap->m_Color.a/255.0f);
|
||||||
|
RenderTools()->RenderTelemap(pTeleTiles, pTMap->m_Width, pTMap->m_Height, 32.0f, Color, TILERENDERFLAG_EXTEND|LAYERRENDERFLAG_OPAQUE);
|
||||||
|
Graphics()->BlendNormal();
|
||||||
|
RenderTools()->RenderTelemap(pTeleTiles, pTMap->m_Width, pTMap->m_Height, 32.0f, Color, TILERENDERFLAG_EXTEND|LAYERRENDERFLAG_TRANSPARENT);
|
||||||
|
RenderTools()->RenderTeleOverlay(pTeleTiles, pTMap->m_Width, pTMap->m_Height, 32.0f);
|
||||||
|
}
|
||||||
|
else if((g_Config.m_ClShowEntities && g_Config.m_ClDDRaceCheats) && IsSpeedupLayer)
|
||||||
|
{
|
||||||
|
CMapItemLayerTilemap *pTMap = (CMapItemLayerTilemap *)pLayer;
|
||||||
|
Graphics()->TextureSet(m_pClient->m_pMapimages->GetEntities());
|
||||||
|
|
||||||
|
CSpeedupTile *pSpeedupTiles = (CSpeedupTile *)m_pLayers->Map()->GetData(pTMap->m_Speedup);
|
||||||
|
Graphics()->BlendNone();
|
||||||
|
vec4 Color = vec4(pTMap->m_Color.r/255.0f, pTMap->m_Color.g/255.0f, pTMap->m_Color.b/255.0f, pTMap->m_Color.a/255.0f);
|
||||||
|
RenderTools()->RenderSpeedupmap(pSpeedupTiles, pTMap->m_Width, pTMap->m_Height, 32.0f, Color, TILERENDERFLAG_EXTEND|LAYERRENDERFLAG_OPAQUE);
|
||||||
|
Graphics()->BlendNormal();
|
||||||
|
RenderTools()->RenderSpeedupmap(pSpeedupTiles, pTMap->m_Width, pTMap->m_Height, 32.0f, Color, TILERENDERFLAG_EXTEND|LAYERRENDERFLAG_TRANSPARENT);
|
||||||
|
RenderTools()->RenderSpeedupOverlay(pSpeedupTiles, pTMap->m_Width, pTMap->m_Height, 32.0f);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if(!g_Config.m_GfxNoclip)
|
if(!g_Config.m_GfxNoclip)
|
||||||
Graphics()->ClipDisable();
|
Graphics()->ClipDisable();
|
||||||
|
|
|
@ -79,10 +79,12 @@ public:
|
||||||
|
|
||||||
// DDRace
|
// DDRace
|
||||||
|
|
||||||
void RenderTelemap(CTeleTile *pTele, int w, int h, float Scale);
|
void RenderTeleOverlay(CTeleTile *pTele, int w, int h, float Scale);
|
||||||
void RenderSpeedupmap(CSpeedupTile *pTele, int w, int h, float Scale);
|
void RenderSpeedupOverlay(CSpeedupTile *pTele, int w, int h, float Scale);
|
||||||
void RenderFrontmap(CTile *pTiles, int w, int h, float Scale, vec4 Color, int Flags);
|
void RenderSwitchOverlay(CSwitchTile *pSwitch, int w, int h, float Scale);
|
||||||
void RenderSwitchmap(CSwitchTile *pSwitch, int w, int h, float Scale);
|
void RenderTelemap(CTeleTile *pTele, int w, int h, float Scale, vec4 Color, int RenderFlags);
|
||||||
|
void RenderSpeedupmap(CSpeedupTile *pTele, int w, int h, float Scale, vec4 Color, int RenderFlags);
|
||||||
|
void RenderSwitchmap(CSwitchTile *pSwitch, int w, int h, float Scale, vec4 Color, int RenderFlags);
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -304,7 +304,7 @@ void CRenderTools::RenderTilemap(CTile *pTiles, int w, int h, float Scale, vec4
|
||||||
Graphics()->MapScreen(ScreenX0, ScreenY0, ScreenX1, ScreenY1);
|
Graphics()->MapScreen(ScreenX0, ScreenY0, ScreenX1, ScreenY1);
|
||||||
}
|
}
|
||||||
|
|
||||||
void CRenderTools::RenderTelemap(CTeleTile *pTele, int w, int h, float Scale)
|
void CRenderTools::RenderTeleOverlay(CTeleTile *pTele, int w, int h, float Scale)
|
||||||
{
|
{
|
||||||
float ScreenX0, ScreenY0, ScreenX1, ScreenY1;
|
float ScreenX0, ScreenY0, ScreenX1, ScreenY1;
|
||||||
Graphics()->GetScreen(&ScreenX0, &ScreenY0, &ScreenX1, &ScreenY1);
|
Graphics()->GetScreen(&ScreenX0, &ScreenY0, &ScreenX1, &ScreenY1);
|
||||||
|
@ -344,7 +344,7 @@ void CRenderTools::RenderTelemap(CTeleTile *pTele, int w, int h, float Scale)
|
||||||
Graphics()->MapScreen(ScreenX0, ScreenY0, ScreenX1, ScreenY1);
|
Graphics()->MapScreen(ScreenX0, ScreenY0, ScreenX1, ScreenY1);
|
||||||
}
|
}
|
||||||
|
|
||||||
void CRenderTools::RenderSpeedupmap(CSpeedupTile *pSpeedup, int w, int h, float Scale)
|
void CRenderTools::RenderSpeedupOverlay(CSpeedupTile *pSpeedup, int w, int h, float Scale)
|
||||||
{
|
{
|
||||||
float ScreenX0, ScreenY0, ScreenX1, ScreenY1;
|
float ScreenX0, ScreenY0, ScreenX1, ScreenY1;
|
||||||
Graphics()->GetScreen(&ScreenX0, &ScreenY0, &ScreenX1, &ScreenY1);
|
Graphics()->GetScreen(&ScreenX0, &ScreenY0, &ScreenX1, &ScreenY1);
|
||||||
|
@ -400,7 +400,7 @@ void CRenderTools::RenderSpeedupmap(CSpeedupTile *pSpeedup, int w, int h, float
|
||||||
Graphics()->MapScreen(ScreenX0, ScreenY0, ScreenX1, ScreenY1);
|
Graphics()->MapScreen(ScreenX0, ScreenY0, ScreenX1, ScreenY1);
|
||||||
}
|
}
|
||||||
|
|
||||||
void CRenderTools::RenderSwitchmap(CSwitchTile *pSwitch, int w, int h, float Scale)
|
void CRenderTools::RenderSwitchOverlay(CSwitchTile *pSwitch, int w, int h, float Scale)
|
||||||
{
|
{
|
||||||
float ScreenX0, ScreenY0, ScreenX1, ScreenY1;
|
float ScreenX0, ScreenY0, ScreenX1, ScreenY1;
|
||||||
Graphics()->GetScreen(&ScreenX0, &ScreenY0, &ScreenX1, &ScreenY1);
|
Graphics()->GetScreen(&ScreenX0, &ScreenY0, &ScreenX1, &ScreenY1);
|
||||||
|
@ -447,3 +447,320 @@ void CRenderTools::RenderSwitchmap(CSwitchTile *pSwitch, int w, int h, float Sca
|
||||||
|
|
||||||
Graphics()->MapScreen(ScreenX0, ScreenY0, ScreenX1, ScreenY1);
|
Graphics()->MapScreen(ScreenX0, ScreenY0, ScreenX1, ScreenY1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void CRenderTools::RenderTelemap(CTeleTile *pTele, int w, int h, float Scale, vec4 Color, int RenderFlags)
|
||||||
|
{
|
||||||
|
float ScreenX0, ScreenY0, ScreenX1, ScreenY1;
|
||||||
|
Graphics()->GetScreen(&ScreenX0, &ScreenY0, &ScreenX1, &ScreenY1);
|
||||||
|
|
||||||
|
// calculate the final pixelsize for the tiles
|
||||||
|
float TilePixelSize = 1024/32.0f;
|
||||||
|
float FinalTileSize = Scale/(ScreenX1-ScreenX0) * Graphics()->ScreenWidth();
|
||||||
|
float FinalTilesetScale = FinalTileSize/TilePixelSize;
|
||||||
|
|
||||||
|
Graphics()->QuadsBegin();
|
||||||
|
Graphics()->SetColor(Color.r, Color.g, Color.b, Color.a);
|
||||||
|
|
||||||
|
int StartY = (int)(ScreenY0/Scale)-1;
|
||||||
|
int StartX = (int)(ScreenX0/Scale)-1;
|
||||||
|
int EndY = (int)(ScreenY1/Scale)+1;
|
||||||
|
int EndX = (int)(ScreenX1/Scale)+1;
|
||||||
|
|
||||||
|
// adjust the texture shift according to mipmap level
|
||||||
|
float TexSize = 1024.0f;
|
||||||
|
float Frac = (1.25f/TexSize) * (1/FinalTilesetScale);
|
||||||
|
float Nudge = (0.5f/TexSize) * (1/FinalTilesetScale);
|
||||||
|
|
||||||
|
for(int y = StartY; y < EndY; y++)
|
||||||
|
for(int x = StartX; x < EndX; x++)
|
||||||
|
{
|
||||||
|
int mx = x;
|
||||||
|
int my = y;
|
||||||
|
|
||||||
|
if(RenderFlags&TILERENDERFLAG_EXTEND)
|
||||||
|
{
|
||||||
|
if(mx<0)
|
||||||
|
mx = 0;
|
||||||
|
if(mx>=w)
|
||||||
|
mx = w-1;
|
||||||
|
if(my<0)
|
||||||
|
my = 0;
|
||||||
|
if(my>=h)
|
||||||
|
my = h-1;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if(mx<0)
|
||||||
|
continue; // mx = 0;
|
||||||
|
if(mx>=w)
|
||||||
|
continue; // mx = w-1;
|
||||||
|
if(my<0)
|
||||||
|
continue; // my = 0;
|
||||||
|
if(my>=h)
|
||||||
|
continue; // my = h-1;
|
||||||
|
}
|
||||||
|
|
||||||
|
int c = mx + my*w;
|
||||||
|
|
||||||
|
unsigned char Index = pTele[c].m_Type;
|
||||||
|
if(Index)
|
||||||
|
{
|
||||||
|
bool Render = false;
|
||||||
|
if(RenderFlags&LAYERRENDERFLAG_TRANSPARENT)
|
||||||
|
Render = true;
|
||||||
|
|
||||||
|
if(Render)
|
||||||
|
{
|
||||||
|
|
||||||
|
int tx = Index%16;
|
||||||
|
int ty = Index/16;
|
||||||
|
int Px0 = tx*(1024/16);
|
||||||
|
int Py0 = ty*(1024/16);
|
||||||
|
int Px1 = Px0+(1024/16)-1;
|
||||||
|
int Py1 = Py0+(1024/16)-1;
|
||||||
|
|
||||||
|
float x0 = Nudge + Px0/TexSize+Frac;
|
||||||
|
float y0 = Nudge + Py0/TexSize+Frac;
|
||||||
|
float x1 = Nudge + Px1/TexSize-Frac;
|
||||||
|
float y1 = Nudge + Py0/TexSize+Frac;
|
||||||
|
float x2 = Nudge + Px1/TexSize-Frac;
|
||||||
|
float y2 = Nudge + Py1/TexSize-Frac;
|
||||||
|
float x3 = Nudge + Px0/TexSize+Frac;
|
||||||
|
float y3 = Nudge + Py1/TexSize-Frac;
|
||||||
|
|
||||||
|
Graphics()->QuadsSetSubsetFree(x0, y0, x1, y1, x2, y2, x3, y3);
|
||||||
|
IGraphics::CQuadItem QuadItem(x*Scale, y*Scale, Scale, Scale);
|
||||||
|
Graphics()->QuadsDrawTL(&QuadItem, 1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Graphics()->QuadsEnd();
|
||||||
|
Graphics()->MapScreen(ScreenX0, ScreenY0, ScreenX1, ScreenY1);
|
||||||
|
}
|
||||||
|
|
||||||
|
void CRenderTools::RenderSpeedupmap(CSpeedupTile *pSpeedupTile, int w, int h, float Scale, vec4 Color, int RenderFlags)
|
||||||
|
{
|
||||||
|
//Graphics()->TextureSet(img_get(tmap->image));
|
||||||
|
float ScreenX0, ScreenY0, ScreenX1, ScreenY1;
|
||||||
|
Graphics()->GetScreen(&ScreenX0, &ScreenY0, &ScreenX1, &ScreenY1);
|
||||||
|
//Graphics()->MapScreen(screen_x0-50, screen_y0-50, screen_x1+50, screen_y1+50);
|
||||||
|
|
||||||
|
// calculate the final pixelsize for the tiles
|
||||||
|
float TilePixelSize = 1024/32.0f;
|
||||||
|
float FinalTileSize = Scale/(ScreenX1-ScreenX0) * Graphics()->ScreenWidth();
|
||||||
|
float FinalTilesetScale = FinalTileSize/TilePixelSize;
|
||||||
|
|
||||||
|
Graphics()->QuadsBegin();
|
||||||
|
Graphics()->SetColor(Color.r, Color.g, Color.b, Color.a);
|
||||||
|
|
||||||
|
int StartY = (int)(ScreenY0/Scale)-1;
|
||||||
|
int StartX = (int)(ScreenX0/Scale)-1;
|
||||||
|
int EndY = (int)(ScreenY1/Scale)+1;
|
||||||
|
int EndX = (int)(ScreenX1/Scale)+1;
|
||||||
|
|
||||||
|
// adjust the texture shift according to mipmap level
|
||||||
|
float TexSize = 1024.0f;
|
||||||
|
float Frac = (1.25f/TexSize) * (1/FinalTilesetScale);
|
||||||
|
float Nudge = (0.5f/TexSize) * (1/FinalTilesetScale);
|
||||||
|
|
||||||
|
for(int y = StartY; y < EndY; y++)
|
||||||
|
for(int x = StartX; x < EndX; x++)
|
||||||
|
{
|
||||||
|
int mx = x;
|
||||||
|
int my = y;
|
||||||
|
|
||||||
|
if(RenderFlags&TILERENDERFLAG_EXTEND)
|
||||||
|
{
|
||||||
|
if(mx<0)
|
||||||
|
mx = 0;
|
||||||
|
if(mx>=w)
|
||||||
|
mx = w-1;
|
||||||
|
if(my<0)
|
||||||
|
my = 0;
|
||||||
|
if(my>=h)
|
||||||
|
my = h-1;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if(mx<0)
|
||||||
|
continue; // mx = 0;
|
||||||
|
if(mx>=w)
|
||||||
|
continue; // mx = w-1;
|
||||||
|
if(my<0)
|
||||||
|
continue; // my = 0;
|
||||||
|
if(my>=h)
|
||||||
|
continue; // my = h-1;
|
||||||
|
}
|
||||||
|
|
||||||
|
int c = mx + my*w;
|
||||||
|
|
||||||
|
unsigned char Index = pSpeedupTile[c].m_Type;
|
||||||
|
if(Index)
|
||||||
|
{
|
||||||
|
bool Render = false;
|
||||||
|
if(RenderFlags&LAYERRENDERFLAG_TRANSPARENT)
|
||||||
|
Render = true;
|
||||||
|
|
||||||
|
if(Render)
|
||||||
|
{
|
||||||
|
|
||||||
|
int tx = Index%16;
|
||||||
|
int ty = Index/16;
|
||||||
|
int Px0 = tx*(1024/16);
|
||||||
|
int Py0 = ty*(1024/16);
|
||||||
|
int Px1 = Px0+(1024/16)-1;
|
||||||
|
int Py1 = Py0+(1024/16)-1;
|
||||||
|
|
||||||
|
float x0 = Nudge + Px0/TexSize+Frac;
|
||||||
|
float y0 = Nudge + Py0/TexSize+Frac;
|
||||||
|
float x1 = Nudge + Px1/TexSize-Frac;
|
||||||
|
float y1 = Nudge + Py0/TexSize+Frac;
|
||||||
|
float x2 = Nudge + Px1/TexSize-Frac;
|
||||||
|
float y2 = Nudge + Py1/TexSize-Frac;
|
||||||
|
float x3 = Nudge + Px0/TexSize+Frac;
|
||||||
|
float y3 = Nudge + Py1/TexSize-Frac;
|
||||||
|
|
||||||
|
Graphics()->QuadsSetSubsetFree(x0, y0, x1, y1, x2, y2, x3, y3);
|
||||||
|
IGraphics::CQuadItem QuadItem(x*Scale, y*Scale, Scale, Scale);
|
||||||
|
Graphics()->QuadsDrawTL(&QuadItem, 1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Graphics()->QuadsEnd();
|
||||||
|
Graphics()->MapScreen(ScreenX0, ScreenY0, ScreenX1, ScreenY1);
|
||||||
|
}
|
||||||
|
|
||||||
|
void CRenderTools::RenderSwitchmap(CSwitchTile *pSwitchTile, int w, int h, float Scale, vec4 Color, int RenderFlags)
|
||||||
|
{
|
||||||
|
//Graphics()->TextureSet(img_get(tmap->image));
|
||||||
|
float ScreenX0, ScreenY0, ScreenX1, ScreenY1;
|
||||||
|
Graphics()->GetScreen(&ScreenX0, &ScreenY0, &ScreenX1, &ScreenY1);
|
||||||
|
//Graphics()->MapScreen(screen_x0-50, screen_y0-50, screen_x1+50, screen_y1+50);
|
||||||
|
|
||||||
|
// calculate the final pixelsize for the tiles
|
||||||
|
float TilePixelSize = 1024/32.0f;
|
||||||
|
float FinalTileSize = Scale/(ScreenX1-ScreenX0) * Graphics()->ScreenWidth();
|
||||||
|
float FinalTilesetScale = FinalTileSize/TilePixelSize;
|
||||||
|
|
||||||
|
Graphics()->QuadsBegin();
|
||||||
|
Graphics()->SetColor(Color.r, Color.g, Color.b, Color.a);
|
||||||
|
|
||||||
|
int StartY = (int)(ScreenY0/Scale)-1;
|
||||||
|
int StartX = (int)(ScreenX0/Scale)-1;
|
||||||
|
int EndY = (int)(ScreenY1/Scale)+1;
|
||||||
|
int EndX = (int)(ScreenX1/Scale)+1;
|
||||||
|
|
||||||
|
// adjust the texture shift according to mipmap level
|
||||||
|
float TexSize = 1024.0f;
|
||||||
|
float Frac = (1.25f/TexSize) * (1/FinalTilesetScale);
|
||||||
|
float Nudge = (0.5f/TexSize) * (1/FinalTilesetScale);
|
||||||
|
|
||||||
|
for(int y = StartY; y < EndY; y++)
|
||||||
|
for(int x = StartX; x < EndX; x++)
|
||||||
|
{
|
||||||
|
int mx = x;
|
||||||
|
int my = y;
|
||||||
|
|
||||||
|
if(RenderFlags&TILERENDERFLAG_EXTEND)
|
||||||
|
{
|
||||||
|
if(mx<0)
|
||||||
|
mx = 0;
|
||||||
|
if(mx>=w)
|
||||||
|
mx = w-1;
|
||||||
|
if(my<0)
|
||||||
|
my = 0;
|
||||||
|
if(my>=h)
|
||||||
|
my = h-1;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if(mx<0)
|
||||||
|
continue; // mx = 0;
|
||||||
|
if(mx>=w)
|
||||||
|
continue; // mx = w-1;
|
||||||
|
if(my<0)
|
||||||
|
continue; // my = 0;
|
||||||
|
if(my>=h)
|
||||||
|
continue; // my = h-1;
|
||||||
|
}
|
||||||
|
|
||||||
|
int c = mx + my*w;
|
||||||
|
|
||||||
|
unsigned char Index = pSwitchTile[c].m_Type;
|
||||||
|
if(Index)
|
||||||
|
{
|
||||||
|
unsigned char Flags = pSwitchTile[c].m_Flags;
|
||||||
|
|
||||||
|
bool Render = false;
|
||||||
|
if(Flags&TILEFLAG_OPAQUE)
|
||||||
|
{
|
||||||
|
if(RenderFlags&LAYERRENDERFLAG_OPAQUE)
|
||||||
|
Render = true;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if(RenderFlags&LAYERRENDERFLAG_TRANSPARENT)
|
||||||
|
Render = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(Render)
|
||||||
|
{
|
||||||
|
|
||||||
|
int tx = Index%16;
|
||||||
|
int ty = Index/16;
|
||||||
|
int Px0 = tx*(1024/16);
|
||||||
|
int Py0 = ty*(1024/16);
|
||||||
|
int Px1 = Px0+(1024/16)-1;
|
||||||
|
int Py1 = Py0+(1024/16)-1;
|
||||||
|
|
||||||
|
float x0 = Nudge + Px0/TexSize+Frac;
|
||||||
|
float y0 = Nudge + Py0/TexSize+Frac;
|
||||||
|
float x1 = Nudge + Px1/TexSize-Frac;
|
||||||
|
float y1 = Nudge + Py0/TexSize+Frac;
|
||||||
|
float x2 = Nudge + Px1/TexSize-Frac;
|
||||||
|
float y2 = Nudge + Py1/TexSize-Frac;
|
||||||
|
float x3 = Nudge + Px0/TexSize+Frac;
|
||||||
|
float y3 = Nudge + Py1/TexSize-Frac;
|
||||||
|
|
||||||
|
if(Flags&TILEFLAG_VFLIP)
|
||||||
|
{
|
||||||
|
x0 = x2;
|
||||||
|
x1 = x3;
|
||||||
|
x2 = x3;
|
||||||
|
x3 = x0;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(Flags&TILEFLAG_HFLIP)
|
||||||
|
{
|
||||||
|
y0 = y3;
|
||||||
|
y2 = y1;
|
||||||
|
y3 = y1;
|
||||||
|
y1 = y0;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(Flags&TILEFLAG_ROTATE)
|
||||||
|
{
|
||||||
|
float Tmp = x0;
|
||||||
|
x0 = x3;
|
||||||
|
x3 = x2;
|
||||||
|
x2 = x1;
|
||||||
|
x1 = Tmp;
|
||||||
|
Tmp = y0;
|
||||||
|
y0 = y3;
|
||||||
|
y3 = y2;
|
||||||
|
y2 = y1;
|
||||||
|
y1 = Tmp;
|
||||||
|
}
|
||||||
|
|
||||||
|
Graphics()->QuadsSetSubsetFree(x0, y0, x1, y1, x2, y2, x3, y3);
|
||||||
|
IGraphics::CQuadItem QuadItem(x*Scale, y*Scale, Scale, Scale);
|
||||||
|
Graphics()->QuadsDrawTL(&QuadItem, 1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Graphics()->QuadsEnd();
|
||||||
|
Graphics()->MapScreen(ScreenX0, ScreenY0, ScreenX1, ScreenY1);
|
||||||
|
}
|
||||||
|
|
|
@ -74,11 +74,11 @@ void CLayerTiles::Render()
|
||||||
|
|
||||||
// Render DDRace Layers
|
// Render DDRace Layers
|
||||||
if(m_Tele)
|
if(m_Tele)
|
||||||
m_pEditor->RenderTools()->RenderTelemap(((CLayerTele*)this)->m_pTeleTile, m_Width, m_Height, 32.0f);
|
m_pEditor->RenderTools()->RenderTeleOverlay(((CLayerTele*)this)->m_pTeleTile, m_Width, m_Height, 32.0f);
|
||||||
if(m_Speedup)
|
if(m_Speedup)
|
||||||
m_pEditor->RenderTools()->RenderSpeedupmap(((CLayerSpeedup*)this)->m_pSpeedupTile, m_Width, m_Height, 32.0f);
|
m_pEditor->RenderTools()->RenderSpeedupOverlay(((CLayerSpeedup*)this)->m_pSpeedupTile, m_Width, m_Height, 32.0f);
|
||||||
if(m_Switch)
|
if(m_Switch)
|
||||||
m_pEditor->RenderTools()->RenderSwitchmap(((CLayerSwitch*)this)->m_pSwitchTile, m_Width, m_Height, 32.0f);
|
m_pEditor->RenderTools()->RenderSwitchOverlay(((CLayerSwitch*)this)->m_pSwitchTile, m_Width, m_Height, 32.0f);
|
||||||
}
|
}
|
||||||
|
|
||||||
int CLayerTiles::ConvertX(float x) const { return (int)(x/32.0f); }
|
int CLayerTiles::ConvertX(float x) const { return (int)(x/32.0f); }
|
||||||
|
|
Loading…
Reference in a new issue