mirror of
https://github.com/TerryCavanagh/VVVVVV.git
synced 2025-01-09 10:29:45 +01:00
Wrap entities (#408)
Make entities able to wrap both vertically and horizontally, also add a case for when entities are wrapping both directions at the same time
This commit is contained in:
parent
178951e5e1
commit
8aac6a758d
1 changed files with 50 additions and 37 deletions
|
@ -1615,6 +1615,7 @@ void Graphics::drawentities()
|
||||||
switch (obj.entities[i].size)
|
switch (obj.entities[i].size)
|
||||||
{
|
{
|
||||||
case 0:
|
case 0:
|
||||||
|
{
|
||||||
// Sprites
|
// Sprites
|
||||||
if (!INBOUNDS(obj.entities[i].drawframe, (*spritesvec)))
|
if (!INBOUNDS(obj.entities[i].drawframe, (*spritesvec)))
|
||||||
{
|
{
|
||||||
|
@ -1627,49 +1628,61 @@ void Graphics::drawentities()
|
||||||
drawRect = sprites_rect;
|
drawRect = sprites_rect;
|
||||||
drawRect.x += tpoint.x;
|
drawRect.x += tpoint.x;
|
||||||
drawRect.y += tpoint.y;
|
drawRect.y += tpoint.y;
|
||||||
BlitSurfaceColoured((*spritesvec)[obj.entities[i].drawframe],NULL, backBuffer, &drawRect, ct);
|
BlitSurfaceColoured((*spritesvec)[obj.entities[i].drawframe], NULL, backBuffer, &drawRect, ct);
|
||||||
|
|
||||||
//screenwrapping!
|
//screenwrapping!
|
||||||
if (map.warpx ||
|
point wrappedPoint;
|
||||||
(map.towermode && !map.minitowermode
|
bool wrapX = false;
|
||||||
&& map.ypos >= 500 && map.ypos <= 5000)) //The "wrapping" area of the tower
|
bool wrapY = false;
|
||||||
|
|
||||||
|
wrappedPoint.x = tpoint.x;
|
||||||
|
if (tpoint.x < 0)
|
||||||
{
|
{
|
||||||
if (tpoint.x < 0)
|
wrapX = true;
|
||||||
{
|
wrappedPoint.x += 320;
|
||||||
tpoint.x += 320;
|
|
||||||
drawRect = sprites_rect;
|
|
||||||
drawRect.x += tpoint.x;
|
|
||||||
drawRect.y += tpoint.y;
|
|
||||||
BlitSurfaceColoured((*spritesvec)[obj.entities[i].drawframe],NULL, backBuffer, &drawRect, ct);
|
|
||||||
}
|
|
||||||
else if (tpoint.x > 300)
|
|
||||||
{
|
|
||||||
tpoint.x -= 320;
|
|
||||||
drawRect = sprites_rect;
|
|
||||||
drawRect.x += tpoint.x;
|
|
||||||
drawRect.y += tpoint.y;
|
|
||||||
BlitSurfaceColoured((*spritesvec)[obj.entities[i].drawframe],NULL, backBuffer, &drawRect, ct);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
else if (map.warpy)
|
else if (tpoint.x > 300)
|
||||||
{
|
{
|
||||||
if (tpoint.y < 0)
|
wrapX = true;
|
||||||
{
|
wrappedPoint.x -= 320;
|
||||||
tpoint.y += 230;
|
}
|
||||||
drawRect = sprites_rect;
|
|
||||||
drawRect.x += tpoint.x;
|
wrappedPoint.y = tpoint.y;
|
||||||
drawRect.y += tpoint.y;
|
if (tpoint.y < 0)
|
||||||
BlitSurfaceColoured((*spritesvec)[obj.entities[i].drawframe],NULL, backBuffer, &drawRect, ct);
|
{
|
||||||
}
|
wrapY = true;
|
||||||
else if (tpoint.y > 210)
|
wrappedPoint.y += 230;
|
||||||
{
|
}
|
||||||
tpoint.y -= 230;
|
else if (tpoint.y > 210)
|
||||||
drawRect = sprites_rect;
|
{
|
||||||
drawRect.x += tpoint.x;
|
wrapY = true;
|
||||||
drawRect.y += tpoint.y;
|
wrappedPoint.y -= 230;
|
||||||
BlitSurfaceColoured((*spritesvec)[obj.entities[i].drawframe],NULL, backBuffer, &drawRect, ct);
|
}
|
||||||
}
|
|
||||||
|
bool isInWrappingAreaOfTower = map.towermode && !map.minitowermode && map.ypos >= 500 && map.ypos <= 5000;
|
||||||
|
if (wrapX && (map.warpx || isInWrappingAreaOfTower))
|
||||||
|
{
|
||||||
|
drawRect = sprites_rect;
|
||||||
|
drawRect.x += wrappedPoint.x;
|
||||||
|
drawRect.y += tpoint.y;
|
||||||
|
BlitSurfaceColoured((*spritesvec)[obj.entities[i].drawframe], NULL, backBuffer, &drawRect, ct);
|
||||||
|
}
|
||||||
|
if (wrapY && map.warpy)
|
||||||
|
{
|
||||||
|
drawRect = sprites_rect;
|
||||||
|
drawRect.x += tpoint.x;
|
||||||
|
drawRect.y += wrappedPoint.y;
|
||||||
|
BlitSurfaceColoured((*spritesvec)[obj.entities[i].drawframe], NULL, backBuffer, &drawRect, ct);
|
||||||
|
}
|
||||||
|
if (wrapX && wrapY && map.warpx && map.warpy)
|
||||||
|
{
|
||||||
|
drawRect = sprites_rect;
|
||||||
|
drawRect.x += wrappedPoint.x;
|
||||||
|
drawRect.y += wrappedPoint.y;
|
||||||
|
BlitSurfaceColoured((*spritesvec)[obj.entities[i].drawframe], NULL, backBuffer, &drawRect, ct);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
}
|
||||||
case 1:
|
case 1:
|
||||||
// Tiles
|
// Tiles
|
||||||
if (!INBOUNDS(obj.entities[i].drawframe, tiles))
|
if (!INBOUNDS(obj.entities[i].drawframe, tiles))
|
||||||
|
|
Loading…
Reference in a new issue