mirror of
https://github.com/The-Powder-Toy/The-Powder-Toy.git
synced 2025-08-13 03:44:05 +02:00
Crash fix for wall drawing when OpenGL is enabled.
This commit is contained in:
@@ -63,7 +63,6 @@ void Renderer::RenderBegin()
|
|||||||
draw_grav();
|
draw_grav();
|
||||||
DrawWalls();
|
DrawWalls();
|
||||||
render_parts();
|
render_parts();
|
||||||
|
|
||||||
if(display_mode & DISPLAY_PERS)
|
if(display_mode & DISPLAY_PERS)
|
||||||
{
|
{
|
||||||
int i,r,g,b;
|
int i,r,g,b;
|
||||||
@@ -751,14 +750,14 @@ void Renderer::DrawWalls()
|
|||||||
for (int j = 0; j < CELL; j++)
|
for (int j = 0; j < CELL; j++)
|
||||||
for (int i =0; i < CELL; i++)
|
for (int i =0; i < CELL; i++)
|
||||||
if (i&j&1)
|
if (i&j&1)
|
||||||
vid[(y*CELL+j)*(XRES+BARSIZE)+(x*CELL+i)] = pc;
|
vid[(y*CELL+j)*(VIDXRES)+(x*CELL+i)] = pc;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
for (int j = 0; j < CELL; j++)
|
for (int j = 0; j < CELL; j++)
|
||||||
for (int i = 0; i < CELL; i++)
|
for (int i = 0; i < CELL; i++)
|
||||||
if (!(i&j&1))
|
if (!(i&j&1))
|
||||||
vid[(y*CELL+j)*(XRES+BARSIZE)+(x*CELL+i)] = pc;
|
vid[(y*CELL+j)*(VIDXRES)+(x*CELL+i)] = pc;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (wt == WL_WALLELEC)
|
else if (wt == WL_WALLELEC)
|
||||||
@@ -767,9 +766,9 @@ void Renderer::DrawWalls()
|
|||||||
for (int i = 0; i < CELL; i++)
|
for (int i = 0; i < CELL; i++)
|
||||||
{
|
{
|
||||||
if (!((y*CELL+j)%2) && !((x*CELL+i)%2))
|
if (!((y*CELL+j)%2) && !((x*CELL+i)%2))
|
||||||
vid[(y*CELL+j)*(XRES+BARSIZE)+(x*CELL+i)] = pc;
|
vid[(y*CELL+j)*(VIDXRES)+(x*CELL+i)] = pc;
|
||||||
else
|
else
|
||||||
vid[(y*CELL+j)*(XRES+BARSIZE)+(x*CELL+i)] = PIXPACK(0x808080);
|
vid[(y*CELL+j)*(VIDXRES)+(x*CELL+i)] = PIXPACK(0x808080);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (wt == WL_EHOLE)
|
else if (wt == WL_EHOLE)
|
||||||
@@ -778,16 +777,16 @@ void Renderer::DrawWalls()
|
|||||||
{
|
{
|
||||||
for (int j = 0; j < CELL; j++)
|
for (int j = 0; j < CELL; j++)
|
||||||
for (int i = 0; i < CELL; i++)
|
for (int i = 0; i < CELL; i++)
|
||||||
vid[(y*CELL+j)*(XRES+BARSIZE)+(x*CELL+i)] = PIXPACK(0x242424);
|
vid[(y*CELL+j)*(VIDXRES)+(x*CELL+i)] = PIXPACK(0x242424);
|
||||||
for (int j = 0; j < CELL; j += 2)
|
for (int j = 0; j < CELL; j += 2)
|
||||||
for (int i = 0; i < CELL; i += 2)
|
for (int i = 0; i < CELL; i += 2)
|
||||||
vid[(y*CELL+j)*(XRES+BARSIZE)+(x*CELL+i)] = PIXPACK(0x000000);
|
vid[(y*CELL+j)*(VIDXRES)+(x*CELL+i)] = PIXPACK(0x000000);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
for (int j = 0; j < CELL; j += 2)
|
for (int j = 0; j < CELL; j += 2)
|
||||||
for (int i =0; i < CELL; i += 2)
|
for (int i =0; i < CELL; i += 2)
|
||||||
vid[(y*CELL+j)*(XRES+BARSIZE)+(x*CELL+i)] = PIXPACK(0x242424);
|
vid[(y*CELL+j)*(VIDXRES)+(x*CELL+i)] = PIXPACK(0x242424);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (wt == WL_STREAM)
|
else if (wt == WL_STREAM)
|
||||||
@@ -837,27 +836,27 @@ void Renderer::DrawWalls()
|
|||||||
case 1:
|
case 1:
|
||||||
for (int j = 0; j < CELL; j += 2)
|
for (int j = 0; j < CELL; j += 2)
|
||||||
for (int i = (j>>1)&1; i < CELL; i += 2)
|
for (int i = (j>>1)&1; i < CELL; i += 2)
|
||||||
vid[(y*CELL+j)*(XRES+BARSIZE)+(x*CELL+i)] = pc;
|
vid[(y*CELL+j)*(VIDXRES)+(x*CELL+i)] = pc;
|
||||||
break;
|
break;
|
||||||
case 2:
|
case 2:
|
||||||
for (int j = 0; j < CELL; j += 2)
|
for (int j = 0; j < CELL; j += 2)
|
||||||
for (int i = 0; i < CELL; i += 2)
|
for (int i = 0; i < CELL; i += 2)
|
||||||
vid[(y*CELL+j)*(XRES+BARSIZE)+(x*CELL+i)] = pc;
|
vid[(y*CELL+j)*(VIDXRES)+(x*CELL+i)] = pc;
|
||||||
break;
|
break;
|
||||||
case 3:
|
case 3:
|
||||||
for (int j = 0; j < CELL; j++)
|
for (int j = 0; j < CELL; j++)
|
||||||
for (int i = 0; i < CELL; i++)
|
for (int i = 0; i < CELL; i++)
|
||||||
vid[(y*CELL+j)*(XRES+BARSIZE)+(x*CELL+i)] = pc;
|
vid[(y*CELL+j)*(VIDXRES)+(x*CELL+i)] = pc;
|
||||||
break;
|
break;
|
||||||
case 4:
|
case 4:
|
||||||
for (int j = 0; j < CELL; j++)
|
for (int j = 0; j < CELL; j++)
|
||||||
for (int i = 0; i < CELL; i++)
|
for (int i = 0; i < CELL; i++)
|
||||||
if (i == j)
|
if (i == j)
|
||||||
vid[(y*CELL+j)*(XRES+BARSIZE)+(x*CELL+i)] = pc;
|
vid[(y*CELL+j)*(VIDXRES)+(x*CELL+i)] = pc;
|
||||||
else if (i == j+1 || (i == 0 && j == CELL-1))
|
else if (i == j+1 || (i == 0 && j == CELL-1))
|
||||||
vid[(y*CELL+j)*(XRES+BARSIZE)+(x*CELL+i)] = gc;
|
vid[(y*CELL+j)*(VIDXRES)+(x*CELL+i)] = gc;
|
||||||
else
|
else
|
||||||
vid[(y*CELL+j)*(XRES+BARSIZE)+(x*CELL+i)] = PIXPACK(0x202020);
|
vid[(y*CELL+j)*(VIDXRES)+(x*CELL+i)] = PIXPACK(0x202020);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -905,7 +904,7 @@ void Renderer::DrawWalls()
|
|||||||
for (int j = 0; j < CELL; j += 2)
|
for (int j = 0; j < CELL; j += 2)
|
||||||
for (int i = 0; i < CELL; i += 2)
|
for (int i = 0; i < CELL; i += 2)
|
||||||
// looks bad if drawing black blobs
|
// looks bad if drawing black blobs
|
||||||
vid[(y*CELL+j)*(XRES+BARSIZE)+(x*CELL+i)] = PIXPACK(0x000000);
|
vid[(y*CELL+j)*(VIDXRES)+(x*CELL+i)] = PIXPACK(0x000000);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@@ -936,10 +935,10 @@ void Renderer::DrawWalls()
|
|||||||
if (i == j)
|
if (i == j)
|
||||||
drawblob((x*CELL+i), (y*CELL+j), PIXR(pc), PIXG(pc), PIXB(pc));
|
drawblob((x*CELL+i), (y*CELL+j), PIXR(pc), PIXG(pc), PIXB(pc));
|
||||||
else if (i == j+1 || (i == 0 && j == CELL-1))
|
else if (i == j+1 || (i == 0 && j == CELL-1))
|
||||||
vid[(y*CELL+j)*(XRES+BARSIZE)+(x*CELL+i)] = gc;
|
vid[(y*CELL+j)*(VIDXRES)+(x*CELL+i)] = gc;
|
||||||
else
|
else
|
||||||
// looks bad if drawing black blobs
|
// looks bad if drawing black blobs
|
||||||
vid[(y*CELL+j)*(XRES+BARSIZE)+(x*CELL+i)] = PIXPACK(0x202020);
|
vid[(y*CELL+j)*(VIDXRES)+(x*CELL+i)] = PIXPACK(0x202020);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user