Mercurial > hg > openttd
changeset 7912:357db556fc02 draft
(svn r11465) -Fix: more user-friedly placement in X and Y directions (most noticeable with autoroad)
author | smatz <smatz@openttd.org> |
---|---|
date | Sun, 18 Nov 2007 20:05:44 +0000 |
parents | 6a9e47d1d4dd |
children | bf426a51dacf |
files | src/viewport.cpp |
diffstat | 1 files changed, 14 insertions(+), 2 deletions(-) [+] |
line wrap: on
line diff
--- a/src/viewport.cpp +++ b/src/viewport.cpp @@ -2241,8 +2241,8 @@ x1 = _thd.selend.x; y1 = _thd.selend.y; if (x1 != -1) { - int x2 = _thd.selstart.x; - int y2 = _thd.selstart.y; + int x2 = _thd.selstart.x & ~0xF; + int y2 = _thd.selstart.y & ~0xF; x1 &= ~0xF; y1 &= ~0xF; @@ -2305,6 +2305,17 @@ _thd.selstart.x = TileX(tile) * TILE_SIZE; _thd.selend.y = TileY(tile) * TILE_SIZE; _thd.selstart.y = TileY(tile) * TILE_SIZE; + + /* Needed so several things (road, autoroad, bridges, ...) are placed correctly. + * In effect, placement starts from the centre of a tile + */ + if (method == VPM_X_OR_Y || method == VPM_FIX_X || method == VPM_FIX_Y) { + _thd.selend.x += TILE_SIZE / 2; + _thd.selend.y += TILE_SIZE / 2; + _thd.selstart.x += TILE_SIZE / 2; + _thd.selstart.y += TILE_SIZE / 2; + } + if (_thd.place_mode == VHM_RECT) { _thd.place_mode = VHM_SPECIAL; _thd.next_drawstyle = HT_RECT; @@ -2652,6 +2663,7 @@ return; } + /* Needed so level-land is placed correctly */ if (_thd.next_drawstyle == HT_POINT) { x += TILE_SIZE / 2; y += TILE_SIZE / 2;