public static void CoordinateToIndex(this Tileset tileset, int xCoordinate, int yCoordinate, out int xIndex, out int yIndex)
{
xIndex = 0;
yIndex = 0;
if (tileset.Images.Length != 0)
{
// We're assuming the first image, not sure why we'd have multiple images in one tileset....or at least we won't
// supportthat yet.
var image = tileset.Images[0];
int effectiveImageWidth = tileset.Images[0].width;
int effectiveImageHeight = tileset.Images[0].height;
if (xCoordinate < effectiveImageWidth && yCoordinate < effectiveImageHeight)
{
if (tileset.Margin != 0)
{
xCoordinate -= tileset.Margin * 2;
yCoordinate -= tileset.Margin * 2;
}
int effectiveTileWidth = tileset.Tilewidth + tileset.Spacing;
int effectiveTileHeight = tileset.Tileheight + tileset.Spacing;
xIndex = xCoordinate / effectiveTileWidth;
yIndex = yCoordinate / effectiveTileHeight;
}
}
}