Changeset - r22422:11fa7af547be
[Not reviewed]
master
0 1 0
frosch - 8 years ago 2016-08-15 18:33:29
frosch@openttd.org
(svn r27629) -Fix: When dragging multiple vehicles in the depot, make the destination gap as long as the chain instead of just considering the first vehicle.
1 file changed with 5 insertions and 4 deletions:
0 comments (0 inline, 0 general)
src/train_gui.cpp
Show inline comments
 
@@ -56,15 +56,16 @@ void CcBuildWagon(const CommandCost &res
 
 * @param px        The current x position to draw from.
 
 * @param max_width The maximum space available to draw.
 
 * @param selection Selected vehicle that is dragged.
 
 * @param chain     Whether a whole chain is dragged.
 
 * @return The width of the highlight mark.
 
 */
 
static int HighlightDragPosition(int px, int max_width, VehicleID selection)
 
static int HighlightDragPosition(int px, int max_width, VehicleID selection, bool chain)
 
{
 
	bool rtl = _current_text_dir == TD_RTL;
 

	
 
	assert(selection != INVALID_VEHICLE);
 
	int dragged_width = WD_FRAMERECT_LEFT + WD_FRAMERECT_RIGHT;
 
	for (Train *t = Train::Get(selection); t != NULL; t = t->HasArticulatedPart() ? t->GetNextArticulatedPart() : NULL) {
 
	for (Train *t = Train::Get(selection); t != NULL; t = chain ? t->Next() : (t->HasArticulatedPart() ? t->GetNextArticulatedPart() : NULL)) {
 
		dragged_width += t->GetDisplayImageWidth(NULL);
 
	}
 

	
 
@@ -114,7 +115,7 @@ void DrawTrainImage(const Train *v, int 
 
	for (; v != NULL && (rtl ? px > 0 : px < max_width); v = v->Next()) {
 
		if (dragging && !drag_at_end_of_train && drag_dest == v->index) {
 
			/* Highlight the drag-and-drop destination inside the train. */
 
			int drag_hlight_width = HighlightDragPosition(px, max_width, selection);
 
			int drag_hlight_width = HighlightDragPosition(px, max_width, selection, _cursor.vehchain);
 
			px += rtl ? -drag_hlight_width : drag_hlight_width;
 
		}
 

	
 
@@ -146,7 +147,7 @@ void DrawTrainImage(const Train *v, int 
 

	
 
	if (dragging && drag_at_end_of_train) {
 
		/* Highlight the drag-and-drop destination at the end of the train. */
 
		HighlightDragPosition(px, max_width, selection);
 
		HighlightDragPosition(px, max_width, selection, _cursor.vehchain);
 
	}
 

	
 
	if (highlight_l != highlight_r) {
0 comments (0 inline, 0 general)