607 this->widget[DEPOT_WIDGET_CAPTION].data = STR_8800_TRAIN_DEPOT; |
607 this->widget[DEPOT_WIDGET_CAPTION].data = STR_8800_TRAIN_DEPOT; |
608 this->widget[DEPOT_WIDGET_STOP_ALL].tooltips = STR_MASS_STOP_DEPOT_TRAIN_TIP; |
608 this->widget[DEPOT_WIDGET_STOP_ALL].tooltips = STR_MASS_STOP_DEPOT_TRAIN_TIP; |
609 this->widget[DEPOT_WIDGET_START_ALL].tooltips= STR_MASS_START_DEPOT_TRAIN_TIP; |
609 this->widget[DEPOT_WIDGET_START_ALL].tooltips= STR_MASS_START_DEPOT_TRAIN_TIP; |
610 this->widget[DEPOT_WIDGET_SELL].tooltips = STR_8841_DRAG_TRAIN_VEHICLE_TO_HERE; |
610 this->widget[DEPOT_WIDGET_SELL].tooltips = STR_8841_DRAG_TRAIN_VEHICLE_TO_HERE; |
611 this->widget[DEPOT_WIDGET_SELL_ALL].tooltips = STR_DEPOT_SELL_ALL_BUTTON_TRAIN_TIP; |
611 this->widget[DEPOT_WIDGET_SELL_ALL].tooltips = STR_DEPOT_SELL_ALL_BUTTON_TRAIN_TIP; |
612 this->widget[DEPOT_WIDGET_MATRIX].tooltips = STR_883F_TRAINS_CLICK_ON_TRAIN_FOR; |
|
613 |
612 |
614 this->widget[DEPOT_WIDGET_BUILD].data = STR_8815_NEW_VEHICLES; |
613 this->widget[DEPOT_WIDGET_BUILD].data = STR_8815_NEW_VEHICLES; |
615 this->widget[DEPOT_WIDGET_BUILD].tooltips = STR_8840_BUILD_NEW_TRAIN_VEHICLE; |
614 this->widget[DEPOT_WIDGET_BUILD].tooltips = STR_8840_BUILD_NEW_TRAIN_VEHICLE; |
616 this->widget[DEPOT_WIDGET_CLONE].data = STR_CLONE_TRAIN; |
615 this->widget[DEPOT_WIDGET_CLONE].data = STR_CLONE_TRAIN; |
617 this->widget[DEPOT_WIDGET_CLONE].tooltips = STR_CLONE_TRAIN_DEPOT_INFO; |
616 this->widget[DEPOT_WIDGET_CLONE].tooltips = STR_CLONE_TRAIN_DEPOT_INFO; |
631 this->widget[DEPOT_WIDGET_CAPTION].data = STR_9003_ROAD_VEHICLE_DEPOT; |
630 this->widget[DEPOT_WIDGET_CAPTION].data = STR_9003_ROAD_VEHICLE_DEPOT; |
632 this->widget[DEPOT_WIDGET_STOP_ALL].tooltips = STR_MASS_STOP_DEPOT_ROADVEH_TIP; |
631 this->widget[DEPOT_WIDGET_STOP_ALL].tooltips = STR_MASS_STOP_DEPOT_ROADVEH_TIP; |
633 this->widget[DEPOT_WIDGET_START_ALL].tooltips= STR_MASS_START_DEPOT_ROADVEH_TIP; |
632 this->widget[DEPOT_WIDGET_START_ALL].tooltips= STR_MASS_START_DEPOT_ROADVEH_TIP; |
634 this->widget[DEPOT_WIDGET_SELL].tooltips = STR_9024_DRAG_ROAD_VEHICLE_TO_HERE; |
633 this->widget[DEPOT_WIDGET_SELL].tooltips = STR_9024_DRAG_ROAD_VEHICLE_TO_HERE; |
635 this->widget[DEPOT_WIDGET_SELL_ALL].tooltips = STR_DEPOT_SELL_ALL_BUTTON_ROADVEH_TIP; |
634 this->widget[DEPOT_WIDGET_SELL_ALL].tooltips = STR_DEPOT_SELL_ALL_BUTTON_ROADVEH_TIP; |
636 this->widget[DEPOT_WIDGET_MATRIX].tooltips = STR_9022_VEHICLES_CLICK_ON_VEHICLE; |
|
637 |
635 |
638 this->widget[DEPOT_WIDGET_BUILD].data = STR_9004_NEW_VEHICLES; |
636 this->widget[DEPOT_WIDGET_BUILD].data = STR_9004_NEW_VEHICLES; |
639 this->widget[DEPOT_WIDGET_BUILD].tooltips = STR_9023_BUILD_NEW_ROAD_VEHICLE; |
637 this->widget[DEPOT_WIDGET_BUILD].tooltips = STR_9023_BUILD_NEW_ROAD_VEHICLE; |
640 this->widget[DEPOT_WIDGET_CLONE].data = STR_CLONE_ROAD_VEHICLE; |
638 this->widget[DEPOT_WIDGET_CLONE].data = STR_CLONE_ROAD_VEHICLE; |
641 this->widget[DEPOT_WIDGET_CLONE].tooltips = STR_CLONE_ROAD_VEHICLE_DEPOT_INFO; |
639 this->widget[DEPOT_WIDGET_CLONE].tooltips = STR_CLONE_ROAD_VEHICLE_DEPOT_INFO; |
655 this->widget[DEPOT_WIDGET_CAPTION].data = STR_9803_SHIP_DEPOT; |
653 this->widget[DEPOT_WIDGET_CAPTION].data = STR_9803_SHIP_DEPOT; |
656 this->widget[DEPOT_WIDGET_STOP_ALL].tooltips = STR_MASS_STOP_DEPOT_SHIP_TIP; |
654 this->widget[DEPOT_WIDGET_STOP_ALL].tooltips = STR_MASS_STOP_DEPOT_SHIP_TIP; |
657 this->widget[DEPOT_WIDGET_START_ALL].tooltips= STR_MASS_START_DEPOT_SHIP_TIP; |
655 this->widget[DEPOT_WIDGET_START_ALL].tooltips= STR_MASS_START_DEPOT_SHIP_TIP; |
658 this->widget[DEPOT_WIDGET_SELL].tooltips = STR_9821_DRAG_SHIP_TO_HERE_TO_SELL; |
656 this->widget[DEPOT_WIDGET_SELL].tooltips = STR_9821_DRAG_SHIP_TO_HERE_TO_SELL; |
659 this->widget[DEPOT_WIDGET_SELL_ALL].tooltips = STR_DEPOT_SELL_ALL_BUTTON_SHIP_TIP; |
657 this->widget[DEPOT_WIDGET_SELL_ALL].tooltips = STR_DEPOT_SELL_ALL_BUTTON_SHIP_TIP; |
660 this->widget[DEPOT_WIDGET_MATRIX].tooltips = STR_981F_SHIPS_CLICK_ON_SHIP_FOR; |
|
661 |
658 |
662 this->widget[DEPOT_WIDGET_BUILD].data = STR_9804_NEW_SHIPS; |
659 this->widget[DEPOT_WIDGET_BUILD].data = STR_9804_NEW_SHIPS; |
663 this->widget[DEPOT_WIDGET_BUILD].tooltips = STR_9820_BUILD_NEW_SHIP; |
660 this->widget[DEPOT_WIDGET_BUILD].tooltips = STR_9820_BUILD_NEW_SHIP; |
664 this->widget[DEPOT_WIDGET_CLONE].data = STR_CLONE_SHIP; |
661 this->widget[DEPOT_WIDGET_CLONE].data = STR_CLONE_SHIP; |
665 this->widget[DEPOT_WIDGET_CLONE].tooltips = STR_CLONE_SHIP_DEPOT_INFO; |
662 this->widget[DEPOT_WIDGET_CLONE].tooltips = STR_CLONE_SHIP_DEPOT_INFO; |
679 this->widget[DEPOT_WIDGET_CAPTION].data = STR_A002_AIRCRAFT_HANGAR; |
676 this->widget[DEPOT_WIDGET_CAPTION].data = STR_A002_AIRCRAFT_HANGAR; |
680 this->widget[DEPOT_WIDGET_STOP_ALL].tooltips = STR_MASS_STOP_HANGAR_TIP; |
677 this->widget[DEPOT_WIDGET_STOP_ALL].tooltips = STR_MASS_STOP_HANGAR_TIP; |
681 this->widget[DEPOT_WIDGET_START_ALL].tooltips= STR_MASS_START_HANGAR_TIP; |
678 this->widget[DEPOT_WIDGET_START_ALL].tooltips= STR_MASS_START_HANGAR_TIP; |
682 this->widget[DEPOT_WIDGET_SELL].tooltips = STR_A023_DRAG_AIRCRAFT_TO_HERE_TO; |
679 this->widget[DEPOT_WIDGET_SELL].tooltips = STR_A023_DRAG_AIRCRAFT_TO_HERE_TO; |
683 this->widget[DEPOT_WIDGET_SELL_ALL].tooltips = STR_DEPOT_SELL_ALL_BUTTON_AIRCRAFT_TIP; |
680 this->widget[DEPOT_WIDGET_SELL_ALL].tooltips = STR_DEPOT_SELL_ALL_BUTTON_AIRCRAFT_TIP; |
684 this->widget[DEPOT_WIDGET_MATRIX].tooltips = STR_A021_AIRCRAFT_CLICK_ON_AIRCRAFT; |
|
685 |
681 |
686 this->widget[DEPOT_WIDGET_BUILD].data = STR_A003_NEW_AIRCRAFT; |
682 this->widget[DEPOT_WIDGET_BUILD].data = STR_A003_NEW_AIRCRAFT; |
687 this->widget[DEPOT_WIDGET_BUILD].tooltips = STR_A022_BUILD_NEW_AIRCRAFT; |
683 this->widget[DEPOT_WIDGET_BUILD].tooltips = STR_A022_BUILD_NEW_AIRCRAFT; |
688 this->widget[DEPOT_WIDGET_CLONE].data = STR_CLONE_AIRCRAFT; |
684 this->widget[DEPOT_WIDGET_CLONE].data = STR_CLONE_AIRCRAFT; |
689 this->widget[DEPOT_WIDGET_CLONE].tooltips = STR_CLONE_AIRCRAFT_INFO_HANGAR_WINDOW; |
685 this->widget[DEPOT_WIDGET_CLONE].tooltips = STR_CLONE_AIRCRAFT_INFO_HANGAR_WINDOW; |
839 DoCommandP(this->window_number, this->type, 0, NULL, CMD_DEPOT_MASS_AUTOREPLACE); |
835 DoCommandP(this->window_number, this->type, 0, NULL, CMD_DEPOT_MASS_AUTOREPLACE); |
840 break; |
836 break; |
841 |
837 |
842 } |
838 } |
843 } |
839 } |
|
840 |
|
841 virtual void OnRightClick(Point pt, int widget) |
|
842 { |
|
843 if (widget != DEPOT_WIDGET_MATRIX) return; |
|
844 |
|
845 GetDepotVehiclePtData gdvp = { NULL, NULL }; |
|
846 const Vehicle *v = NULL; |
|
847 DepotGUIAction mode = this->GetVehicleFromDepotWndPt(pt.x, pt.y, &v, &gdvp); |
|
848 |
|
849 if (this->type == VEH_TRAIN) v = gdvp.wagon; |
|
850 |
|
851 if (v != NULL && mode == MODE_DRAG_VEHICLE) { |
|
852 AcceptedCargo capacity, loaded; |
|
853 memset(capacity, 0, sizeof(capacity)); |
|
854 memset(loaded, 0, sizeof(loaded)); |
|
855 |
|
856 /* Display info for single (articulated) vehicle, or for whole chain starting with selected vehicle */ |
|
857 bool whole_chain = (this->type == VEH_TRAIN && _ctrl_pressed); |
|
858 |
|
859 /* loop through vehicle chain and collect cargos */ |
|
860 uint num = 0; |
|
861 for (const Vehicle *w = v; w != NULL; w = w->Next()) { |
|
862 if (w->cargo_cap > 0 && w->cargo_type < NUM_CARGO) { |
|
863 capacity[w->cargo_type] += w->cargo_cap; |
|
864 loaded [w->cargo_type] += w->cargo.Count(); |
|
865 } |
|
866 |
|
867 if (w->type == VEH_TRAIN && !EngineHasArticPart(w)) { |
|
868 num++; |
|
869 if (!whole_chain) break; |
|
870 } |
|
871 } |
|
872 |
|
873 /* Build tooltipstring */ |
|
874 static char details[1024]; |
|
875 details[0] = '\0'; |
|
876 char *pos = details; |
|
877 |
|
878 for (CargoID cargo_type = 0; cargo_type < NUM_CARGO; cargo_type++) { |
|
879 if (capacity[cargo_type] == 0) continue; |
|
880 |
|
881 SetDParam(0, cargo_type); // {CARGO} #1 |
|
882 SetDParam(1, loaded[cargo_type]); // {CARGO} #2 |
|
883 SetDParam(2, cargo_type); // {SHORTCARGO} #1 |
|
884 SetDParam(3, capacity[cargo_type]); // {SHORTCARGO} #2 |
|
885 pos = GetString(pos, STR_DEPOT_VEHICLE_TOOLTIP_CARGO, lastof(details)); |
|
886 } |
|
887 |
|
888 /* Show tooltip window */ |
|
889 uint64 args[2]; |
|
890 args[0] = (whole_chain ? num : v->engine_type); |
|
891 args[1] = (uint64)details; |
|
892 GuiShowTooltips(whole_chain ? STR_DEPOT_VEHICLE_TOOLTIP_CHAIN : STR_DEPOT_VEHICLE_TOOLTIP, 2, args); |
|
893 } else { |
|
894 /* Show tooltip help */ |
|
895 StringID tooltip = INVALID_STRING_ID; |
|
896 switch (this->type) { |
|
897 case VEH_TRAIN: tooltip = STR_883F_TRAINS_CLICK_ON_TRAIN_FOR; break; |
|
898 case VEH_ROAD: tooltip = STR_9022_VEHICLES_CLICK_ON_VEHICLE; break; |
|
899 case VEH_SHIP: tooltip = STR_981F_SHIPS_CLICK_ON_SHIP_FOR; break; |
|
900 case VEH_AIRCRAFT: tooltip = STR_A021_AIRCRAFT_CLICK_ON_AIRCRAFT;break; |
|
901 default: NOT_REACHED(); |
|
902 } |
|
903 GuiShowTooltips(tooltip); |
|
904 } |
|
905 } |
|
906 |
844 |
907 |
845 virtual void OnPlaceObject(Point pt, TileIndex tile) |
908 virtual void OnPlaceObject(Point pt, TileIndex tile) |
846 { |
909 { |
847 const Vehicle *v = CheckMouseOverVehicle(); |
910 const Vehicle *v = CheckMouseOverVehicle(); |
848 |
911 |