branch | NewGRF_ports |
changeset 6720 | 35756db7e577 |
parent 6719 | 4cc327ad39d5 |
child 6725 | 23339968083f |
6719:4cc327ad39d5 | 6720:35756db7e577 |
---|---|
22 #include "depot.h" |
22 #include "depot.h" |
23 #include "waypoint.h" |
23 #include "waypoint.h" |
24 #include "train.h" |
24 #include "train.h" |
25 #include "water_map.h" |
25 #include "water_map.h" |
26 #include "vehicle_gui.h" |
26 #include "vehicle_gui.h" |
27 #include "timetable.h" |
|
27 #include "cargotype.h" |
28 #include "cargotype.h" |
28 |
29 |
29 enum OrderWindowWidgets { |
30 enum OrderWindowWidgets { |
30 ORDER_WIDGET_CLOSEBOX = 0, |
31 ORDER_WIDGET_CLOSEBOX = 0, |
31 ORDER_WIDGET_CAPTION, |
32 ORDER_WIDGET_CAPTION, |
33 ORDER_WIDGET_TIMETABLE_VIEW, |
|
32 ORDER_WIDGET_ORDER_LIST, |
34 ORDER_WIDGET_ORDER_LIST, |
33 ORDER_WIDGET_SCROLLBAR, |
35 ORDER_WIDGET_SCROLLBAR, |
34 ORDER_WIDGET_SKIP, |
36 ORDER_WIDGET_SKIP, |
35 ORDER_WIDGET_DELETE, |
37 ORDER_WIDGET_DELETE, |
36 ORDER_WIDGET_NON_STOP, |
38 ORDER_WIDGET_NON_STOP, |
42 ORDER_WIDGET_SHARED_ORDER_LIST, |
44 ORDER_WIDGET_SHARED_ORDER_LIST, |
43 ORDER_WIDGET_RESIZE_BAR, |
45 ORDER_WIDGET_RESIZE_BAR, |
44 ORDER_WIDGET_RESIZE, |
46 ORDER_WIDGET_RESIZE, |
45 }; |
47 }; |
46 |
48 |
49 /** |
|
50 * Return the memorised selected order. |
|
51 * |
|
52 * @param w current window |
|
53 * @return the memorised order if it is a vaild one |
|
54 * else return the number of orders |
|
55 */ |
|
47 static int OrderGetSel(const Window *w) |
56 static int OrderGetSel(const Window *w) |
48 { |
57 { |
49 const Vehicle *v = GetVehicle(w->window_number); |
58 const Vehicle *v = GetVehicle(w->window_number); |
50 int num = WP(w,order_d).sel; |
59 int num = WP(w,order_d).sel; |
51 |
60 |
52 return (num >= 0 && num < v->num_orders) ? num : v->num_orders; |
61 return (num >= 0 && num < v->num_orders) ? num : v->num_orders; |
62 } |
|
63 |
|
64 /** |
|
65 * Calculate the selected order. |
|
66 * The calculation is based on the relative (to the window) y click position and |
|
67 * the position of the scrollbar. |
|
68 * |
|
69 * @param w current window |
|
70 * @param y Y-value of the click relative to the window origin |
|
71 * @param v current vehicle |
|
72 * @return the new selected order if the order is valid else return that |
|
73 * an invalid one has been selected. |
|
74 */ |
|
75 static int GetOrderFromOrderWndPt(Window *w, int y, const Vehicle *v) |
|
76 { |
|
77 /* |
|
78 * Calculation description: |
|
79 * 15 = 14 (w->widget[ORDER_WIDGET_ORDER_LIST].top) + 1 (frame-line) |
|
80 * 10 = order text hight |
|
81 */ |
|
82 int sel = (y - 15) / 10; |
|
83 |
|
84 if ((uint)sel >= w->vscroll.cap) return INVALID_ORDER; |
|
85 |
|
86 sel += w->vscroll.pos; |
|
87 |
|
88 return (sel <= v->num_orders && sel >= 0) ? sel : INVALID_ORDER; |
|
53 } |
89 } |
54 |
90 |
55 static StringID StationOrderStrings[] = { |
91 static StringID StationOrderStrings[] = { |
56 STR_8806_GO_TO, |
92 STR_8806_GO_TO, |
57 STR_8807_GO_TO_TRANSFER, |
93 STR_8807_GO_TO_TRANSFER, |
91 |
127 |
92 order = GetVehicleOrder(v, sel); |
128 order = GetVehicleOrder(v, sel); |
93 |
129 |
94 if (v->owner == _local_player) { |
130 if (v->owner == _local_player) { |
95 /* skip */ |
131 /* skip */ |
96 SetWindowWidgetDisabledState(w, ORDER_WIDGET_SKIP, v->num_orders == 0); |
132 SetWindowWidgetDisabledState(w, ORDER_WIDGET_SKIP, v->num_orders <= 1); |
97 |
133 |
98 /* delete */ |
134 /* delete */ |
99 SetWindowWidgetDisabledState(w, ORDER_WIDGET_DELETE, |
135 SetWindowWidgetDisabledState(w, ORDER_WIDGET_DELETE, |
100 (uint)v->num_orders + ((shared_orders || v->num_orders != 0) ? 1 : 0) <= (uint)WP(w, order_d).sel); |
136 (uint)v->num_orders + ((shared_orders || v->num_orders != 0) ? 1 : 0) <= (uint)WP(w, order_d).sel); |
101 |
137 |
138 DisableWindowWidget(w, ORDER_WIDGET_FULL_LOAD); |
174 DisableWindowWidget(w, ORDER_WIDGET_FULL_LOAD); |
139 DisableWindowWidget(w, ORDER_WIDGET_UNLOAD); |
175 DisableWindowWidget(w, ORDER_WIDGET_UNLOAD); |
140 } |
176 } |
141 } |
177 } |
142 |
178 |
143 SetDParam(0, v->string_id); |
179 SetDParam(0, v->index); |
144 SetDParam(1, v->unitnumber); |
|
145 DrawWindowWidgets(w); |
180 DrawWindowWidgets(w); |
146 |
181 |
147 y = 15; |
182 y = 15; |
148 |
183 |
149 i = w->vscroll.pos; |
184 i = w->vscroll.pos; |
354 if (WP(w,order_d).sel != -1) WP(w,order_d).sel++; |
389 if (WP(w,order_d).sel != -1) WP(w,order_d).sel++; |
355 ResetObjectToPlace(); |
390 ResetObjectToPlace(); |
356 } |
391 } |
357 } |
392 } |
358 |
393 |
394 /** |
|
395 * Handle the click on the goto button. |
|
396 * |
|
397 * @param w current window |
|
398 * @param v current vehicle |
|
399 */ |
|
359 static void OrderClick_Goto(Window *w, const Vehicle *v) |
400 static void OrderClick_Goto(Window *w, const Vehicle *v) |
360 { |
401 { |
361 InvalidateWidget(w, ORDER_WIDGET_GOTO); |
402 InvalidateWidget(w, ORDER_WIDGET_GOTO); |
362 ToggleWidgetLoweredState(w, ORDER_WIDGET_GOTO); |
403 ToggleWidgetLoweredState(w, ORDER_WIDGET_GOTO); |
363 if (IsWindowWidgetLowered(w, ORDER_WIDGET_GOTO)) { |
404 if (IsWindowWidgetLowered(w, ORDER_WIDGET_GOTO)) { |
366 } else { |
407 } else { |
367 ResetObjectToPlace(); |
408 ResetObjectToPlace(); |
368 } |
409 } |
369 } |
410 } |
370 |
411 |
412 /** |
|
413 * Handle the click on the full load button. |
|
414 * |
|
415 * @param w current window |
|
416 * @param v current vehicle |
|
417 */ |
|
371 static void OrderClick_FullLoad(Window *w, const Vehicle *v) |
418 static void OrderClick_FullLoad(Window *w, const Vehicle *v) |
372 { |
419 { |
373 DoCommandP(v->tile, v->index + (OrderGetSel(w) << 16), OFB_FULL_LOAD, NULL, CMD_MODIFY_ORDER | CMD_MSG(STR_8835_CAN_T_MODIFY_THIS_ORDER)); |
420 DoCommandP(v->tile, v->index + (OrderGetSel(w) << 16), OFB_FULL_LOAD, NULL, CMD_MODIFY_ORDER | CMD_MSG(STR_8835_CAN_T_MODIFY_THIS_ORDER)); |
374 } |
421 } |
375 |
422 |
423 /** |
|
424 * Handle the click on the unload button. |
|
425 * |
|
426 * @param w current window |
|
427 * @param v current vehicle |
|
428 */ |
|
376 static void OrderClick_Unload(Window *w, const Vehicle *v) |
429 static void OrderClick_Unload(Window *w, const Vehicle *v) |
377 { |
430 { |
378 DoCommandP(v->tile, v->index + (OrderGetSel(w) << 16), OFB_UNLOAD, NULL, CMD_MODIFY_ORDER | CMD_MSG(STR_8835_CAN_T_MODIFY_THIS_ORDER)); |
431 DoCommandP(v->tile, v->index + (OrderGetSel(w) << 16), OFB_UNLOAD, NULL, CMD_MODIFY_ORDER | CMD_MSG(STR_8835_CAN_T_MODIFY_THIS_ORDER)); |
379 } |
432 } |
380 |
433 |
434 /** |
|
435 * Handle the click on the nonstop button. |
|
436 * |
|
437 * @param w current window |
|
438 * @param v current vehicle |
|
439 */ |
|
381 static void OrderClick_Nonstop(Window *w, const Vehicle *v) |
440 static void OrderClick_Nonstop(Window *w, const Vehicle *v) |
382 { |
441 { |
383 DoCommandP(v->tile, v->index + (OrderGetSel(w) << 16), OFB_NON_STOP, NULL, CMD_MODIFY_ORDER | CMD_MSG(STR_8835_CAN_T_MODIFY_THIS_ORDER)); |
442 DoCommandP(v->tile, v->index + (OrderGetSel(w) << 16), OFB_NON_STOP, NULL, CMD_MODIFY_ORDER | CMD_MSG(STR_8835_CAN_T_MODIFY_THIS_ORDER)); |
384 } |
443 } |
385 |
444 |
445 /** |
|
446 * Handle the click on the transfer button. |
|
447 * |
|
448 * @param w current window |
|
449 * @param v current vehicle |
|
450 */ |
|
386 static void OrderClick_Transfer(Window* w, const Vehicle* v) |
451 static void OrderClick_Transfer(Window* w, const Vehicle* v) |
387 { |
452 { |
388 DoCommandP(v->tile, v->index + (OrderGetSel(w) << 16), OFB_TRANSFER, NULL, CMD_MODIFY_ORDER | CMD_MSG(STR_8835_CAN_T_MODIFY_THIS_ORDER)); |
453 DoCommandP(v->tile, v->index + (OrderGetSel(w) << 16), OFB_TRANSFER, NULL, CMD_MODIFY_ORDER | CMD_MSG(STR_8835_CAN_T_MODIFY_THIS_ORDER)); |
389 } |
454 } |
390 |
455 |
456 /** |
|
457 * Handle the click on the skip button. |
|
458 * If ctrl is pressed skip to selected order. |
|
459 * Else skip to current order + 1 |
|
460 * |
|
461 * @param w current window |
|
462 * @param v current vehicle |
|
463 */ |
|
391 static void OrderClick_Skip(Window *w, const Vehicle *v) |
464 static void OrderClick_Skip(Window *w, const Vehicle *v) |
392 { |
465 { |
393 DoCommandP(v->tile, v->index, 0, NULL, CMD_SKIP_ORDER); |
466 /* Don't skip when there's nothing to skip */ |
394 } |
467 if (_ctrl_pressed && v->cur_order_index == OrderGetSel(w)) return; |
395 |
468 |
469 DoCommandP(v->tile, v->index, _ctrl_pressed ? OrderGetSel(w) : ((v->cur_order_index + 1) % v->num_orders), |
|
470 NULL, CMD_SKIP_TO_ORDER | CMD_MSG(_ctrl_pressed ? STR_CAN_T_SKIP_TO_ORDER : STR_CAN_T_SKIP_ORDER)); |
|
471 } |
|
472 |
|
473 /** |
|
474 * Handle the click on the unload button. |
|
475 * |
|
476 * @param w current window |
|
477 * @param v current vehicle |
|
478 */ |
|
396 static void OrderClick_Delete(Window *w, const Vehicle *v) |
479 static void OrderClick_Delete(Window *w, const Vehicle *v) |
397 { |
480 { |
398 DoCommandP(v->tile, v->index, OrderGetSel(w), NULL, CMD_DELETE_ORDER | CMD_MSG(STR_8834_CAN_T_DELETE_THIS_ORDER)); |
481 DoCommandP(v->tile, v->index, OrderGetSel(w), NULL, CMD_DELETE_ORDER | CMD_MSG(STR_8834_CAN_T_DELETE_THIS_ORDER)); |
399 } |
482 } |
400 |
483 |
484 /** |
|
485 * Handle the click on the refit button. |
|
486 * If ctrl is pressed cancel refitting. |
|
487 * Else show the refit window. |
|
488 * |
|
489 * @param w current window |
|
490 * @param v current vehicle |
|
491 */ |
|
401 static void OrderClick_Refit(Window *w, const Vehicle *v) |
492 static void OrderClick_Refit(Window *w, const Vehicle *v) |
402 { |
493 { |
403 if (_ctrl_pressed) { |
494 if (_ctrl_pressed) { |
404 /* Cancel refitting */ |
495 /* Cancel refitting */ |
405 DoCommandP(v->tile, v->index, (WP(w,order_d).sel << 16) | (CT_NO_REFIT << 8) | CT_NO_REFIT, NULL, CMD_ORDER_REFIT); |
496 DoCommandP(v->tile, v->index, (WP(w,order_d).sel << 16) | (CT_NO_REFIT << 8) | CT_NO_REFIT, NULL, CMD_ORDER_REFIT); |
408 } |
499 } |
409 } |
500 } |
410 |
501 |
411 typedef void OnButtonVehClick(Window *w, const Vehicle *v); |
502 typedef void OnButtonVehClick(Window *w, const Vehicle *v); |
412 |
503 |
504 /** |
|
505 * Keycode function mapping. |
|
506 * |
|
507 * @see _order_keycodes[] |
|
508 * @note Keep them allways in sync with _order_keycodes[]! |
|
509 */ |
|
413 static OnButtonVehClick* const _order_button_proc[] = { |
510 static OnButtonVehClick* const _order_button_proc[] = { |
414 OrderClick_Skip, |
511 OrderClick_Skip, |
415 OrderClick_Delete, |
512 OrderClick_Delete, |
416 OrderClick_Nonstop, |
513 OrderClick_Nonstop, |
417 OrderClick_Goto, |
514 OrderClick_Goto, |
442 assert(w->widget[ORDER_WIDGET_REFIT].right == w->widget[ORDER_WIDGET_UNLOAD].right); |
539 assert(w->widget[ORDER_WIDGET_REFIT].right == w->widget[ORDER_WIDGET_UNLOAD].right); |
443 assert(w->widget[ORDER_WIDGET_REFIT].top == w->widget[ORDER_WIDGET_UNLOAD].top); |
540 assert(w->widget[ORDER_WIDGET_REFIT].top == w->widget[ORDER_WIDGET_UNLOAD].top); |
444 assert(w->widget[ORDER_WIDGET_REFIT].bottom == w->widget[ORDER_WIDGET_UNLOAD].bottom); |
541 assert(w->widget[ORDER_WIDGET_REFIT].bottom == w->widget[ORDER_WIDGET_UNLOAD].bottom); |
445 assert(w->widget[ORDER_WIDGET_REFIT].display_flags == w->widget[ORDER_WIDGET_UNLOAD].display_flags); |
542 assert(w->widget[ORDER_WIDGET_REFIT].display_flags == w->widget[ORDER_WIDGET_UNLOAD].display_flags); |
446 } |
543 } |
544 |
|
545 if (_patches.timetabling) { |
|
546 w->widget[ORDER_WIDGET_CAPTION].right -= 61; |
|
547 } else { |
|
548 HideWindowWidget(w, ORDER_WIDGET_TIMETABLE_VIEW); |
|
549 } |
|
550 |
|
447 break; |
551 break; |
448 |
552 |
449 case WE_PAINT: |
553 case WE_PAINT: |
450 DrawOrdersWindow(w); |
554 DrawOrdersWindow(w); |
451 break; |
555 break; |
452 |
556 |
453 case WE_CLICK: { |
557 case WE_CLICK: { |
454 Vehicle *v = GetVehicle(w->window_number); |
558 const Vehicle *v = GetVehicle(w->window_number); |
455 switch (e->we.click.widget) { |
559 switch (e->we.click.widget) { |
456 case ORDER_WIDGET_ORDER_LIST: { |
560 case ORDER_WIDGET_ORDER_LIST: { |
457 int sel = (e->we.click.pt.y - 15) / 10; |
561 ResetObjectToPlace(); |
458 |
562 |
459 if ((uint)sel >= w->vscroll.cap) return; |
563 int sel = GetOrderFromOrderWndPt(w, e->we.click.pt.y, v); |
460 |
564 |
461 sel += w->vscroll.pos; |
565 if (sel == INVALID_ORDER) { |
566 /* This was a click on an empty part of the orders window, so |
|
567 * deselect the currently selected order. */ |
|
568 WP(w,order_d).sel = -1; |
|
569 SetWindowDirty(w); |
|
570 return; |
|
571 } |
|
462 |
572 |
463 if (_ctrl_pressed && sel < v->num_orders) { |
573 if (_ctrl_pressed && sel < v->num_orders) { |
464 const Order *ord = GetVehicleOrder(v, sel); |
574 const Order *ord = GetVehicleOrder(v, sel); |
465 TileIndex xy; |
575 TileIndex xy; |
466 |
576 |
471 default: xy = 0; break; |
581 default: xy = 0; break; |
472 } |
582 } |
473 |
583 |
474 if (xy != 0) ScrollMainWindowToTile(xy); |
584 if (xy != 0) ScrollMainWindowToTile(xy); |
475 return; |
585 return; |
476 } |
586 } else { |
477 |
587 if (sel == WP(w,order_d).sel) { |
478 if (sel == WP(w,order_d).sel) sel = -1; |
588 /* Deselect clicked order */ |
479 WP(w,order_d).sel = sel; |
589 WP(w,order_d).sel = -1; |
590 } else { |
|
591 /* Select clicked order */ |
|
592 WP(w,order_d).sel = sel; |
|
593 |
|
594 if (v->owner == _local_player) { |
|
595 /* Activate drag and drop */ |
|
596 SetObjectToPlaceWnd(SPR_CURSOR_MOUSE, PAL_NONE, 4, w); |
|
597 } |
|
598 } |
|
599 } |
|
600 |
|
480 SetWindowDirty(w); |
601 SetWindowDirty(w); |
481 } break; |
602 } break; |
482 |
603 |
483 case ORDER_WIDGET_SKIP: |
604 case ORDER_WIDGET_SKIP: |
484 OrderClick_Skip(w, v); |
605 OrderClick_Skip(w, v); |
508 break; |
629 break; |
509 |
630 |
510 case ORDER_WIDGET_TRANSFER: |
631 case ORDER_WIDGET_TRANSFER: |
511 OrderClick_Transfer(w, v); |
632 OrderClick_Transfer(w, v); |
512 break; |
633 break; |
634 |
|
635 case ORDER_WIDGET_TIMETABLE_VIEW: |
|
636 ShowTimetableWindow(v); |
|
637 break; |
|
638 |
|
513 case ORDER_WIDGET_SHARED_ORDER_LIST: |
639 case ORDER_WIDGET_SHARED_ORDER_LIST: |
514 ShowVehicleListWindow(v); |
640 ShowVehicleListWindow(v); |
515 break; |
641 break; |
516 } |
642 } |
517 } break; |
643 } break; |
644 |
|
645 case WE_DRAGDROP: { |
|
646 const Vehicle *v = GetVehicle(w->window_number); |
|
647 |
|
648 switch (e->we.click.widget) { |
|
649 case ORDER_WIDGET_ORDER_LIST: { |
|
650 int from_order = OrderGetSel(w); |
|
651 int to_order = GetOrderFromOrderWndPt(w, e->we.dragdrop.pt.y, v); |
|
652 |
|
653 if (!(from_order == to_order || from_order == INVALID_ORDER || from_order > v->num_orders || to_order == INVALID_ORDER || to_order > v->num_orders) && |
|
654 DoCommandP(v->tile, v->index, from_order | (to_order << 16), NULL, CMD_MOVE_ORDER | CMD_MSG(STR_CAN_T_MOVE_THIS_ORDER))) { |
|
655 WP(w, order_d).sel = -1; |
|
656 } |
|
657 |
|
658 break; |
|
659 } |
|
660 |
|
661 case ORDER_WIDGET_DELETE: |
|
662 OrderClick_Delete(w, v); |
|
663 break; |
|
664 } |
|
665 |
|
666 ResetObjectToPlace(); |
|
667 break; |
|
668 } |
|
518 |
669 |
519 case WE_KEYPRESS: { |
670 case WE_KEYPRESS: { |
520 Vehicle *v = GetVehicle(w->window_number); |
671 Vehicle *v = GetVehicle(w->window_number); |
521 uint i; |
672 uint i; |
522 |
673 |
587 } |
738 } |
588 } break; |
739 } break; |
589 } |
740 } |
590 } |
741 } |
591 |
742 |
743 /** |
|
744 * Widget definition for player train orders |
|
745 */ |
|
592 static const Widget _orders_train_widgets[] = { |
746 static const Widget _orders_train_widgets[] = { |
593 { WWT_CLOSEBOX, RESIZE_NONE, 14, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW}, |
747 { WWT_CLOSEBOX, RESIZE_NONE, 14, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW}, // ORDER_WIDGET_CLOSEBOX |
594 { WWT_CAPTION, RESIZE_RIGHT, 14, 11, 398, 0, 13, STR_8829_ORDERS, STR_018C_WINDOW_TITLE_DRAG_THIS}, |
748 { WWT_CAPTION, RESIZE_RIGHT, 14, 11, 398, 0, 13, STR_8829_ORDERS, STR_018C_WINDOW_TITLE_DRAG_THIS}, // ORDER_WIDGET_CAPTION |
595 { WWT_PANEL, RESIZE_RB, 14, 0, 386, 14, 75, 0x0, STR_8852_ORDERS_LIST_CLICK_ON_ORDER}, |
749 { WWT_PUSHTXTBTN, RESIZE_LR, 14, 338, 398, 0, 13, STR_TIMETABLE_VIEW, STR_TIMETABLE_VIEW_TOOLTIP}, // ORDER_WIDGET_TIMETABLE_VIEW |
596 { WWT_SCROLLBAR, RESIZE_LRB, 14, 387, 398, 14, 75, 0x0, STR_0190_SCROLL_BAR_SCROLLS_LIST}, |
750 |
597 { WWT_PUSHTXTBTN, RESIZE_TB, 14, 0, 52, 76, 87, STR_8823_SKIP, STR_8853_SKIP_THE_CURRENT_ORDER}, |
751 { WWT_PANEL, RESIZE_RB, 14, 0, 386, 14, 75, 0x0, STR_8852_ORDERS_LIST_CLICK_ON_ORDER}, // ORDER_WIDGET_ORDER_LIST |
598 { WWT_PUSHTXTBTN, RESIZE_TB, 14, 53, 105, 76, 87, STR_8824_DELETE, STR_8854_DELETE_THE_HIGHLIGHTED}, |
752 |
599 { WWT_PUSHTXTBTN, RESIZE_TB, 14, 106, 158, 76, 87, STR_8825_NON_STOP, STR_8855_MAKE_THE_HIGHLIGHTED_ORDER}, |
753 { WWT_SCROLLBAR, RESIZE_LRB, 14, 387, 398, 14, 75, 0x0, STR_0190_SCROLL_BAR_SCROLLS_LIST}, // ORDER_WIDGET_SCROLLBAR |
600 { WWT_TEXTBTN, RESIZE_TB, 14, 159, 211, 76, 87, STR_8826_GO_TO, STR_8856_INSERT_A_NEW_ORDER_BEFORE}, |
754 |
601 { WWT_PUSHTXTBTN, RESIZE_TB, 14, 212, 264, 76, 87, STR_FULLLOAD_OR_SERVICE, STR_NULL}, |
755 { WWT_PUSHTXTBTN, RESIZE_TB, 14, 0, 52, 76, 87, STR_8823_SKIP, STR_8853_SKIP_THE_CURRENT_ORDER}, // ORDER_WIDGET_SKIP |
602 { WWT_PUSHTXTBTN, RESIZE_TB, 14, 265, 319, 76, 87, STR_8828_UNLOAD, STR_8858_MAKE_THE_HIGHLIGHTED_ORDER}, |
756 { WWT_PUSHTXTBTN, RESIZE_TB, 14, 53, 105, 76, 87, STR_8824_DELETE, STR_8854_DELETE_THE_HIGHLIGHTED}, // ORDER_WIDGET_DELETE |
603 { WWT_PUSHTXTBTN, RESIZE_TB, 14, 265, 319, 76, 87, STR_REFIT, STR_REFIT_TIP}, |
757 { WWT_PUSHTXTBTN, RESIZE_TB, 14, 106, 158, 76, 87, STR_8825_NON_STOP, STR_8855_MAKE_THE_HIGHLIGHTED_ORDER}, // ORDER_WIDGET_NON_STOP |
604 { WWT_PUSHTXTBTN, RESIZE_TB, 14, 320, 372, 76, 87, STR_886F_TRANSFER, STR_886D_MAKE_THE_HIGHLIGHTED_ORDER}, |
758 { WWT_TEXTBTN, RESIZE_TB, 14, 159, 211, 76, 87, STR_8826_GO_TO, STR_8856_INSERT_A_NEW_ORDER_BEFORE}, // ORDER_WIDGET_GOTO |
605 { WWT_PUSHIMGBTN, RESIZE_TB, 14, 373, 386, 76, 87, SPR_SHARED_ORDERS_ICON, STR_VEH_WITH_SHARED_ORDERS_LIST_TIP}, |
759 { WWT_PUSHTXTBTN, RESIZE_TB, 14, 212, 264, 76, 87, STR_FULLLOAD_OR_SERVICE, STR_NULL}, // ORDER_WIDGET_FULL_LOAD |
606 { WWT_PANEL, RESIZE_RTB, 14, 387, 386, 76, 87, 0x0, STR_NULL}, |
760 { WWT_PUSHTXTBTN, RESIZE_TB, 14, 265, 319, 76, 87, STR_8828_UNLOAD, STR_8858_MAKE_THE_HIGHLIGHTED_ORDER}, // ORDER_WIDGET_UNLOAD |
607 { WWT_RESIZEBOX, RESIZE_LRTB, 14, 387, 398, 76, 87, 0x0, STR_RESIZE_BUTTON}, |
761 { WWT_PUSHTXTBTN, RESIZE_TB, 14, 265, 319, 76, 87, STR_REFIT, STR_REFIT_TIP}, // ORDER_WIDGET_REFIT |
608 { WIDGETS_END}, |
762 { WWT_PUSHTXTBTN, RESIZE_TB, 14, 320, 372, 76, 87, STR_886F_TRANSFER, STR_886D_MAKE_THE_HIGHLIGHTED_ORDER}, // ORDER_WIDGET_TRANSFER |
763 |
|
764 { WWT_PUSHIMGBTN, RESIZE_TB, 14, 373, 386, 76, 87, SPR_SHARED_ORDERS_ICON, STR_VEH_WITH_SHARED_ORDERS_LIST_TIP}, // ORDER_WIDGET_SHARED_ORDER_LIST |
|
765 |
|
766 { WWT_PANEL, RESIZE_RTB, 14, 387, 386, 76, 87, 0x0, STR_NULL}, // ORDER_WIDGET_RESIZE_BAR |
|
767 |
|
768 { WWT_RESIZEBOX, RESIZE_LRTB, 14, 387, 398, 76, 87, 0x0, STR_RESIZE_BUTTON}, // ORDER_WIDGET_RESIZE |
|
769 { WIDGETS_END}, |
|
609 }; |
770 }; |
610 |
771 |
611 static const WindowDesc _orders_train_desc = { |
772 static const WindowDesc _orders_train_desc = { |
612 WDP_AUTO, WDP_AUTO, 399, 88, |
773 WDP_AUTO, WDP_AUTO, 399, 88, |
613 WC_VEHICLE_ORDERS,WC_VEHICLE_VIEW, |
774 WC_VEHICLE_ORDERS,WC_VEHICLE_VIEW, |
614 WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_RESIZABLE, |
775 WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_RESIZABLE, |
615 _orders_train_widgets, |
776 _orders_train_widgets, |
616 OrdersWndProc |
777 OrdersWndProc |
617 }; |
778 }; |
618 |
779 |
780 /** |
|
781 * Widget definition for player orders (!train) |
|
782 */ |
|
619 static const Widget _orders_widgets[] = { |
783 static const Widget _orders_widgets[] = { |
620 { WWT_CLOSEBOX, RESIZE_NONE, 14, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW}, |
784 { WWT_CLOSEBOX, RESIZE_NONE, 14, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW}, // ORDER_WIDGET_CLOSEBOX |
621 { WWT_CAPTION, RESIZE_RIGHT, 14, 11, 409, 0, 13, STR_8829_ORDERS, STR_018C_WINDOW_TITLE_DRAG_THIS}, |
785 { WWT_CAPTION, RESIZE_RIGHT, 14, 11, 409, 0, 13, STR_8829_ORDERS, STR_018C_WINDOW_TITLE_DRAG_THIS}, // ORDER_WIDGET_CAPTION |
622 { WWT_PANEL, RESIZE_RB, 14, 0, 397, 14, 75, 0x0, STR_8852_ORDERS_LIST_CLICK_ON_ORDER}, |
786 { WWT_PUSHTXTBTN, RESIZE_LR, 14, 349, 409, 0, 13, STR_TIMETABLE_VIEW, STR_TIMETABLE_VIEW_TOOLTIP}, // ORDER_WIDGET_TIMETABLE_VIEW |
623 { WWT_SCROLLBAR, RESIZE_LRB, 14, 398, 409, 14, 75, 0x0, STR_0190_SCROLL_BAR_SCROLLS_LIST}, |
787 |
624 { WWT_PUSHTXTBTN, RESIZE_TB, 14, 0, 63, 76, 87, STR_8823_SKIP, STR_8853_SKIP_THE_CURRENT_ORDER}, |
788 { WWT_PANEL, RESIZE_RB, 14, 0, 397, 14, 75, 0x0, STR_8852_ORDERS_LIST_CLICK_ON_ORDER}, // ORDER_WIDGET_ORDER_LIST |
625 { WWT_PUSHTXTBTN, RESIZE_TB, 14, 64, 128, 76, 87, STR_8824_DELETE, STR_8854_DELETE_THE_HIGHLIGHTED}, |
789 |
626 { WWT_EMPTY, RESIZE_TB, 14, 0, 0, 76, 87, 0x0, 0x0}, |
790 { WWT_SCROLLBAR, RESIZE_LRB, 14, 398, 409, 14, 75, 0x0, STR_0190_SCROLL_BAR_SCROLLS_LIST}, // ORDER_WIDGET_SCROLLBAR |
627 { WWT_TEXTBTN, RESIZE_TB, 14, 129, 192, 76, 87, STR_8826_GO_TO, STR_8856_INSERT_A_NEW_ORDER_BEFORE}, |
791 |
628 { WWT_PUSHTXTBTN, RESIZE_TB, 14, 193, 256, 76, 87, STR_FULLLOAD_OR_SERVICE, STR_NULL}, |
792 { WWT_PUSHTXTBTN, RESIZE_TB, 14, 0, 63, 76, 87, STR_8823_SKIP, STR_8853_SKIP_THE_CURRENT_ORDER}, // ORDER_WIDGET_SKIP |
629 { WWT_PUSHTXTBTN, RESIZE_TB, 14, 257, 319, 76, 87, STR_8828_UNLOAD, STR_8858_MAKE_THE_HIGHLIGHTED_ORDER}, |
793 { WWT_PUSHTXTBTN, RESIZE_TB, 14, 64, 128, 76, 87, STR_8824_DELETE, STR_8854_DELETE_THE_HIGHLIGHTED}, // ORDER_WIDGET_DELETE |
630 { WWT_PUSHTXTBTN, RESIZE_TB, 14, 257, 319, 76, 87, STR_REFIT, STR_REFIT_TIP}, |
794 { WWT_EMPTY, RESIZE_TB, 14, 0, 0, 76, 87, 0x0, 0x0}, // ORDER_WIDGET_NON_STOP |
631 { WWT_PUSHTXTBTN, RESIZE_TB, 14, 320, 383, 76, 87, STR_886F_TRANSFER, STR_886D_MAKE_THE_HIGHLIGHTED_ORDER}, |
795 { WWT_TEXTBTN, RESIZE_TB, 14, 129, 192, 76, 87, STR_8826_GO_TO, STR_8856_INSERT_A_NEW_ORDER_BEFORE}, // ORDER_WIDGET_GOTO |
632 { WWT_PUSHIMGBTN, RESIZE_TB, 14, 384, 397, 76, 87, SPR_SHARED_ORDERS_ICON, STR_VEH_WITH_SHARED_ORDERS_LIST_TIP}, |
796 { WWT_PUSHTXTBTN, RESIZE_TB, 14, 193, 256, 76, 87, STR_FULLLOAD_OR_SERVICE, STR_NULL}, // ORDER_WIDGET_FULL_LOAD |
633 { WWT_PANEL, RESIZE_RTB, 14, 397, 396, 76, 87, 0x0, STR_NULL}, |
797 { WWT_PUSHTXTBTN, RESIZE_TB, 14, 257, 319, 76, 87, STR_8828_UNLOAD, STR_8858_MAKE_THE_HIGHLIGHTED_ORDER}, // ORDER_WIDGET_UNLOAD |
634 { WWT_RESIZEBOX, RESIZE_LRTB, 14, 398, 409, 76, 87, 0x0, STR_RESIZE_BUTTON}, |
798 { WWT_PUSHTXTBTN, RESIZE_TB, 14, 257, 319, 76, 87, STR_REFIT, STR_REFIT_TIP}, // ORDER_WIDGET_REFIT |
635 { WIDGETS_END}, |
799 { WWT_PUSHTXTBTN, RESIZE_TB, 14, 320, 383, 76, 87, STR_886F_TRANSFER, STR_886D_MAKE_THE_HIGHLIGHTED_ORDER}, // ORDER_WIDGET_TRANSFER |
800 |
|
801 { WWT_PUSHIMGBTN, RESIZE_TB, 14, 384, 397, 76, 87, SPR_SHARED_ORDERS_ICON, STR_VEH_WITH_SHARED_ORDERS_LIST_TIP}, // ORDER_WIDGET_SHARED_ORDER_LIST |
|
802 |
|
803 { WWT_PANEL, RESIZE_RTB, 14, 397, 396, 76, 87, 0x0, STR_NULL}, // ORDER_WIDGET_RESIZE_BAR |
|
804 |
|
805 { WWT_RESIZEBOX, RESIZE_LRTB, 14, 398, 409, 76, 87, 0x0, STR_RESIZE_BUTTON}, // ORDER_WIDGET_RESIZE |
|
806 { WIDGETS_END}, |
|
636 }; |
807 }; |
637 |
808 |
638 static const WindowDesc _orders_desc = { |
809 static const WindowDesc _orders_desc = { |
639 WDP_AUTO, WDP_AUTO, 410, 88, |
810 WDP_AUTO, WDP_AUTO, 410, 88, |
640 WC_VEHICLE_ORDERS,WC_VEHICLE_VIEW, |
811 WC_VEHICLE_ORDERS,WC_VEHICLE_VIEW, |
641 WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_RESIZABLE, |
812 WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_RESIZABLE, |
642 _orders_widgets, |
813 _orders_widgets, |
643 OrdersWndProc |
814 OrdersWndProc |
644 }; |
815 }; |
645 |
816 |
817 /** |
|
818 * Widget definition for competitor orders |
|
819 */ |
|
646 static const Widget _other_orders_widgets[] = { |
820 static const Widget _other_orders_widgets[] = { |
647 { WWT_CLOSEBOX, RESIZE_NONE, 14, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW}, |
821 { WWT_CLOSEBOX, RESIZE_NONE, 14, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW}, // ORDER_WIDGET_CLOSEBOX |
648 { WWT_CAPTION, RESIZE_RIGHT, 14, 11, 331, 0, 13, STR_A00B_ORDERS, STR_018C_WINDOW_TITLE_DRAG_THIS}, |
822 { WWT_CAPTION, RESIZE_RIGHT, 14, 11, 331, 0, 13, STR_A00B_ORDERS, STR_018C_WINDOW_TITLE_DRAG_THIS}, // ORDER_WIDGET_CAPTION |
649 { WWT_PANEL, RESIZE_RB, 14, 0, 319, 14, 75, 0x0, STR_8852_ORDERS_LIST_CLICK_ON_ORDER}, |
823 { WWT_PUSHTXTBTN, RESIZE_LR, 14, 271, 331, 0, 13, STR_TIMETABLE_VIEW, STR_TIMETABLE_VIEW_TOOLTIP}, // ORDER_WIDGET_TIMETABLE_VIEW |
650 { WWT_SCROLLBAR, RESIZE_LRB, 14, 320, 331, 14, 75, 0x0, STR_0190_SCROLL_BAR_SCROLLS_LIST}, |
824 |
651 { WWT_EMPTY, RESIZE_NONE, 14, 0, 319, 76, 87, 0x0, STR_NULL}, |
825 { WWT_PANEL, RESIZE_RB, 14, 0, 319, 14, 75, 0x0, STR_8852_ORDERS_LIST_CLICK_ON_ORDER}, // ORDER_WIDGET_ORDER_LIST |
652 { WWT_EMPTY, RESIZE_NONE, 14, 0, 319, 76, 87, 0x0, STR_NULL}, |
826 |
653 { WWT_EMPTY, RESIZE_NONE, 14, 0, 319, 76, 87, 0x0, STR_NULL}, |
827 { WWT_SCROLLBAR, RESIZE_LRB, 14, 320, 331, 14, 75, 0x0, STR_0190_SCROLL_BAR_SCROLLS_LIST}, // ORDER_WIDGET_SCROLLBAR |
654 { WWT_EMPTY, RESIZE_NONE, 14, 0, 319, 76, 87, 0x0, STR_NULL}, |
828 |
655 { WWT_EMPTY, RESIZE_NONE, 14, 0, 319, 76, 87, 0x0, STR_NULL}, |
829 { WWT_EMPTY, RESIZE_NONE, 14, 0, 319, 76, 87, 0x0, STR_NULL}, // ORDER_WIDGET_SKIP |
656 { WWT_EMPTY, RESIZE_NONE, 14, 0, 319, 76, 87, 0x0, STR_NULL}, |
830 { WWT_EMPTY, RESIZE_NONE, 14, 0, 319, 76, 87, 0x0, STR_NULL}, // ORDER_WIDGET_DELETE |
657 { WWT_PANEL, RESIZE_RTB, 14, 0, 319, 76, 87, 0x0, STR_NULL}, |
831 { WWT_EMPTY, RESIZE_NONE, 14, 0, 319, 76, 87, 0x0, STR_NULL}, // ORDER_WIDGET_NON_STOP |
658 { WWT_RESIZEBOX, RESIZE_LRTB, 14, 320, 331, 76, 87, 0x0, STR_RESIZE_BUTTON}, |
832 { WWT_EMPTY, RESIZE_NONE, 14, 0, 319, 76, 87, 0x0, STR_NULL}, // ORDER_WIDGET_GOTO |
659 { WIDGETS_END}, |
833 { WWT_EMPTY, RESIZE_NONE, 14, 0, 319, 76, 87, 0x0, STR_NULL}, // ORDER_WIDGET_FULL_LOAD |
834 { WWT_EMPTY, RESIZE_NONE, 14, 0, 319, 76, 87, 0x0, STR_NULL}, // ORDER_WIDGET_UNLOAD |
|
835 { WWT_EMPTY, RESIZE_NONE, 14, 0, 319, 76, 87, 0x0, STR_NULL}, // ORDER_WIDGET_REFIT |
|
836 { WWT_EMPTY, RESIZE_NONE, 14, 0, 319, 76, 87, 0x0, STR_NULL}, // ORDER_WIDGET_TRANSFER |
|
837 |
|
838 { WWT_EMPTY, RESIZE_NONE, 14, 0, 319, 76, 87, 0x0, STR_NULL}, // ORDER_WIDGET_SHARED_ORDER_LIST |
|
839 |
|
840 { WWT_PANEL, RESIZE_RTB, 14, 0, 319, 76, 87, 0x0, STR_NULL}, // ORDER_WIDGET_RESIZE_BAR |
|
841 |
|
842 { WWT_RESIZEBOX, RESIZE_LRTB, 14, 320, 331, 76, 87, 0x0, STR_RESIZE_BUTTON}, // ORDER_WIDGET_RESIZE |
|
843 { WIDGETS_END}, |
|
660 }; |
844 }; |
661 |
845 |
662 static const WindowDesc _other_orders_desc = { |
846 static const WindowDesc _other_orders_desc = { |
663 WDP_AUTO, WDP_AUTO, 332, 88, |
847 WDP_AUTO, WDP_AUTO, 332, 88, |
664 WC_VEHICLE_ORDERS,WC_VEHICLE_VIEW, |
848 WC_VEHICLE_ORDERS,WC_VEHICLE_VIEW, |