261 static Order GetOrderCmdFromTile(const Vehicle *v, TileIndex tile) |
264 static Order GetOrderCmdFromTile(const Vehicle *v, TileIndex tile) |
262 { |
265 { |
263 Order order; |
266 Order order; |
264 order.next = NULL; |
267 order.next = NULL; |
265 order.index = 0; |
268 order.index = 0; |
266 order.refit_cargo = CT_INVALID; |
269 |
267 order.refit_subtype = 0; |
270 /* check depot first */ |
268 |
|
269 // check depot first |
|
270 if (_patches.gotodepot) { |
271 if (_patches.gotodepot) { |
271 switch (GetTileType(tile)) { |
272 switch (GetTileType(tile)) { |
272 case MP_RAILWAY: |
273 case MP_RAILWAY: |
273 if (v->type == VEH_TRAIN && IsTileOwner(tile, _local_player)) { |
274 if (v->type == VEH_TRAIN && IsTileOwner(tile, _local_player)) { |
274 if (IsRailDepot(tile)) { |
275 if (IsRailDepot(tile)) { |
275 order.type = OT_GOTO_DEPOT; |
276 order.MakeGoToDepot(GetDepotByTile(tile)->index, ODTFB_PART_OF_ORDERS); |
276 order.flags = OFB_PART_OF_ORDERS; |
277 return order; |
277 order.dest = GetDepotByTile(tile)->index; |
278 } |
|
279 } |
|
280 break; |
|
281 |
|
282 case MP_ROAD: |
|
283 if (IsRoadDepot(tile) && v->type == VEH_ROAD && IsTileOwner(tile, _local_player)) { |
|
284 order.MakeGoToDepot(GetDepotByTile(tile)->index, ODTFB_PART_OF_ORDERS); |
278 return order; |
285 return order; |
279 } |
286 } |
280 } |
287 break; |
281 break; |
288 |
282 |
289 case MP_STATION: |
283 case MP_ROAD: |
290 if (v->type != VEH_AIRCRAFT) break; |
284 if (IsRoadDepot(tile) && v->type == VEH_ROAD && IsTileOwner(tile, _local_player)) { |
291 if (IsHangar(tile) && IsTileOwner(tile, _local_player)) { |
285 order.type = OT_GOTO_DEPOT; |
292 order.MakeGoToDepot(GetStationIndex(tile), ODTFB_PART_OF_ORDERS); |
286 order.flags = OFB_PART_OF_ORDERS; |
293 return order; |
287 order.dest = GetDepotByTile(tile)->index; |
294 } |
288 return order; |
295 break; |
289 } |
296 |
290 break; |
297 case MP_WATER: |
291 |
298 if (v->type != VEH_SHIP) break; |
292 case MP_STATION: |
299 if (IsTileDepotType(tile, TRANSPORT_WATER) && |
293 if (v->type != VEH_AIRCRAFT) break; |
300 IsTileOwner(tile, _local_player)) { |
294 if (IsHangar(tile) && IsTileOwner(tile, _local_player)) { |
301 TileIndex tile2 = GetOtherShipDepotTile(tile); |
295 order.type = OT_GOTO_DEPOT; |
302 |
296 order.flags = OFB_PART_OF_ORDERS; |
303 order.MakeGoToDepot(GetDepotByTile(tile < tile2 ? tile : tile2)->index, ODTFB_PART_OF_ORDERS); |
297 order.dest = GetStationIndex(tile); |
304 return order; |
298 return order; |
305 } |
299 } |
|
300 break; |
|
301 |
|
302 case MP_WATER: |
|
303 if (v->type != VEH_SHIP) break; |
|
304 if (IsTileDepotType(tile, TRANSPORT_WATER) && |
|
305 IsTileOwner(tile, _local_player)) { |
|
306 TileIndex tile2 = GetOtherShipDepotTile(tile); |
|
307 |
|
308 order.type = OT_GOTO_DEPOT; |
|
309 order.flags = OFB_PART_OF_ORDERS; |
|
310 order.dest = GetDepotByTile(tile < tile2 ? tile : tile2)->index; |
|
311 return order; |
|
312 } |
|
313 |
306 |
314 default: |
307 default: |
315 break; |
308 break; |
316 } |
309 } |
317 } |
310 } |
318 |
311 |
319 // check waypoint |
312 /* check waypoint */ |
320 if (IsTileType(tile, MP_RAILWAY) && |
313 if (IsTileType(tile, MP_RAILWAY) && |
321 v->type == VEH_TRAIN && |
314 v->type == VEH_TRAIN && |
322 IsTileOwner(tile, _local_player) && |
315 IsTileOwner(tile, _local_player) && |
323 IsRailWaypoint(tile)) { |
316 IsRailWaypoint(tile)) { |
324 order.type = OT_GOTO_WAYPOINT; |
317 order.MakeGoToWaypoint(GetWaypointByTile(tile)->index); |
325 order.flags = 0; |
|
326 order.dest = GetWaypointByTile(tile)->index; |
|
327 return order; |
318 return order; |
328 } |
319 } |
329 |
320 |
330 if (IsTileType(tile, MP_STATION)) { |
321 if (IsTileType(tile, MP_STATION)) { |
331 StationID st_index = GetStationIndex(tile); |
322 StationID st_index = GetStationIndex(tile); |
332 const Station *st = GetStation(st_index); |
323 const Station *st = GetStation(st_index); |
333 |
324 |
334 if (st->owner == _current_player || st->owner == OWNER_NONE) { |
325 if (st->owner == _current_player || st->owner == OWNER_NONE) { |
335 byte facil; |
326 byte facil; |
336 (facil=FACIL_DOCK, v->type == VEH_SHIP) || |
327 (facil = FACIL_DOCK, v->type == VEH_SHIP) || |
337 (facil=FACIL_TRAIN, v->type == VEH_TRAIN) || |
328 (facil = FACIL_TRAIN, v->type == VEH_TRAIN) || |
338 (facil=FACIL_AIRPORT, v->type == VEH_AIRCRAFT) || |
329 (facil = FACIL_AIRPORT, v->type == VEH_AIRCRAFT) || |
339 (facil=FACIL_BUS_STOP, v->type == VEH_ROAD && IsCargoInClass(v->cargo_type, CC_PASSENGERS)) || |
330 (facil = FACIL_BUS_STOP, v->type == VEH_ROAD && IsCargoInClass(v->cargo_type, CC_PASSENGERS)) || |
340 (facil=FACIL_TRUCK_STOP, 1); |
331 (facil = FACIL_TRUCK_STOP, 1); |
341 if (st->facilities & facil) { |
332 if (st->facilities & facil) { |
342 order.type = OT_GOTO_STATION; |
333 order.MakeGoToStation(st_index); |
343 order.flags = 0; |
|
344 order.dest = st_index; |
|
345 return order; |
334 return order; |
346 } |
335 } |
347 } |
336 } |
348 } |
337 } |
349 |
338 |
350 // not found |
339 /* not found */ |
351 order.Free(); |
340 order.Free(); |
352 order.dest = INVALID_STATION; |
|
353 return order; |
341 return order; |
354 } |
342 } |
355 |
343 |
356 static bool HandleOrderVehClick(const Vehicle *v, const Vehicle *u, Window *w) |
344 static bool HandleOrderVehClick(const Vehicle *v, const Vehicle *u, Window *w) |
357 { |
345 { |
414 /** |
399 /** |
415 * Handle the click on the full load button. |
400 * Handle the click on the full load button. |
416 * |
401 * |
417 * @param w current window |
402 * @param w current window |
418 * @param v current vehicle |
403 * @param v current vehicle |
419 */ |
404 * @param load_type the way to load. |
420 static void OrderClick_FullLoad(Window *w, const Vehicle *v) |
405 */ |
421 { |
406 static void OrderClick_FullLoad(Window *w, const Vehicle *v, int load_type) |
422 DoCommandP(v->tile, v->index + (OrderGetSel(w) << 16), OF_FULL_LOAD, NULL, CMD_MODIFY_ORDER | CMD_MSG(STR_8835_CAN_T_MODIFY_THIS_ORDER)); |
407 { |
|
408 VehicleOrderID sel_ord = OrderGetSel(w); |
|
409 const Order *order = GetVehicleOrder(v, sel_ord); |
|
410 |
|
411 if (load_type > 0) load_type += 3; |
|
412 if (load_type >= 0 && (order->GetLoadType() & OLFB_FULL_LOAD) == (load_type & OLFB_FULL_LOAD)) return; |
|
413 DoCommandP(v->tile, v->index + (sel_ord << 16), MOF_LOAD | ((order->GetLoadType() & OLFB_FULL_LOAD) ^ OLFB_FULL_LOAD) << 2, NULL, CMD_MODIFY_ORDER | CMD_MSG(STR_8835_CAN_T_MODIFY_THIS_ORDER)); |
|
414 } |
|
415 |
|
416 /** |
|
417 * Handle the click on the service. |
|
418 * |
|
419 * @param w current window |
|
420 * @param v current vehicle |
|
421 */ |
|
422 static void OrderClick_Service(Window *w, const Vehicle *v, int i) |
|
423 { |
|
424 DoCommandP(v->tile, v->index + (OrderGetSel(w) << 16), MOF_DEPOT_ACTION, NULL, CMD_MODIFY_ORDER | CMD_MSG(STR_8835_CAN_T_MODIFY_THIS_ORDER)); |
423 } |
425 } |
424 |
426 |
425 /** |
427 /** |
426 * Handle the click on the unload button. |
428 * Handle the click on the unload button. |
427 * |
429 * |
428 * @param w current window |
430 * @param w current window |
429 * @param v current vehicle |
431 * @param v current vehicle |
430 */ |
432 */ |
431 static void OrderClick_Unload(Window *w, const Vehicle *v) |
433 static void OrderClick_Unload(Window *w, const Vehicle *v, int i) |
432 { |
434 { |
433 DoCommandP(v->tile, v->index + (OrderGetSel(w) << 16), OF_UNLOAD, NULL, CMD_MODIFY_ORDER | CMD_MSG(STR_8835_CAN_T_MODIFY_THIS_ORDER)); |
435 VehicleOrderID sel_ord = OrderGetSel(w); |
|
436 const Order *order = GetVehicleOrder(v, sel_ord); |
|
437 |
|
438 DoCommandP(v->tile, v->index + (sel_ord << 16), MOF_UNLOAD | (order->GetUnloadType() ^ OUFB_UNLOAD) << 2, NULL, CMD_MODIFY_ORDER | CMD_MSG(STR_8835_CAN_T_MODIFY_THIS_ORDER)); |
434 } |
439 } |
435 |
440 |
436 /** |
441 /** |
437 * Handle the click on the nonstop button. |
442 * Handle the click on the nonstop button. |
438 * |
443 * |
439 * @param w current window |
444 * @param w current window |
440 * @param v current vehicle |
445 * @param v current vehicle |
441 */ |
446 * @param non_stop what non-stop type to use; -1 to use the 'next' one. |
442 static void OrderClick_Nonstop(Window *w, const Vehicle *v) |
447 */ |
443 { |
448 static void OrderClick_Nonstop(Window *w, const Vehicle *v, int non_stop) |
444 DoCommandP(v->tile, v->index + (OrderGetSel(w) << 16), OF_NON_STOP, NULL, CMD_MODIFY_ORDER | CMD_MSG(STR_8835_CAN_T_MODIFY_THIS_ORDER)); |
449 { |
|
450 VehicleOrderID sel_ord = OrderGetSel(w); |
|
451 const Order *order = GetVehicleOrder(v, sel_ord); |
|
452 |
|
453 if (order->GetNonStopType() == non_stop) return; |
|
454 if (_patches.new_nonstop && non_stop == ONSF_NO_STOP_AT_INTERMEDIATE_STATIONS) non_stop = ONSF_STOP_EVERYWHERE; |
|
455 |
|
456 /* Keypress if negative, so 'toggle' to the next */ |
|
457 if (non_stop < 0) { |
|
458 non_stop = (order->GetNonStopType() + 1) % ONSF_END; |
|
459 } |
|
460 |
|
461 DoCommandP(v->tile, v->index + (sel_ord << 16), MOF_NON_STOP | non_stop << 2, NULL, CMD_MODIFY_ORDER | CMD_MSG(STR_8835_CAN_T_MODIFY_THIS_ORDER)); |
445 } |
462 } |
446 |
463 |
447 /** |
464 /** |
448 * Handle the click on the transfer button. |
465 * Handle the click on the transfer button. |
449 * |
466 * |
450 * @param w current window |
467 * @param w current window |
451 * @param v current vehicle |
468 * @param v current vehicle |
452 */ |
469 */ |
453 static void OrderClick_Transfer(Window* w, const Vehicle* v) |
470 static void OrderClick_Transfer(Window *w, const Vehicle *v, int i) |
454 { |
471 { |
455 DoCommandP(v->tile, v->index + (OrderGetSel(w) << 16), OF_TRANSFER, NULL, CMD_MODIFY_ORDER | CMD_MSG(STR_8835_CAN_T_MODIFY_THIS_ORDER)); |
472 VehicleOrderID sel_ord = OrderGetSel(w); |
|
473 const Order *order = GetVehicleOrder(v, sel_ord); |
|
474 |
|
475 DoCommandP(v->tile, v->index + (sel_ord << 16), MOF_UNLOAD | (order->GetUnloadType() ^ OUFB_TRANSFER) << 2, NULL, CMD_MODIFY_ORDER | CMD_MSG(STR_8835_CAN_T_MODIFY_THIS_ORDER)); |
456 } |
476 } |
457 |
477 |
458 /** |
478 /** |
459 * Handle the click on the skip button. |
479 * Handle the click on the skip button. |
460 * If ctrl is pressed skip to selected order. |
480 * If ctrl is pressed skip to selected order. |
461 * Else skip to current order + 1 |
481 * Else skip to current order + 1 |
462 * |
482 * |
463 * @param w current window |
483 * @param w current window |
464 * @param v current vehicle |
484 * @param v current vehicle |
465 */ |
485 */ |
466 static void OrderClick_Skip(Window *w, const Vehicle *v) |
486 static void OrderClick_Skip(Window *w, const Vehicle *v, int i) |
467 { |
487 { |
468 /* Don't skip when there's nothing to skip */ |
488 /* Don't skip when there's nothing to skip */ |
469 if (_ctrl_pressed && v->cur_order_index == OrderGetSel(w)) return; |
489 if (_ctrl_pressed && v->cur_order_index == OrderGetSel(w)) return; |
470 |
490 |
471 DoCommandP(v->tile, v->index, _ctrl_pressed ? OrderGetSel(w) : ((v->cur_order_index + 1) % v->num_orders), |
491 DoCommandP(v->tile, v->index, _ctrl_pressed ? OrderGetSel(w) : ((v->cur_order_index + 1) % v->num_orders), |
550 w->HideWidget(ORDER_WIDGET_TIMETABLE_VIEW); |
588 w->HideWidget(ORDER_WIDGET_TIMETABLE_VIEW); |
551 } |
589 } |
552 |
590 |
553 break; |
591 break; |
554 |
592 |
555 case WE_PAINT: |
593 case WE_PAINT: |
556 DrawOrdersWindow(w); |
594 DrawOrdersWindow(w); |
557 break; |
595 break; |
558 |
596 |
559 case WE_CLICK: { |
597 case WE_CLICK: |
560 const Vehicle *v = GetVehicle(w->window_number); |
598 switch (e->we.click.widget) { |
561 switch (e->we.click.widget) { |
599 case ORDER_WIDGET_ORDER_LIST: { |
562 case ORDER_WIDGET_ORDER_LIST: { |
600 ResetObjectToPlace(); |
|
601 HideDropDownMenu(w); |
|
602 |
|
603 int sel = GetOrderFromOrderWndPt(w, e->we.click.pt.y, v); |
|
604 |
|
605 if (sel == INVALID_ORDER) { |
|
606 /* This was a click on an empty part of the orders window, so |
|
607 * deselect the currently selected order. */ |
|
608 WP(w, order_d).sel = -1; |
|
609 SetWindowDirty(w); |
|
610 return; |
|
611 } |
|
612 |
|
613 if (_ctrl_pressed && sel < v->num_orders) { |
|
614 const Order *ord = GetVehicleOrder(v, sel); |
|
615 TileIndex xy; |
|
616 |
|
617 switch (ord->GetType()) { |
|
618 case OT_GOTO_STATION: xy = GetStation(ord->GetDestination())->xy ; break; |
|
619 case OT_GOTO_DEPOT: xy = (v->type == VEH_AIRCRAFT) ? GetStation(ord->GetDestination())->xy : GetDepot(ord->GetDestination())->xy; break; |
|
620 case OT_GOTO_WAYPOINT: xy = GetWaypoint(ord->GetDestination())->xy; break; |
|
621 default: xy = 0; break; |
|
622 } |
|
623 |
|
624 if (xy != 0) ScrollMainWindowToTile(xy); |
|
625 return; |
|
626 } else { |
|
627 if (sel == WP(w, order_d).sel) { |
|
628 /* Deselect clicked order */ |
|
629 WP(w, order_d).sel = -1; |
|
630 } else { |
|
631 /* Select clicked order */ |
|
632 WP(w, order_d).sel = sel; |
|
633 |
|
634 if (v->owner == _local_player) { |
|
635 /* Activate drag and drop */ |
|
636 SetObjectToPlaceWnd(SPR_CURSOR_MOUSE, PAL_NONE, VHM_DRAG, w); |
|
637 } |
|
638 } |
|
639 } |
|
640 |
|
641 SetWindowDirty(w); |
|
642 } break; |
|
643 |
|
644 case ORDER_WIDGET_SKIP: |
|
645 OrderClick_Skip(w, v, 0); |
|
646 break; |
|
647 |
|
648 case ORDER_WIDGET_DELETE: |
|
649 OrderClick_Delete(w, v, 0); |
|
650 break; |
|
651 |
|
652 case ORDER_WIDGET_NON_STOP: |
|
653 ShowDropDownMenu(w, _order_non_stop_drowdown, GetVehicleOrder(v, OrderGetSel(w))->GetNonStopType(), ORDER_WIDGET_NON_STOP, 0, _patches.new_nonstop ? 5 : 12, 124); |
|
654 break; |
|
655 |
|
656 case ORDER_WIDGET_GOTO: |
|
657 OrderClick_Goto(w, v, 0); |
|
658 break; |
|
659 |
|
660 case ORDER_WIDGET_FULL_LOAD: |
|
661 ShowDropDownMenu(w, _order_full_load_drowdown, GetVehicleOrder(v, OrderGetSel(w))->GetLoadType() << 2, ORDER_WIDGET_FULL_LOAD, 0, _patches.full_load_any ? 2 : 4, 124); |
|
662 break; |
|
663 |
|
664 case ORDER_WIDGET_UNLOAD: |
|
665 OrderClick_Unload(w, v, 0); |
|
666 break; |
|
667 |
|
668 case ORDER_WIDGET_REFIT: |
|
669 OrderClick_Refit(w, v, 0); |
|
670 break; |
|
671 |
|
672 case ORDER_WIDGET_TRANSFER: |
|
673 OrderClick_Transfer(w, v, 0); |
|
674 break; |
|
675 |
|
676 case ORDER_WIDGET_SERVICE: |
|
677 OrderClick_Service(w, v, 0); |
|
678 break; |
|
679 |
|
680 case ORDER_WIDGET_TIMETABLE_VIEW: |
|
681 ShowTimetableWindow(v); |
|
682 break; |
|
683 |
|
684 case ORDER_WIDGET_SHARED_ORDER_LIST: |
|
685 ShowVehicleListWindow(v); |
|
686 break; |
|
687 } |
|
688 break; |
|
689 |
|
690 case WE_DROPDOWN_SELECT: // we have selected a dropdown item in the list |
|
691 switch (e->we.dropdown.button) { |
|
692 case ORDER_WIDGET_NON_STOP: |
|
693 OrderClick_Nonstop(w, v, e->we.dropdown.index); |
|
694 break; |
|
695 |
|
696 case ORDER_WIDGET_FULL_LOAD: |
|
697 OrderClick_FullLoad(w, v, e->we.dropdown.index); |
|
698 break; |
|
699 } |
|
700 break; |
|
701 |
|
702 case WE_DRAGDROP: |
|
703 switch (e->we.click.widget) { |
|
704 case ORDER_WIDGET_ORDER_LIST: { |
|
705 int from_order = OrderGetSel(w); |
|
706 int to_order = GetOrderFromOrderWndPt(w, e->we.dragdrop.pt.y, v); |
|
707 |
|
708 if (!(from_order == to_order || from_order == INVALID_ORDER || from_order > v->num_orders || to_order == INVALID_ORDER || to_order > v->num_orders) && |
|
709 DoCommandP(v->tile, v->index, from_order | (to_order << 16), NULL, CMD_MOVE_ORDER | CMD_MSG(STR_CAN_T_MOVE_THIS_ORDER))) { |
|
710 WP(w, order_d).sel = -1; |
|
711 } |
|
712 |
|
713 } break; |
|
714 |
|
715 case ORDER_WIDGET_DELETE: |
|
716 OrderClick_Delete(w, v, 0); |
|
717 break; |
|
718 } |
|
719 |
563 ResetObjectToPlace(); |
720 ResetObjectToPlace(); |
564 |
721 break; |
565 int sel = GetOrderFromOrderWndPt(w, e->we.click.pt.y, v); |
722 |
566 |
723 case WE_KEYPRESS: |
567 if (sel == INVALID_ORDER) { |
724 if (v->owner != _local_player) break; |
568 /* This was a click on an empty part of the orders window, so |
725 |
569 * deselect the currently selected order. */ |
726 for (uint i = 0; i < lengthof(_order_keycodes); i++) { |
570 WP(w, order_d).sel = -1; |
727 if (e->we.keypress.keycode == _order_keycodes[i]) { |
571 SetWindowDirty(w); |
728 e->we.keypress.cont = false; |
572 return; |
729 /* see if the button is disabled */ |
573 } |
730 if (!w->IsWidgetDisabled(i + ORDER_WIDGET_SKIP)) _order_button_proc[i](w, v, -1); |
574 |
731 break; |
575 if (_ctrl_pressed && sel < v->num_orders) { |
|
576 const Order *ord = GetVehicleOrder(v, sel); |
|
577 TileIndex xy; |
|
578 |
|
579 switch (ord->type) { |
|
580 case OT_GOTO_STATION: xy = GetStation(ord->dest)->xy ; break; |
|
581 case OT_GOTO_DEPOT: xy = (v->type == VEH_AIRCRAFT) ? GetStation(ord->dest)->xy : GetDepot(ord->dest)->xy; break; |
|
582 case OT_GOTO_WAYPOINT: xy = GetWaypoint(ord->dest)->xy; break; |
|
583 default: xy = 0; break; |
|
584 } |
732 } |
585 |
733 } |
586 if (xy != 0) ScrollMainWindowToTile(xy); |
734 break; |
587 return; |
735 |
|
736 case WE_RCLICK: { |
|
737 int s = OrderGetSel(w); |
|
738 |
|
739 if (e->we.click.widget != ORDER_WIDGET_FULL_LOAD) break; |
|
740 if (s == v->num_orders || !GetVehicleOrder(v, s)->IsType(OT_GOTO_DEPOT)) { |
|
741 GuiShowTooltips(STR_8857_MAKE_THE_HIGHLIGHTED_ORDER); |
588 } else { |
742 } else { |
589 if (sel == WP(w, order_d).sel) { |
743 GuiShowTooltips(STR_SERVICE_HINT); |
590 /* Deselect clicked order */ |
744 } |
591 WP(w, order_d).sel = -1; |
745 } break; |
592 } else { |
746 |
593 /* Select clicked order */ |
747 case WE_PLACE_OBJ: |
594 WP(w, order_d).sel = sel; |
748 OrdersPlaceObj(GetVehicle(w->window_number), e->we.place.tile, w); |
595 |
749 break; |
596 if (v->owner == _local_player) { |
750 |
597 /* Activate drag and drop */ |
751 case WE_ABORT_PLACE_OBJ: |
598 SetObjectToPlaceWnd(SPR_CURSOR_MOUSE, PAL_NONE, VHM_DRAG, w); |
752 w->RaiseWidget(ORDER_WIDGET_GOTO); |
599 } |
753 w->InvalidateWidget(ORDER_WIDGET_GOTO); |
|
754 break; |
|
755 |
|
756 /* check if a vehicle in a depot was clicked.. */ |
|
757 case WE_MOUSELOOP: |
|
758 v = _place_clicked_vehicle; |
|
759 /* |
|
760 * Check if we clicked on a vehicle |
|
761 * and if the GOTO button of this window is pressed |
|
762 * This is because of all open order windows WE_MOUSELOOP is called |
|
763 * and if you have 3 windows open, and this check is not done |
|
764 * the order is copied to the last open window instead of the |
|
765 * one where GOTO is enabled |
|
766 */ |
|
767 if (v != NULL && w->IsWidgetLowered(ORDER_WIDGET_GOTO)) { |
|
768 _place_clicked_vehicle = NULL; |
|
769 HandleOrderVehClick(GetVehicle(w->window_number), v, w); |
|
770 } |
|
771 break; |
|
772 |
|
773 case WE_RESIZE: |
|
774 /* Update the scroll + matrix */ |
|
775 w->vscroll.cap = (w->widget[ORDER_WIDGET_ORDER_LIST].bottom - w->widget[ORDER_WIDGET_ORDER_LIST].top) / 10; |
|
776 break; |
|
777 |
|
778 case WE_TIMEOUT: // handle button unclick ourselves... |
|
779 /* unclick all buttons except for the 'goto' button (ORDER_WIDGET_GOTO), which is 'persistent' */ |
|
780 for (uint i = 0; i < w->widget_count; i++) { |
|
781 if (w->IsWidgetLowered(i) && i != ORDER_WIDGET_GOTO) { |
|
782 w->RaiseWidget(i); |
|
783 w->InvalidateWidget(i); |
600 } |
784 } |
601 } |
785 } |
602 |
786 break; |
603 SetWindowDirty(w); |
|
604 } break; |
|
605 |
|
606 case ORDER_WIDGET_SKIP: |
|
607 OrderClick_Skip(w, v); |
|
608 break; |
|
609 |
|
610 case ORDER_WIDGET_DELETE: |
|
611 OrderClick_Delete(w, v); |
|
612 break; |
|
613 |
|
614 case ORDER_WIDGET_NON_STOP: |
|
615 OrderClick_Nonstop(w, v); |
|
616 break; |
|
617 |
|
618 case ORDER_WIDGET_GOTO: |
|
619 OrderClick_Goto(w, v); |
|
620 break; |
|
621 |
|
622 case ORDER_WIDGET_FULL_LOAD: |
|
623 OrderClick_FullLoad(w, v); |
|
624 break; |
|
625 |
|
626 case ORDER_WIDGET_UNLOAD: |
|
627 OrderClick_Unload(w, v); |
|
628 break; |
|
629 case ORDER_WIDGET_REFIT: |
|
630 OrderClick_Refit(w, v); |
|
631 break; |
|
632 |
|
633 case ORDER_WIDGET_TRANSFER: |
|
634 OrderClick_Transfer(w, v); |
|
635 break; |
|
636 |
|
637 case ORDER_WIDGET_TIMETABLE_VIEW: |
|
638 ShowTimetableWindow(v); |
|
639 break; |
|
640 |
|
641 case ORDER_WIDGET_SHARED_ORDER_LIST: |
|
642 ShowVehicleListWindow(v); |
|
643 break; |
|
644 } |
|
645 } break; |
|
646 |
|
647 case WE_DRAGDROP: { |
|
648 const Vehicle *v = GetVehicle(w->window_number); |
|
649 |
|
650 switch (e->we.click.widget) { |
|
651 case ORDER_WIDGET_ORDER_LIST: { |
|
652 int from_order = OrderGetSel(w); |
|
653 int to_order = GetOrderFromOrderWndPt(w, e->we.dragdrop.pt.y, v); |
|
654 |
|
655 if (!(from_order == to_order || from_order == INVALID_ORDER || from_order > v->num_orders || to_order == INVALID_ORDER || to_order > v->num_orders) && |
|
656 DoCommandP(v->tile, v->index, from_order | (to_order << 16), NULL, CMD_MOVE_ORDER | CMD_MSG(STR_CAN_T_MOVE_THIS_ORDER))) { |
|
657 WP(w, order_d).sel = -1; |
|
658 } |
|
659 |
|
660 break; |
|
661 } |
|
662 |
|
663 case ORDER_WIDGET_DELETE: |
|
664 OrderClick_Delete(w, v); |
|
665 break; |
|
666 } |
|
667 |
|
668 ResetObjectToPlace(); |
|
669 break; |
|
670 } |
|
671 |
|
672 case WE_KEYPRESS: { |
|
673 Vehicle *v = GetVehicle(w->window_number); |
|
674 uint i; |
|
675 |
|
676 if (v->owner != _local_player) break; |
|
677 |
|
678 for (i = 0; i < lengthof(_order_keycodes); i++) { |
|
679 if (e->we.keypress.keycode == _order_keycodes[i]) { |
|
680 e->we.keypress.cont = false; |
|
681 //see if the button is disabled |
|
682 if (!w->IsWidgetDisabled(i + ORDER_WIDGET_SKIP)) _order_button_proc[i](w, v); |
|
683 break; |
|
684 } |
|
685 } |
|
686 break; |
|
687 } |
|
688 |
|
689 case WE_RCLICK: { |
|
690 const Vehicle *v = GetVehicle(w->window_number); |
|
691 int s = OrderGetSel(w); |
|
692 |
|
693 if (e->we.click.widget != ORDER_WIDGET_FULL_LOAD) break; |
|
694 if (s == v->num_orders || GetVehicleOrder(v, s)->type != OT_GOTO_DEPOT) { |
|
695 GuiShowTooltips(STR_8857_MAKE_THE_HIGHLIGHTED_ORDER); |
|
696 } else { |
|
697 GuiShowTooltips(STR_SERVICE_HINT); |
|
698 } |
|
699 } break; |
|
700 |
|
701 case WE_PLACE_OBJ: { |
|
702 OrdersPlaceObj(GetVehicle(w->window_number), e->we.place.tile, w); |
|
703 } break; |
|
704 |
|
705 case WE_ABORT_PLACE_OBJ: { |
|
706 w->RaiseWidget(ORDER_WIDGET_GOTO); |
|
707 w->InvalidateWidget(ORDER_WIDGET_GOTO); |
|
708 } break; |
|
709 |
|
710 // check if a vehicle in a depot was clicked.. |
|
711 case WE_MOUSELOOP: { |
|
712 const Vehicle *v = _place_clicked_vehicle; |
|
713 /* |
|
714 * Check if we clicked on a vehicle |
|
715 * and if the GOTO button of this window is pressed |
|
716 * This is because of all open order windows WE_MOUSELOOP is called |
|
717 * and if you have 3 windows open, and this check is not done |
|
718 * the order is copied to the last open window instead of the |
|
719 * one where GOTO is enabled |
|
720 */ |
|
721 if (v != NULL && w->IsWidgetLowered(ORDER_WIDGET_GOTO)) { |
|
722 _place_clicked_vehicle = NULL; |
|
723 HandleOrderVehClick(GetVehicle(w->window_number), v, w); |
|
724 } |
|
725 } break; |
|
726 |
|
727 case WE_RESIZE: |
|
728 /* Update the scroll + matrix */ |
|
729 w->vscroll.cap = (w->widget[ORDER_WIDGET_ORDER_LIST].bottom - w->widget[ORDER_WIDGET_ORDER_LIST].top) / 10; |
|
730 break; |
|
731 |
|
732 case WE_TIMEOUT: { // handle button unclick ourselves... |
|
733 // unclick all buttons except for the 'goto' button (ORDER_WIDGET_GOTO), which is 'persistent' |
|
734 uint i; |
|
735 for (i = 0; i < w->widget_count; i++) { |
|
736 if (w->IsWidgetLowered(i) && i != ORDER_WIDGET_GOTO) { |
|
737 w->RaiseWidget(i); |
|
738 w->InvalidateWidget(i); |
|
739 } |
|
740 } |
|
741 } break; |
|
742 } |
787 } |
743 } |
788 } |
744 |
789 |
745 /** |
790 /** |
746 * Widget definition for player train orders |
791 * Widget definition for player train orders |
747 */ |
792 */ |
748 static const Widget _orders_train_widgets[] = { |
793 static const Widget _orders_train_widgets[] = { |
749 { WWT_CLOSEBOX, RESIZE_NONE, 14, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW}, // ORDER_WIDGET_CLOSEBOX |
794 { WWT_CLOSEBOX, RESIZE_NONE, 14, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW}, // ORDER_WIDGET_CLOSEBOX |
750 { WWT_CAPTION, RESIZE_RIGHT, 14, 11, 398, 0, 13, STR_8829_ORDERS, STR_018C_WINDOW_TITLE_DRAG_THIS}, // ORDER_WIDGET_CAPTION |
795 { WWT_CAPTION, RESIZE_RIGHT, 14, 11, 385, 0, 13, STR_8829_ORDERS, STR_018C_WINDOW_TITLE_DRAG_THIS}, // ORDER_WIDGET_CAPTION |
751 { WWT_PUSHTXTBTN, RESIZE_LR, 14, 338, 398, 0, 13, STR_TIMETABLE_VIEW, STR_TIMETABLE_VIEW_TOOLTIP}, // ORDER_WIDGET_TIMETABLE_VIEW |
796 { WWT_PUSHTXTBTN, RESIZE_LR, 14, 325, 385, 0, 13, STR_TIMETABLE_VIEW, STR_TIMETABLE_VIEW_TOOLTIP}, // ORDER_WIDGET_TIMETABLE_VIEW |
752 |
797 |
753 { WWT_PANEL, RESIZE_RB, 14, 0, 386, 14, 75, 0x0, STR_8852_ORDERS_LIST_CLICK_ON_ORDER}, // ORDER_WIDGET_ORDER_LIST |
798 { WWT_PANEL, RESIZE_RB, 14, 0, 373, 14, 75, 0x0, STR_8852_ORDERS_LIST_CLICK_ON_ORDER}, // ORDER_WIDGET_ORDER_LIST |
754 |
799 |
755 { WWT_SCROLLBAR, RESIZE_LRB, 14, 387, 398, 14, 75, 0x0, STR_0190_SCROLL_BAR_SCROLLS_LIST}, // ORDER_WIDGET_SCROLLBAR |
800 { WWT_SCROLLBAR, RESIZE_LRB, 14, 374, 385, 14, 75, 0x0, STR_0190_SCROLL_BAR_SCROLLS_LIST}, // ORDER_WIDGET_SCROLLBAR |
756 |
801 |
757 { WWT_PUSHTXTBTN, RESIZE_TB, 14, 0, 52, 76, 87, STR_8823_SKIP, STR_8853_SKIP_THE_CURRENT_ORDER}, // ORDER_WIDGET_SKIP |
802 { WWT_PUSHTXTBTN, RESIZE_TB, 14, 0, 123, 88, 99, STR_8823_SKIP, STR_8853_SKIP_THE_CURRENT_ORDER}, // ORDER_WIDGET_SKIP |
758 { WWT_PUSHTXTBTN, RESIZE_TB, 14, 53, 105, 76, 87, STR_8824_DELETE, STR_8854_DELETE_THE_HIGHLIGHTED}, // ORDER_WIDGET_DELETE |
803 { WWT_PUSHTXTBTN, RESIZE_TB, 14, 124, 247, 88, 99, STR_8824_DELETE, STR_8854_DELETE_THE_HIGHLIGHTED}, // ORDER_WIDGET_DELETE |
759 { WWT_PUSHTXTBTN, RESIZE_TB, 14, 106, 158, 76, 87, STR_8825_NON_STOP, STR_8855_MAKE_THE_HIGHLIGHTED_ORDER}, // ORDER_WIDGET_NON_STOP |
804 { WWT_DROPDOWN, RESIZE_TB, 14, 0, 92, 76, 87, STR_8825_NON_STOP, STR_8855_MAKE_THE_HIGHLIGHTED_ORDER}, // ORDER_WIDGET_NON_STOP |
760 { WWT_TEXTBTN, RESIZE_TB, 14, 159, 211, 76, 87, STR_8826_GO_TO, STR_8856_INSERT_A_NEW_ORDER_BEFORE}, // ORDER_WIDGET_GOTO |
805 { WWT_TEXTBTN, RESIZE_TB, 14, 248, 371, 88, 99, STR_8826_GO_TO, STR_8856_INSERT_A_NEW_ORDER_BEFORE}, // ORDER_WIDGET_GOTO |
761 { WWT_PUSHTXTBTN, RESIZE_TB, 14, 212, 264, 76, 87, STR_FULLLOAD_OR_SERVICE, STR_NULL}, // ORDER_WIDGET_FULL_LOAD |
806 { WWT_DROPDOWN, RESIZE_TB, 14, 93, 185, 76, 87, STR_8827_FULL_LOAD, STR_8857_MAKE_THE_HIGHLIGHTED_ORDER}, // ORDER_WIDGET_FULL_LOAD |
762 { WWT_PUSHTXTBTN, RESIZE_TB, 14, 265, 319, 76, 87, STR_8828_UNLOAD, STR_8858_MAKE_THE_HIGHLIGHTED_ORDER}, // ORDER_WIDGET_UNLOAD |
807 { WWT_PUSHTXTBTN, RESIZE_TB, 14, 186, 278, 76, 87, STR_8828_UNLOAD, STR_8858_MAKE_THE_HIGHLIGHTED_ORDER}, // ORDER_WIDGET_UNLOAD |
763 { WWT_PUSHTXTBTN, RESIZE_TB, 14, 265, 319, 76, 87, STR_REFIT, STR_REFIT_TIP}, // ORDER_WIDGET_REFIT |
808 { WWT_PUSHTXTBTN, RESIZE_TB, 14, 186, 278, 76, 87, STR_REFIT, STR_REFIT_TIP}, // ORDER_WIDGET_REFIT |
764 { WWT_PUSHTXTBTN, RESIZE_TB, 14, 320, 372, 76, 87, STR_TRANSFER, STR_MAKE_THE_HIGHLIGHTED_ORDER}, // ORDER_WIDGET_TRANSFER |
809 { WWT_PUSHTXTBTN, RESIZE_TB, 14, 279, 371, 76, 87, STR_TRANSFER, STR_MAKE_THE_HIGHLIGHTED_ORDER}, // ORDER_WIDGET_TRANSFER |
765 |
810 { WWT_PUSHTXTBTN, RESIZE_TB, 14, 279, 371, 76, 87, STR_SERVICE, STR_MAKE_THE_HIGHLIGHTED_ORDER}, // ORDER_WIDGET_SERVICE |
766 { 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 |
811 |
767 |
812 { WWT_PANEL, RESIZE_RTB, 14, 372, 373, 76, 99, 0x0, STR_NULL}, // ORDER_WIDGET_RESIZE_BAR |
768 { WWT_PANEL, RESIZE_RTB, 14, 387, 386, 76, 87, 0x0, STR_NULL}, // ORDER_WIDGET_RESIZE_BAR |
813 { WWT_PUSHIMGBTN, RESIZE_LRTB, 14, 372, 385, 76, 87, SPR_SHARED_ORDERS_ICON, STR_VEH_WITH_SHARED_ORDERS_LIST_TIP}, // ORDER_WIDGET_SHARED_ORDER_LIST |
769 |
814 |
770 { WWT_RESIZEBOX, RESIZE_LRTB, 14, 387, 398, 76, 87, 0x0, STR_RESIZE_BUTTON}, // ORDER_WIDGET_RESIZE |
815 { WWT_RESIZEBOX, RESIZE_LRTB, 14, 374, 385, 88, 99, 0x0, STR_RESIZE_BUTTON}, // ORDER_WIDGET_RESIZE |
771 { WIDGETS_END}, |
816 { WIDGETS_END}, |
772 }; |
817 }; |
773 |
818 |
774 static const WindowDesc _orders_train_desc = { |
819 static const WindowDesc _orders_train_desc = { |
775 WDP_AUTO, WDP_AUTO, 399, 88, 399, 88, |
820 WDP_AUTO, WDP_AUTO, 386, 100, 386, 100, |
776 WC_VEHICLE_ORDERS,WC_VEHICLE_VIEW, |
821 WC_VEHICLE_ORDERS,WC_VEHICLE_VIEW, |
777 WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_RESIZABLE, |
822 WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_RESIZABLE, |
778 _orders_train_widgets, |
823 _orders_train_widgets, |
779 OrdersWndProc |
824 OrdersWndProc |
780 }; |
825 }; |
782 /** |
827 /** |
783 * Widget definition for player orders (!train) |
828 * Widget definition for player orders (!train) |
784 */ |
829 */ |
785 static const Widget _orders_widgets[] = { |
830 static const Widget _orders_widgets[] = { |
786 { WWT_CLOSEBOX, RESIZE_NONE, 14, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW}, // ORDER_WIDGET_CLOSEBOX |
831 { WWT_CLOSEBOX, RESIZE_NONE, 14, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW}, // ORDER_WIDGET_CLOSEBOX |
787 { WWT_CAPTION, RESIZE_RIGHT, 14, 11, 409, 0, 13, STR_8829_ORDERS, STR_018C_WINDOW_TITLE_DRAG_THIS}, // ORDER_WIDGET_CAPTION |
832 { WWT_CAPTION, RESIZE_RIGHT, 14, 11, 385, 0, 13, STR_8829_ORDERS, STR_018C_WINDOW_TITLE_DRAG_THIS}, // ORDER_WIDGET_CAPTION |
788 { WWT_PUSHTXTBTN, RESIZE_LR, 14, 349, 409, 0, 13, STR_TIMETABLE_VIEW, STR_TIMETABLE_VIEW_TOOLTIP}, // ORDER_WIDGET_TIMETABLE_VIEW |
833 { WWT_PUSHTXTBTN, RESIZE_LR, 14, 325, 385, 0, 13, STR_TIMETABLE_VIEW, STR_TIMETABLE_VIEW_TOOLTIP}, // ORDER_WIDGET_TIMETABLE_VIEW |
789 |
834 |
790 { WWT_PANEL, RESIZE_RB, 14, 0, 397, 14, 75, 0x0, STR_8852_ORDERS_LIST_CLICK_ON_ORDER}, // ORDER_WIDGET_ORDER_LIST |
835 { WWT_PANEL, RESIZE_RB, 14, 0, 373, 14, 75, 0x0, STR_8852_ORDERS_LIST_CLICK_ON_ORDER}, // ORDER_WIDGET_ORDER_LIST |
791 |
836 |
792 { WWT_SCROLLBAR, RESIZE_LRB, 14, 398, 409, 14, 75, 0x0, STR_0190_SCROLL_BAR_SCROLLS_LIST}, // ORDER_WIDGET_SCROLLBAR |
837 { WWT_SCROLLBAR, RESIZE_LRB, 14, 374, 385, 14, 75, 0x0, STR_0190_SCROLL_BAR_SCROLLS_LIST}, // ORDER_WIDGET_SCROLLBAR |
793 |
838 |
794 { WWT_PUSHTXTBTN, RESIZE_TB, 14, 0, 63, 76, 87, STR_8823_SKIP, STR_8853_SKIP_THE_CURRENT_ORDER}, // ORDER_WIDGET_SKIP |
839 { WWT_PUSHTXTBTN, RESIZE_TB, 14, 0, 123, 88, 99, STR_8823_SKIP, STR_8853_SKIP_THE_CURRENT_ORDER}, // ORDER_WIDGET_SKIP |
795 { WWT_PUSHTXTBTN, RESIZE_TB, 14, 64, 128, 76, 87, STR_8824_DELETE, STR_8854_DELETE_THE_HIGHLIGHTED}, // ORDER_WIDGET_DELETE |
840 { WWT_PUSHTXTBTN, RESIZE_TB, 14, 124, 247, 88, 99, STR_8824_DELETE, STR_8854_DELETE_THE_HIGHLIGHTED}, // ORDER_WIDGET_DELETE |
796 { WWT_EMPTY, RESIZE_TB, 14, 0, 0, 76, 87, 0x0, 0x0}, // ORDER_WIDGET_NON_STOP |
841 { WWT_EMPTY, RESIZE_TB, 14, 0, 0, 76, 87, 0x0, 0x0}, // ORDER_WIDGET_NON_STOP |
797 { WWT_TEXTBTN, RESIZE_TB, 14, 129, 192, 76, 87, STR_8826_GO_TO, STR_8856_INSERT_A_NEW_ORDER_BEFORE}, // ORDER_WIDGET_GOTO |
842 { WWT_TEXTBTN, RESIZE_TB, 14, 248, 371, 88, 99, STR_8826_GO_TO, STR_8856_INSERT_A_NEW_ORDER_BEFORE}, // ORDER_WIDGET_GOTO |
798 { WWT_PUSHTXTBTN, RESIZE_TB, 14, 193, 256, 76, 87, STR_FULLLOAD_OR_SERVICE, STR_NULL}, // ORDER_WIDGET_FULL_LOAD |
843 { WWT_DROPDOWN, RESIZE_TB, 14, 0, 123, 76, 87, STR_8827_FULL_LOAD, STR_8857_MAKE_THE_HIGHLIGHTED_ORDER}, // ORDER_WIDGET_FULL_LOAD |
799 { WWT_PUSHTXTBTN, RESIZE_TB, 14, 257, 319, 76, 87, STR_8828_UNLOAD, STR_8858_MAKE_THE_HIGHLIGHTED_ORDER}, // ORDER_WIDGET_UNLOAD |
844 { WWT_PUSHTXTBTN, RESIZE_TB, 14, 124, 247, 76, 87, STR_8828_UNLOAD, STR_8858_MAKE_THE_HIGHLIGHTED_ORDER}, // ORDER_WIDGET_UNLOAD |
800 { WWT_PUSHTXTBTN, RESIZE_TB, 14, 257, 319, 76, 87, STR_REFIT, STR_REFIT_TIP}, // ORDER_WIDGET_REFIT |
845 { WWT_PUSHTXTBTN, RESIZE_TB, 14, 124, 247, 76, 87, STR_REFIT, STR_REFIT_TIP}, // ORDER_WIDGET_REFIT |
801 { WWT_PUSHTXTBTN, RESIZE_TB, 14, 320, 383, 76, 87, STR_TRANSFER, STR_MAKE_THE_HIGHLIGHTED_ORDER}, // ORDER_WIDGET_TRANSFER |
846 { WWT_PUSHTXTBTN, RESIZE_TB, 14, 248, 372, 76, 87, STR_TRANSFER, STR_MAKE_THE_HIGHLIGHTED_ORDER}, // ORDER_WIDGET_TRANSFER |
802 |
847 { WWT_PUSHTXTBTN, RESIZE_TB, 14, 248, 372, 76, 87, STR_SERVICE, STR_NULL}, // ORDER_WIDGET_SERVICE |
803 { 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 |
848 |
804 |
849 { WWT_PANEL, RESIZE_RTB, 14, 372, 373, 76, 99, 0x0, STR_NULL}, // ORDER_WIDGET_RESIZE_BAR |
805 { WWT_PANEL, RESIZE_RTB, 14, 397, 396, 76, 87, 0x0, STR_NULL}, // ORDER_WIDGET_RESIZE_BAR |
850 { WWT_PUSHIMGBTN, RESIZE_LRTB, 14, 372, 385, 76, 87, SPR_SHARED_ORDERS_ICON, STR_VEH_WITH_SHARED_ORDERS_LIST_TIP}, // ORDER_WIDGET_SHARED_ORDER_LIST |
806 |
851 |
807 { WWT_RESIZEBOX, RESIZE_LRTB, 14, 398, 409, 76, 87, 0x0, STR_RESIZE_BUTTON}, // ORDER_WIDGET_RESIZE |
852 { WWT_RESIZEBOX, RESIZE_LRTB, 14, 374, 385, 88, 99, 0x0, STR_RESIZE_BUTTON}, // ORDER_WIDGET_RESIZE |
808 { WIDGETS_END}, |
853 { WIDGETS_END}, |
809 }; |
854 }; |
810 |
855 |
811 static const WindowDesc _orders_desc = { |
856 static const WindowDesc _orders_desc = { |
812 WDP_AUTO, WDP_AUTO, 410, 88, 410, 88, |
857 WDP_AUTO, WDP_AUTO, 386, 100, 386, 100, |
813 WC_VEHICLE_ORDERS,WC_VEHICLE_VIEW, |
858 WC_VEHICLE_ORDERS,WC_VEHICLE_VIEW, |
814 WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_RESIZABLE, |
859 WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_RESIZABLE, |
815 _orders_widgets, |
860 _orders_widgets, |
816 OrdersWndProc |
861 OrdersWndProc |
817 }; |
862 }; |
819 /** |
864 /** |
820 * Widget definition for competitor orders |
865 * Widget definition for competitor orders |
821 */ |
866 */ |
822 static const Widget _other_orders_widgets[] = { |
867 static const Widget _other_orders_widgets[] = { |
823 { WWT_CLOSEBOX, RESIZE_NONE, 14, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW}, // ORDER_WIDGET_CLOSEBOX |
868 { WWT_CLOSEBOX, RESIZE_NONE, 14, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW}, // ORDER_WIDGET_CLOSEBOX |
824 { WWT_CAPTION, RESIZE_RIGHT, 14, 11, 331, 0, 13, STR_A00B_ORDERS, STR_018C_WINDOW_TITLE_DRAG_THIS}, // ORDER_WIDGET_CAPTION |
869 { WWT_CAPTION, RESIZE_RIGHT, 14, 11, 385, 0, 13, STR_8829_ORDERS, STR_018C_WINDOW_TITLE_DRAG_THIS}, // ORDER_WIDGET_CAPTION |
825 { WWT_PUSHTXTBTN, RESIZE_LR, 14, 271, 331, 0, 13, STR_TIMETABLE_VIEW, STR_TIMETABLE_VIEW_TOOLTIP}, // ORDER_WIDGET_TIMETABLE_VIEW |
870 { WWT_PUSHTXTBTN, RESIZE_LR, 14, 325, 385, 0, 13, STR_TIMETABLE_VIEW, STR_TIMETABLE_VIEW_TOOLTIP}, // ORDER_WIDGET_TIMETABLE_VIEW |
826 |
871 |
827 { WWT_PANEL, RESIZE_RB, 14, 0, 319, 14, 75, 0x0, STR_8852_ORDERS_LIST_CLICK_ON_ORDER}, // ORDER_WIDGET_ORDER_LIST |
872 { WWT_PANEL, RESIZE_RB, 14, 0, 373, 14, 75, 0x0, STR_8852_ORDERS_LIST_CLICK_ON_ORDER}, // ORDER_WIDGET_ORDER_LIST |
828 |
873 |
829 { WWT_SCROLLBAR, RESIZE_LRB, 14, 320, 331, 14, 75, 0x0, STR_0190_SCROLL_BAR_SCROLLS_LIST}, // ORDER_WIDGET_SCROLLBAR |
874 { WWT_SCROLLBAR, RESIZE_LRB, 14, 374, 385, 14, 75, 0x0, STR_0190_SCROLL_BAR_SCROLLS_LIST}, // ORDER_WIDGET_SCROLLBAR |
830 |
875 |
831 { WWT_EMPTY, RESIZE_NONE, 14, 0, 319, 76, 87, 0x0, STR_NULL}, // ORDER_WIDGET_SKIP |
876 { WWT_EMPTY, RESIZE_NONE, 14, 0, 0, 76, 87, 0x0, STR_NULL}, // ORDER_WIDGET_SKIP |
832 { WWT_EMPTY, RESIZE_NONE, 14, 0, 319, 76, 87, 0x0, STR_NULL}, // ORDER_WIDGET_DELETE |
877 { WWT_EMPTY, RESIZE_NONE, 14, 0, 0, 76, 87, 0x0, STR_NULL}, // ORDER_WIDGET_DELETE |
833 { WWT_EMPTY, RESIZE_NONE, 14, 0, 319, 76, 87, 0x0, STR_NULL}, // ORDER_WIDGET_NON_STOP |
878 { WWT_EMPTY, RESIZE_NONE, 14, 0, 0, 76, 87, 0x0, STR_NULL}, // ORDER_WIDGET_NON_STOP |
834 { WWT_EMPTY, RESIZE_NONE, 14, 0, 319, 76, 87, 0x0, STR_NULL}, // ORDER_WIDGET_GOTO |
879 { WWT_EMPTY, RESIZE_NONE, 14, 0, 0, 76, 87, 0x0, STR_NULL}, // ORDER_WIDGET_GOTO |
835 { WWT_EMPTY, RESIZE_NONE, 14, 0, 319, 76, 87, 0x0, STR_NULL}, // ORDER_WIDGET_FULL_LOAD |
880 { WWT_EMPTY, RESIZE_NONE, 14, 0, 0, 76, 87, 0x0, STR_NULL}, // ORDER_WIDGET_FULL_LOAD |
836 { WWT_EMPTY, RESIZE_NONE, 14, 0, 319, 76, 87, 0x0, STR_NULL}, // ORDER_WIDGET_UNLOAD |
881 { WWT_EMPTY, RESIZE_NONE, 14, 0, 0, 76, 87, 0x0, STR_NULL}, // ORDER_WIDGET_UNLOAD |
837 { WWT_EMPTY, RESIZE_NONE, 14, 0, 319, 76, 87, 0x0, STR_NULL}, // ORDER_WIDGET_REFIT |
882 { WWT_EMPTY, RESIZE_NONE, 14, 0, 0, 76, 87, 0x0, STR_NULL}, // ORDER_WIDGET_REFIT |
838 { WWT_EMPTY, RESIZE_NONE, 14, 0, 319, 76, 87, 0x0, STR_NULL}, // ORDER_WIDGET_TRANSFER |
883 { WWT_EMPTY, RESIZE_NONE, 14, 0, 0, 76, 87, 0x0, STR_NULL}, // ORDER_WIDGET_TRANSFER |
839 |
884 { WWT_EMPTY, RESIZE_NONE, 14, 0, 0, 76, 87, 0x0, STR_NULL}, // ORDER_WIDGET_SERVICE |
840 { WWT_EMPTY, RESIZE_NONE, 14, 0, 319, 76, 87, 0x0, STR_NULL}, // ORDER_WIDGET_SHARED_ORDER_LIST |
885 |
841 |
886 { WWT_PANEL, RESIZE_RTB, 14, 0, 373, 76, 87, 0x0, STR_NULL}, // ORDER_WIDGET_RESIZE_BAR |
842 { WWT_PANEL, RESIZE_RTB, 14, 0, 319, 76, 87, 0x0, STR_NULL}, // ORDER_WIDGET_RESIZE_BAR |
887 { WWT_EMPTY, RESIZE_TB, 14, 0, 0, 76, 87, 0x0, STR_NULL}, // ORDER_WIDGET_SHARED_ORDER_LIST |
843 |
888 |
844 { WWT_RESIZEBOX, RESIZE_LRTB, 14, 320, 331, 76, 87, 0x0, STR_RESIZE_BUTTON}, // ORDER_WIDGET_RESIZE |
889 { WWT_RESIZEBOX, RESIZE_LRTB, 14, 374, 385, 88, 99, 0x0, STR_RESIZE_BUTTON}, // ORDER_WIDGET_RESIZE |
845 { WIDGETS_END}, |
890 { WIDGETS_END}, |
846 }; |
891 }; |
847 |
892 |
848 static const WindowDesc _other_orders_desc = { |
893 static const WindowDesc _other_orders_desc = { |
849 WDP_AUTO, WDP_AUTO, 332, 88, 332, 88, |
894 WDP_AUTO, WDP_AUTO, 386, 88, 386, 88, |
850 WC_VEHICLE_ORDERS,WC_VEHICLE_VIEW, |
895 WC_VEHICLE_ORDERS,WC_VEHICLE_VIEW, |
851 WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_UNCLICK_BUTTONS | WDF_RESIZABLE, |
896 WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_UNCLICK_BUTTONS | WDF_RESIZABLE, |
852 _other_orders_widgets, |
897 _other_orders_widgets, |
853 OrdersWndProc |
898 OrdersWndProc |
854 }; |
899 }; |