private _2DSprite GetFloorSprite(Floor pattern, int rotation, WorldState world, byte cut)
{
var _Sprite = world._2D.NewSprite(_2DBatchRenderMode.Z_BUFFER);
if (pattern == null) return _Sprite;
SPR2 sprite = null;
switch (world.Zoom)
{
case WorldZoom.Far:
sprite = pattern.Far;
_Sprite.DestRect = FLRDEST_FAR;
_Sprite.Depth = WallZBuffers[14];
break;
case WorldZoom.Medium:
sprite = pattern.Medium;
_Sprite.DestRect = FLRDEST_MED;
_Sprite.Depth = WallZBuffers[13];
break;
case WorldZoom.Near:
sprite = pattern.Near;
_Sprite.DestRect = FLRDEST_NEAR;
_Sprite.Depth = WallZBuffers[12];
break;
}
if (sprite != null)
{
_Sprite.Pixel = world._2D.GetTexture(sprite.Frames[rotation]);
_Sprite.SrcRect = new Microsoft.Xna.Framework.Rectangle(0, 0, _Sprite.Pixel.Width, _Sprite.Pixel.Height);
}
switch (cut)
{
case 0: //vertical cut, left side
_Sprite.DestRect.Width /= 2;
_Sprite.SrcRect.Width /= 2;
break;
case 1: //vertical cut, right side
_Sprite.DestRect.X += _Sprite.DestRect.Width / 2;
_Sprite.DestRect.Width /= 2;
_Sprite.SrcRect.X += _Sprite.SrcRect.Width / 2;
_Sprite.SrcRect.Width /= 2;
break;
case 2: //horizontal cut, top side
_Sprite.DestRect.Height /= 2;
_Sprite.SrcRect.Height /= 2;
break;
case 3:
_Sprite.DestRect.Y += _Sprite.DestRect.Height / 2;
_Sprite.DestRect.Height /= 2;
_Sprite.SrcRect.Y += _Sprite.SrcRect.Height / 2;
_Sprite.SrcRect.Height /= 2;
break;
}
_Sprite.Room = (ushort)TileRoom;
return _Sprite;
}