mirror of https://github.com/OpenTTD/OpenTTD
(svn r19103) -Codechange: Use px/py for pixel coordinates in PixelToTile(), as promised by the documentation.
parent
d403d82617
commit
47295bb8b9
|
@ -563,26 +563,26 @@ class SmallMapWindow : public Window {
|
||||||
* @return Tile being displayed at the given position relative to #scroll_x and #scroll_y.
|
* @return Tile being displayed at the given position relative to #scroll_x and #scroll_y.
|
||||||
* @note The #subscroll offset is already accounted for.
|
* @note The #subscroll offset is already accounted for.
|
||||||
*/
|
*/
|
||||||
FORCEINLINE Point PixelToTile(int dx, int dy, int *sub) const
|
FORCEINLINE Point PixelToTile(int px, int py, int *sub) const
|
||||||
{
|
{
|
||||||
dx += this->subscroll; // Total horizontal offset.
|
px += this->subscroll; // Total horizontal offset.
|
||||||
|
|
||||||
/* For each two rows down, add a x and a y tile, and
|
/* For each two rows down, add a x and a y tile, and
|
||||||
* For each four pixels to the right, move a tile to the right. */
|
* For each four pixels to the right, move a tile to the right. */
|
||||||
Point pt = {((dy >> 1) - (dx >> 2)) * this->zoom, ((dy >> 1) + (dx >> 2)) * this->zoom};
|
Point pt = {((py >> 1) - (px >> 2)) * this->zoom, ((py >> 1) + (px >> 2)) * this->zoom};
|
||||||
dx &= 3;
|
px &= 3;
|
||||||
|
|
||||||
if (dy & 1) { // Odd number of rows, handle the 2 pixel shift.
|
if (py & 1) { // Odd number of rows, handle the 2 pixel shift.
|
||||||
if (dx < 2) {
|
if (px < 2) {
|
||||||
pt.x += this->zoom;
|
pt.x += this->zoom;
|
||||||
dx += 2;
|
px += 2;
|
||||||
} else {
|
} else {
|
||||||
pt.y += this->zoom;
|
pt.y += this->zoom;
|
||||||
dx -= 2;
|
px -= 2;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
*sub = dx;
|
*sub = px;
|
||||||
return pt;
|
return pt;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue