From ddc920521215c38ab7e96bebb929b313758268df Mon Sep 17 00:00:00 2001 From: frosch Date: Mon, 15 Aug 2016 18:33:52 +0000 Subject: (svn r27630) -Codechange: Deduplicate code to attach vehicle to cursor. --- src/depot_gui.cpp | 10 +++------- src/group_gui.cpp | 4 ++-- src/vehicle_gui.cpp | 17 +++++++++++++++++ src/vehicle_gui.h | 1 + 4 files changed, 23 insertions(+), 9 deletions(-) (limited to 'src') 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 */ -- cgit v1.2.3-70-g09d2