public void RedrawOreAndGems()
{
var tileCollection = _theater.GetTileCollection();
var checkFunc = new Func <OverlayObject, bool>(delegate(OverlayObject ovl) {
return(SpecialOverlays.GetOverlayTibType(ovl, Engine) != OverlayTibType.NotSpecial);
});
// first redraw all required tiles (zigzag method)
for (int y = 0; y < FullSize.Height; y++)
{
for (int x = FullSize.Width * 2 - 2; x >= 0; x -= 2)
{
if (_tiles[x, y].AllObjects.OfType <OverlayObject>().Any(checkFunc))
{
_theater.Draw(_tiles.GetTile(x, y), _drawingSurface);
}
}
for (int x = FullSize.Width * 2 - 3; x >= 0; x -= 2)
{
if (_tiles[x, y].AllObjects.OfType <OverlayObject>().Any(checkFunc))
{
_theater.Draw(_tiles.GetTile(x, y), _drawingSurface);
}
}
}
for (int y = 0; y < FullSize.Height; y++)
{
for (int x = FullSize.Width * 2 - 2; x >= 0; x -= 2)
{
if (_tiles[x, y].AllObjects.OfType <OverlayObject>().Any(checkFunc))
{
List <GameObject> objs = GetObjectsAt(x, y);
foreach (GameObject o in objs)
{
_theater.Draw(o, _drawingSurface);
}
}
}
for (int x = FullSize.Width * 2 - 3; x >= 0; x -= 2)
{
if (_tiles[x, y].AllObjects.OfType <OverlayObject>().Any(checkFunc))
{
List <GameObject> objs = GetObjectsAt(x, y);
foreach (GameObject o in objs)
{
_theater.Draw(o, _drawingSurface);
}
}
}
}
}