summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/depot_gui.cpp10
-rw-r--r--src/group_gui.cpp4
-rw-r--r--src/vehicle_gui.cpp17
-rw-r--r--src/vehicle_gui.h1
4 files changed, 23 insertions, 9 deletions
diff --git a/src/depot_gui.cpp b/src/depot_gui.cpp
index 76bb8df50..47eefc65e 100644
--- 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
index 81fb1202e..361ab53e5 100644
--- 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
index 1f03319ed..03f9ef225 100644
--- a/src/vehicle_gui.cpp
+++ b/src/vehicle_gui.cpp
@@ -2861,3 +2861,20 @@ int GetVehicleWidth(Vehicle *v, EngineImageType image_type)
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
index 83e098dcd..da98bf033 100644
--- a/src/vehicle_gui.h
+++ b/src/vehicle_gui.h
@@ -100,5 +100,6 @@ void StartStopVehicle(const Vehicle *v, bool texteffect);
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 */