public MultiTile GetSelected(Point mouseLoc, int maxheight, bool drawFloor)
{
if (Width == 0 || Height == 0)
return null;
MultiTile selected = null;
if (mouseLoc != Point.Empty)
{
for (int i = Tiles.Count - 1; i >= 0; --i) // inverse for speedup
{
MultiTile tile = Tiles[i];
if (tile.isVirtualFloor)
continue;
if (tile.Z > maxheight)
continue;
if ((drawFloor) && (Parent.DrawFloorZ > tile.Z))
continue;
Bitmap bmp = tile.GetBitmap();
if (bmp == null)
continue;
int px = tile.Xmod;
int py = tile.Ymod;
px -= xMin;
py -= yMin;
if (((mouseLoc.X > px) && (mouseLoc.X < (px + bmp.Width))) &&
((mouseLoc.Y > py) && (mouseLoc.Y < (py + bmp.Height))))
{
//Check for transparent part
Color p = bmp.GetPixel(mouseLoc.X - px, mouseLoc.Y - py);
if (!((p.R == 0) && (p.G == 0) && (p.B == 0)))
{
selected = tile;
break;
}
}
}
}
return selected;
}