mirror of https://github.com/OpenTTD/OpenTTD
(svn r13759) -Fix [FS#2147]: selecting non-full length vehicles in the depot gui would place the "mouse pointer" out of the center of the vehicle making it hard to "aim".
parent
690859bf57
commit
fec49bcc83
|
@ -513,6 +513,20 @@ struct DepotWindow : Window {
|
||||||
this->sel = v->index;
|
this->sel = v->index;
|
||||||
this->SetDirty();
|
this->SetDirty();
|
||||||
SetObjectToPlaceWnd(image, GetVehiclePalette(v), VHM_DRAG, this);
|
SetObjectToPlaceWnd(image, GetVehiclePalette(v), VHM_DRAG, this);
|
||||||
|
|
||||||
|
switch (v->type) {
|
||||||
|
case VEH_TRAIN:
|
||||||
|
_cursor.short_vehicle_offset = 16 - v->u.rail.cached_veh_length * 2;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case VEH_ROAD:
|
||||||
|
_cursor.short_vehicle_offset = 16 - v->u.road.cached_veh_length * 2;
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
_cursor.short_vehicle_offset = 0;
|
||||||
|
break;
|
||||||
|
}
|
||||||
_cursor.vehchain = _ctrl_pressed;
|
_cursor.vehchain = _ctrl_pressed;
|
||||||
}
|
}
|
||||||
} break;
|
} break;
|
||||||
|
|
|
@ -1008,7 +1008,7 @@ void DrawMouseCursor()
|
||||||
}
|
}
|
||||||
|
|
||||||
w = _cursor.size.x;
|
w = _cursor.size.x;
|
||||||
x = _cursor.pos.x + _cursor.offs.x;
|
x = _cursor.pos.x + _cursor.offs.x + _cursor.short_vehicle_offset;
|
||||||
if (x < 0) {
|
if (x < 0) {
|
||||||
w += x;
|
w += x;
|
||||||
x = 0;
|
x = 0;
|
||||||
|
@ -1036,7 +1036,7 @@ void DrawMouseCursor()
|
||||||
|
|
||||||
/* Draw cursor on screen */
|
/* Draw cursor on screen */
|
||||||
_cur_dpi = &_screen;
|
_cur_dpi = &_screen;
|
||||||
DrawSprite(_cursor.sprite, _cursor.pal, _cursor.pos.x, _cursor.pos.y);
|
DrawSprite(_cursor.sprite, _cursor.pal, _cursor.pos.x + _cursor.short_vehicle_offset, _cursor.pos.y);
|
||||||
|
|
||||||
_video_driver->MakeDirty(_cursor.draw_pos.x, _cursor.draw_pos.y, _cursor.draw_size.x, _cursor.draw_size.y);
|
_video_driver->MakeDirty(_cursor.draw_pos.x, _cursor.draw_pos.y, _cursor.draw_size.x, _cursor.draw_size.y);
|
||||||
|
|
||||||
|
@ -1287,6 +1287,7 @@ static void SetCursorSprite(SpriteID cursor, SpriteID pal)
|
||||||
cv->offs.y = p->y_offs;
|
cv->offs.y = p->y_offs;
|
||||||
|
|
||||||
cv->dirty = true;
|
cv->dirty = true;
|
||||||
|
cv->short_vehicle_offset = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void SwitchAnimatedCursor()
|
static void SwitchAnimatedCursor()
|
||||||
|
|
|
@ -113,6 +113,7 @@ struct AnimCursor {
|
||||||
struct CursorVars {
|
struct CursorVars {
|
||||||
Point pos, size, offs, delta; ///< position, size, offset from top-left, and movement
|
Point pos, size, offs, delta; ///< position, size, offset from top-left, and movement
|
||||||
Point draw_pos, draw_size; ///< position and size bounding-box for drawing
|
Point draw_pos, draw_size; ///< position and size bounding-box for drawing
|
||||||
|
int short_vehicle_offset; ///< offset of the X for short vehicles
|
||||||
SpriteID sprite; ///< current image of cursor
|
SpriteID sprite; ///< current image of cursor
|
||||||
SpriteID pal;
|
SpriteID pal;
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue