diff --git a/src/depot_gui.cpp b/src/depot_gui.cpp --- a/src/depot_gui.cpp +++ b/src/depot_gui.cpp @@ -505,16 +505,12 @@ struct DepotWindow : Window { this->sel = INVALID_VEHICLE; TrainDepotMoveVehicle(v, sel, gdvp.head); } else if (v != NULL) { - bool rtl = _current_text_dir == TD_RTL; - int image = v->GetImage(rtl ? DIR_E : DIR_W, EIT_IN_DEPOT); - SetObjectToPlaceWnd(image, GetVehiclePalette(v), HT_DRAG, this); + SetObjectToPlaceWnd(SPR_CURSOR_MOUSE, PAL_NONE, HT_DRAG, this); + SetMouseCursorVehicle(v, EIT_IN_DEPOT); + _cursor.vehchain = _ctrl_pressed; this->sel = v->index; this->SetDirty(); - - _cursor.sprite_pos[0].x = v->IsGroundVehicle() ? (16 - v->GetGroundVehicleCache()->cached_veh_length * 2) * (rtl ? -1 : 1) : 0; - _cursor.vehchain = _ctrl_pressed; - UpdateCursorSize(); } break; } diff --git a/src/group_gui.cpp b/src/group_gui.cpp --- a/src/group_gui.cpp +++ b/src/group_gui.cpp @@ -627,8 +627,8 @@ public: this->vehicle_sel = v->index; - int image = v->GetImage(_current_text_dir == TD_RTL ? DIR_E : DIR_W, EIT_IN_LIST); - SetObjectToPlaceWnd(image, GetVehiclePalette(v), HT_DRAG, this); + SetObjectToPlaceWnd(SPR_CURSOR_MOUSE, PAL_NONE, HT_DRAG, this); + SetMouseCursorVehicle(v, EIT_IN_LIST); _cursor.vehchain = true; this->SetDirty(); diff --git a/src/vehicle_gui.cpp b/src/vehicle_gui.cpp --- a/src/vehicle_gui.cpp +++ b/src/vehicle_gui.cpp @@ -2861,3 +2861,20 @@ int GetVehicleWidth(Vehicle *v, EngineIm return vehicle_width; } + +/** + * Set the mouse cursor to look like a vehicle. + * @param v Vehicle + * @param image_type Type of vehicle image to use. + */ +void SetMouseCursorVehicle(const Vehicle *v, EngineImageType image_type) +{ + bool rtl = _current_text_dir == TD_RTL; + + _cursor.sprite_count = 1; + _cursor.sprite_seq[0].sprite = v->GetImage(rtl ? DIR_E : DIR_W, EIT_IN_DEPOT); + _cursor.sprite_seq[0].pal = GetVehiclePalette(v); + _cursor.sprite_pos[0].x = v->IsGroundVehicle() ? (16 - v->GetGroundVehicleCache()->cached_veh_length * 2) * (rtl ? -1 : 1) : 0; + + UpdateCursorSize(); +} diff --git a/src/vehicle_gui.h b/src/vehicle_gui.h --- a/src/vehicle_gui.h +++ b/src/vehicle_gui.h @@ -100,5 +100,6 @@ void StartStopVehicle(const Vehicle *v, Vehicle *CheckClickOnVehicle(const struct ViewPort *vp, int x, int y); void DrawVehicleImage(const Vehicle *v, int left, int right, int y, VehicleID selection, EngineImageType image_type, int skip); +void SetMouseCursorVehicle(const Vehicle *v, EngineImageType image_type); #endif /* VEHICLE_GUI_H */