# HG changeset patch # User bjarni # Date 1156670932 0 # Node ID 094190c7f3a0302f132887307b1abd0a0a423844 # Parent 0269b733a4d6b487d6a1c933441c4cec0af7b818 (svn r6165) -Feature: control click Goto Depot will now make the vehicle service at the depot and leave right away. To tell the difference the status of stopping vehicles will be in red, while servicing vehicles will be green. -Codechange: remove some dead code in CmdSendAircraftToHangar() since it is conflicting with new functionality. Now p2 means the same for all types diff --git a/aircraft_cmd.c b/aircraft_cmd.c --- a/aircraft_cmd.c +++ b/aircraft_cmd.c @@ -492,9 +492,8 @@ * @param tile unused * @param p1 vehicle ID to send to the hangar * @param p2 various bitmasked elements - * - p2 = 0 - aircraft goes to the depot and stays there (user command) - * - p2 (bit 16) - aircraft will try to goto a depot, but not stop there (eg autorenew or autoreplace) - * - p2 (bit 17) - aircraft will try to goto a depot at the airport specified by low word of p2 XXX - Not Used + * - p2 bit 0 - aircraft will try to goto a hangar, but not stop there (service only) + * - p2 bit 1 - aircraft will try to locate another airport with a hangar if the target airport lacks one (used by helicopters for autorenew and autoreplace) */ int32 CmdSendAircraftToHangar(TileIndex tile, uint32 flags, uint32 p1, uint32 p2) { @@ -516,14 +515,13 @@ } else { bool next_airport_has_hangar = true; /* If bit 17 is set, next airport is specified by low word of p2, otherwise it's the target airport */ - /* XXX - I don't think p2 is any valid station cause all calls use either 0, 1, or 1<<16!!!!!!!!! */ - StationID next_airport_index = (HASBIT(p2, 17)) ? (StationID)p2 : v->u.air.targetairport; + StationID next_airport_index = v->u.air.targetairport; const Station *st = GetStation(next_airport_index); /* If the station is not a valid airport or if it has no hangars */ if (!IsValidStation(st) || st->airport_tile == 0 || GetAirport(st->airport_type)->nof_depots == 0) { StationID station; - if (p2 != 0) return CMD_ERROR; + if (!HASBIT(p2, 1)) return CMD_ERROR; // the aircraft has to search for a hangar on its own station = FindNearestHangar(v); @@ -536,7 +534,8 @@ if (flags & DC_EXEC) { v->current_order.type = OT_GOTO_DEPOT; - v->current_order.flags = HASBIT(p2, 16) ? 0 : OF_NON_STOP | OF_FULL_LOAD; + v->current_order.flags = OF_NON_STOP; + if (!HASBIT(p2,0)) SETBIT(v->current_order.flags, OFB_HALT_IN_DEPOT); v->current_order.dest.station = next_airport_index; InvalidateWindowWidget(WC_VEHICLE_VIEW, v->index, STATUS_BAR); if (HASBIT(p2, 17) || (p2 == 0 && v->u.air.state == FLYING && !next_airport_has_hangar)) { @@ -1593,7 +1592,7 @@ HASBIT(GetEngine(v->engine_type)->player_avail, _local_player)) )) { _current_player = _local_player; - DoCommandP(v->tile, v->index, 1 << 16, NULL, CMD_SEND_AIRCRAFT_TO_HANGAR | CMD_SHOW_NO_ERROR); + DoCommandP(v->tile, v->index, 3, NULL, CMD_SEND_AIRCRAFT_TO_HANGAR | CMD_SHOW_NO_ERROR); _current_player = OWNER_NONE; } } @@ -1655,9 +1654,9 @@ // only the vehicle owner needs to calculate the rest (locally) if (EngineHasReplacementForPlayer(p, v->engine_type) || (p->engine_renew && v->age - v->max_age > (p->engine_renew_months * 30))) { - // send the aircraft to the hangar at next airport (bit 17 set) + // send the aircraft to the hangar at next airport _current_player = _local_player; - DoCommandP(v->tile, v->index, 1 << 16, NULL, CMD_SEND_AIRCRAFT_TO_HANGAR | CMD_SHOW_NO_ERROR); + DoCommandP(v->tile, v->index, 1, NULL, CMD_SEND_AIRCRAFT_TO_HANGAR | CMD_SHOW_NO_ERROR); _current_player = OWNER_NONE; } } diff --git a/aircraft_gui.c b/aircraft_gui.c --- a/aircraft_gui.c +++ b/aircraft_gui.c @@ -557,7 +557,11 @@ /* Aircrafts always go to a station, even if you say depot */ SetDParam(0, v->current_order.dest.station); SetDParam(1, v->cur_speed * 128 / 10); - str = STR_HEADING_FOR_HANGAR + _patches.vehicle_speed; + if (HASBIT(v->current_order.flags, OFB_HALT_IN_DEPOT)) { + str = STR_HEADING_FOR_HANGAR + _patches.vehicle_speed; + } else { + str = STR_HEADING_FOR_HANGAR_SERVICE + _patches.vehicle_speed; + } } break; case OT_LOADING: @@ -592,7 +596,7 @@ ScrollMainWindowTo(v->x_pos, v->y_pos); break; case 7: /* goto hangar */ - DoCommandP(v->tile, v->index, 0, NULL, CMD_SEND_AIRCRAFT_TO_HANGAR | CMD_MSG(STR_A012_CAN_T_SEND_AIRCRAFT_TO)); + DoCommandP(v->tile, v->index, _ctrl_pressed ? 1 : 0, NULL, CMD_SEND_AIRCRAFT_TO_HANGAR | CMD_MSG(STR_A012_CAN_T_SEND_AIRCRAFT_TO)); break; case 8: /* refit */ ShowAircraftRefitWindow(v); diff --git a/lang/english.txt b/lang/english.txt --- a/lang/english.txt +++ b/lang/english.txt @@ -2456,8 +2456,10 @@ STR_880F_GO_NON_STOP_TO_TRAIN_DEPOT :Go non-stop to {TOWN} Train Depot STR_SERVICE_NON_STOP_AT_TRAIN_DEPOT :Service non-stop at {TOWN} Train Depot -STR_HEADING_FOR_TRAIN_DEPOT :{LTBLUE}Heading for {TOWN} Train Depot -STR_HEADING_FOR_TRAIN_DEPOT_VEL :{LTBLUE}Heading for {TOWN} Train Depot, {VELOCITY} +STR_HEADING_FOR_TRAIN_DEPOT :{LTBLUE}Heading for {RED}{TOWN} Train Depot +STR_HEADING_FOR_TRAIN_DEPOT_VEL :{LTBLUE}Heading for {RED}{TOWN} Train Depot{LTBLUE}, {VELOCITY} +STR_HEADING_FOR_TRAIN_DEPOT_SERVICE :{LTBLUE}Heading for {GREEN}{TOWN} Train Depot +STR_HEADING_FOR_TRAIN_DEPOT_SERVICE_VEL :{LTBLUE}Heading for {GREEN}{TOWN} Train Depot{LTBLUE}, {VELOCITY} STR_INVALID_ORDER :{RED} (Invalid Order) @@ -2521,10 +2523,10 @@ STR_8843_TRAIN_VEHICLE_SELECTION :{BLACK}Train vehicle selection list - click on vehicle for information STR_8844_BUILD_THE_HIGHLIGHTED_TRAIN :{BLACK}Build the highlighted train vehicle STR_8845_RENAME_TRAIN_VEHICLE_TYPE :{BLACK}Rename train vehicle type -STR_8846_CURRENT_TRAIN_ACTION_CLICK :{BLACK}Current train action - click here to stop/start train +STR_8846_CURRENT_TRAIN_ACTION_CLICK :{BLACK}Current train action - click here to stop/start train{}{RED}Red depot names{BLACK}: Stay in depot{}{GREEN}Green depot names{BLACK}: Service only STR_8847_SHOW_TRAIN_S_ORDERS :{BLACK}Show train's orders STR_8848_CENTER_MAIN_VIEW_ON_TRAIN :{BLACK}Centre main view on train's location -STR_8849_SEND_TRAIN_TO_DEPOT :{BLACK}Send train to depot +STR_8849_SEND_TRAIN_TO_DEPOT :{BLACK}Send train to depot and stop it there{}Control click will make the train get service only and leave right away STR_884A_FORCE_TRAIN_TO_PROCEED :{BLACK}Force train to proceed without waiting for signal to clear it STR_884B_REVERSE_DIRECTION_OF_TRAIN :{BLACK}Reverse direction of train STR_884C_SHOW_TRAIN_DETAILS :{BLACK}Show train details @@ -2590,16 +2592,18 @@ STR_9014_CAN_T_SELL_ROAD_VEHICLE :{WHITE}Can't sell road vehicle... STR_9015_CAN_T_STOP_START_ROAD_VEHICLE :{WHITE}Can't stop/start road vehicle... STR_9016_ROAD_VEHICLE_IS_WAITING :{WHITE}Road vehicle {COMMA} is waiting in depot -STR_HEADING_FOR_ROAD_DEPOT :{LTBLUE}Heading for {TOWN} Road Depot -STR_HEADING_FOR_ROAD_DEPOT_VEL :{LTBLUE}Heading for {TOWN} Road Depot, {VELOCITY} +STR_HEADING_FOR_ROAD_DEPOT :{LTBLUE}Heading for {RED}{TOWN} Road Depot +STR_HEADING_FOR_ROAD_DEPOT_VEL :{LTBLUE}Heading for {RED}{TOWN} Road Depot{LTBLUE}, {VELOCITY} +STR_HEADING_FOR_ROAD_DEPOT_SERVICE :{LTBLUE}Heading for {GREEN}{TOWN} Road Depot +STR_HEADING_FOR_ROAD_DEPOT_SERVICE_VEL :{LTBLUE}Heading for {GREEN}{TOWN} Road Depot{LTBLUE}, {VELOCITY} STR_9018_CAN_T_SEND_VEHICLE_TO_DEPOT :{WHITE}Can't send vehicle to depot... STR_9019_UNABLE_TO_FIND_LOCAL_DEPOT :{WHITE}Unable to find local depot STR_901A_ROAD_VEHICLES_CLICK_ON :{BLACK}Road vehicles - click on vehicle for information STR_901B_BUILD_NEW_ROAD_VEHICLES :{BLACK}Build new road vehicles (requires road vehicle depot) -STR_901C_CURRENT_VEHICLE_ACTION :{BLACK}Current vehicle action - click here to stop/start vehicle +STR_901C_CURRENT_VEHICLE_ACTION :{BLACK}Current vehicle action - click here to stop/start vehicle{}{RED}Red depot names{BLACK}: Stay in depot{}{GREEN}Green depot names{BLACK}: Service only STR_901D_SHOW_VEHICLE_S_ORDERS :{BLACK}Show vehicle's orders STR_901E_CENTER_MAIN_VIEW_ON_VEHICLE :{BLACK}Centre main view on vehicle's location -STR_901F_SEND_VEHICLE_TO_DEPOT :{BLACK}Send vehicle to depot +STR_901F_SEND_VEHICLE_TO_DEPOT :{BLACK}Send vehicle to depot and stop it there{}Control click will make the vehicle get service only and leave right away STR_9020_FORCE_VEHICLE_TO_TURN_AROUND :{BLACK}Force vehicle to turn around STR_9021_SHOW_ROAD_VEHICLE_DETAILS :{BLACK}Show road vehicle details STR_9022_VEHICLES_CLICK_ON_VEHICLE :{BLACK}Vehicles - click on vehicle for information @@ -2660,8 +2664,10 @@ STR_9818_CAN_T_STOP_START_SHIP :{WHITE}Can't stop/start ship... STR_9819_CAN_T_SEND_SHIP_TO_DEPOT :{WHITE}Can't send ship to depot... STR_981A_UNABLE_TO_FIND_LOCAL_DEPOT :{WHITE}Unable to find local depot -STR_HEADING_FOR_SHIP_DEPOT :{LTBLUE}Heading for {TOWN} Ship Depot -STR_HEADING_FOR_SHIP_DEPOT_VEL :{LTBLUE}Heading for {TOWN} Ship Depot, {VELOCITY} +STR_HEADING_FOR_SHIP_DEPOT :{LTBLUE}Heading for {RED}{TOWN} Ship Depot +STR_HEADING_FOR_SHIP_DEPOT_VEL :{LTBLUE}Heading for {RED}{TOWN} Ship Depot{LTBLUE}, {VELOCITY} +STR_HEADING_FOR_SHIP_DEPOT_SERVICE :{LTBLUE}Heading for {GREEN}{TOWN} Ship Depot +STR_HEADING_FOR_SHIP_DEPOT_SERVICE_VEL :{LTBLUE}Heading for {GREEN}{TOWN} Ship Depot{LTBLUE}, {VELOCITY} STR_981C_SHIP_IS_WAITING_IN_DEPOT :{WHITE}Ship {COMMA} is waiting in depot STR_981D_BUILD_SHIP_DOCK :{BLACK}Build ship dock STR_981E_BUILD_SHIP_DEPOT_FOR_BUILDING :{BLACK}Build ship depot (for building and servicing ships) @@ -2673,10 +2679,10 @@ STR_9824_BUILD_NEW_SHIPS_REQUIRES :{BLACK}Build new ships (requires ship depot) STR_9825_SHIP_SELECTION_LIST_CLICK :{BLACK}Ship selection list - click on ship for information STR_9826_BUILD_THE_HIGHLIGHTED_SHIP :{BLACK}Build the highlighted ship -STR_9827_CURRENT_SHIP_ACTION_CLICK :{BLACK}Current ship action - click here to stop/start ship +STR_9827_CURRENT_SHIP_ACTION_CLICK :{BLACK}Current ship action - click here to stop/start ship{}{RED}Red depot names{BLACK}: Stay in depot{}{GREEN}Green depot names{BLACK}: Service only STR_9828_SHOW_SHIP_S_ORDERS :{BLACK}Show ship's orders STR_9829_CENTER_MAIN_VIEW_ON_SHIP :{BLACK}Centre main view on ship's location -STR_982A_SEND_SHIP_TO_DEPOT :{BLACK}Send ship to depot +STR_982A_SEND_SHIP_TO_DEPOT :{BLACK}Send ship to depot and stop it there{}Control click will make the ship get service only and leave right away STR_982B_SHOW_SHIP_DETAILS :{BLACK}Show ship details STR_982C_NEW_SHIP_NOW_AVAILABLE :{BLACK}{BIGFONT}New ship now available! STR_982D :{BLACK}{BIGFONT}{STRING} @@ -2725,8 +2731,10 @@ STR_A010_RELIABILITY_BREAKDOWNS :{BLACK}Reliability: {LTBLUE}{COMMA}% {BLACK}Breakdowns since last service: {LTBLUE}{COMMA} STR_A011_BUILT_VALUE :{LTBLUE}{STRING}{BLACK} Built: {LTBLUE}{NUM}{BLACK} Value: {LTBLUE}{CURRENCY} STR_A012_CAN_T_SEND_AIRCRAFT_TO :{WHITE}Can't send aircraft to hangar... -STR_HEADING_FOR_HANGAR :{LTBLUE}Heading for {STATION} Hangar -STR_HEADING_FOR_HANGAR_VEL :{LTBLUE}Heading for {STATION} Hangar, {VELOCITY} +STR_HEADING_FOR_HANGAR :{LTBLUE}Heading for {RED}{TOWN} Hangar +STR_HEADING_FOR_HANGAR_VEL :{LTBLUE}Heading for {RED}{TOWN} Hangar{LTBLUE}, {VELOCITY} +STR_HEADING_FOR_HANGAR_SERVICE :{LTBLUE}Heading for {GREEN}{TOWN} Hangar +STR_HEADING_FOR_HANGAR_SERVICE_VEL :{LTBLUE}Heading for {GREEN}{TOWN} Hangar{LTBLUE}, {VELOCITY} STR_A014_AIRCRAFT_IS_WAITING_IN :{WHITE}Aircraft {COMMA} is waiting in the aircraft hangar STR_A015_AIRCRAFT_IN_THE_WAY :{WHITE}Aircraft in the way STR_A016_CAN_T_STOP_START_AIRCRAFT :{WHITE}Can't stop/start aircraft... @@ -2745,10 +2753,10 @@ STR_A024_CENTER_MAIN_VIEW_ON_HANGAR :{BLACK}Centre main view on hangar location STR_A025_AIRCRAFT_SELECTION_LIST :{BLACK}Aircraft selection list - click on aircraft for information STR_A026_BUILD_THE_HIGHLIGHTED_AIRCRAFT :{BLACK}Build the highlighted aircraft -STR_A027_CURRENT_AIRCRAFT_ACTION :{BLACK}Current aircraft action - click here to stop/start aircraft +STR_A027_CURRENT_AIRCRAFT_ACTION :{BLACK}Current aircraft action - click here to stop/start aircraft{}{RED}Red hangar names{BLACK}: Stay in depot{}{GREEN}Green hangar names{BLACK}: Service only STR_A028_SHOW_AIRCRAFT_S_ORDERS :{BLACK}Show aircraft's orders STR_A029_CENTER_MAIN_VIEW_ON_AIRCRAFT :{BLACK}Centre main view on aircraft's location -STR_A02A_SEND_AIRCRAFT_TO_HANGAR :{BLACK}Send aircraft to hangar +STR_A02A_SEND_AIRCRAFT_TO_HANGAR :{BLACK}Send aircraft to hangar and stop it there{}Control click will make the aircraft get service only and leave right away STR_A02B_SHOW_AIRCRAFT_DETAILS :{BLACK}Show aircraft details STR_A02C_NEW_AIRCRAFT_NOW_AVAILABLE :{BLACK}{BIGFONT}New aircraft now available! STR_A02D :{BLACK}{BIGFONT}{STRING} diff --git a/roadveh_cmd.c b/roadveh_cmd.c --- a/roadveh_cmd.c +++ b/roadveh_cmd.c @@ -357,7 +357,7 @@ /** Send a road vehicle to the depot. * @param tile unused * @param p1 vehicle ID to send to the depot - * @param p2 unused + * @param p2 if bit 0 is set, then the road vehicle will only service at the depot. 0 Makes it stop inside */ int32 CmdSendRoadVehToDepot(TileIndex tile, uint32 flags, uint32 p1, uint32 p2) { @@ -393,7 +393,8 @@ if (flags & DC_EXEC) { ClearSlot(v); v->current_order.type = OT_GOTO_DEPOT; - v->current_order.flags = OF_NON_STOP | OF_HALT_IN_DEPOT; + v->current_order.flags = OF_NON_STOP; + if (!HASBIT(p2,0)) SETBIT(v->current_order.flags, OFB_HALT_IN_DEPOT); v->current_order.dest.depot = dep->index; v->dest_tile = dep->xy; InvalidateWindowWidget(WC_VEHICLE_VIEW, v->index, STATUS_BAR); diff --git a/roadveh_gui.c b/roadveh_gui.c --- a/roadveh_gui.c +++ b/roadveh_gui.c @@ -343,7 +343,11 @@ Depot *depot = GetDepot(v->current_order.dest.depot); SetDParam(0, depot->town_index); SetDParam(1, v->cur_speed / 2); - str = STR_HEADING_FOR_ROAD_DEPOT + _patches.vehicle_speed; + if (HASBIT(v->current_order.flags, OFB_HALT_IN_DEPOT)) { + str = STR_HEADING_FOR_ROAD_DEPOT + _patches.vehicle_speed; + } else { + str = STR_HEADING_FOR_ROAD_DEPOT_SERVICE + _patches.vehicle_speed; + } } break; case OT_LOADING: @@ -379,7 +383,7 @@ ScrollMainWindowTo(v->x_pos, v->y_pos); break; case 7: /* goto depot */ - DoCommandP(v->tile, v->index, 0, NULL, CMD_SEND_ROADVEH_TO_DEPOT | CMD_MSG(STR_9018_CAN_T_SEND_VEHICLE_TO_DEPOT)); + DoCommandP(v->tile, v->index, _ctrl_pressed ? 1 : 0, NULL, CMD_SEND_ROADVEH_TO_DEPOT | CMD_MSG(STR_9018_CAN_T_SEND_VEHICLE_TO_DEPOT)); break; case 8: /* turn around */ DoCommandP(v->tile, v->index, 0, NULL, CMD_TURN_ROADVEH | CMD_MSG(STR_9033_CAN_T_MAKE_VEHICLE_TURN)); diff --git a/ship_cmd.c b/ship_cmd.c --- a/ship_cmd.c +++ b/ship_cmd.c @@ -995,7 +995,7 @@ /** Send a ship to the depot. * @param tile unused * @param p1 vehicle ID to send to the depot - * @param p2 unused + * @param p2 p2 if bit 0 is set, then the ship will only service at the depot. 0 Makes it stop inside */ int32 CmdSendShipToDepot(TileIndex tile, uint32 flags, uint32 p1, uint32 p2) { @@ -1032,7 +1032,8 @@ if (flags & DC_EXEC) { v->dest_tile = dep->xy; v->current_order.type = OT_GOTO_DEPOT; - v->current_order.flags = OF_NON_STOP | OF_HALT_IN_DEPOT; + v->current_order.flags = OF_NON_STOP; + if (!HASBIT(p2,0)) SETBIT(v->current_order.flags, OFB_HALT_IN_DEPOT); v->current_order.dest.depot = dep->index; InvalidateWindowWidget(WC_VEHICLE_VIEW, v->index, STATUS_BAR); } diff --git a/ship_gui.c b/ship_gui.c --- a/ship_gui.c +++ b/ship_gui.c @@ -490,7 +490,11 @@ Depot *depot = GetDepot(v->current_order.dest.depot); SetDParam(0, depot->town_index); SetDParam(1, v->cur_speed / 2); - str = STR_HEADING_FOR_SHIP_DEPOT + _patches.vehicle_speed; + if (HASBIT(v->current_order.flags, OFB_HALT_IN_DEPOT)) { + str = STR_HEADING_FOR_SHIP_DEPOT + _patches.vehicle_speed; + } else { + str = STR_HEADING_FOR_SHIP_DEPOT_SERVICE + _patches.vehicle_speed; + } } break; case OT_LOADING: @@ -526,7 +530,7 @@ ScrollMainWindowTo(v->x_pos, v->y_pos); break; case 7: /* goto hangar */ - DoCommandP(v->tile, v->index, 0, NULL, CMD_SEND_SHIP_TO_DEPOT | CMD_MSG(STR_9819_CAN_T_SEND_SHIP_TO_DEPOT)); + DoCommandP(v->tile, v->index, _ctrl_pressed ? 1 : 0, NULL, CMD_SEND_SHIP_TO_DEPOT | CMD_MSG(STR_9819_CAN_T_SEND_SHIP_TO_DEPOT)); break; case 8: /* refit */ ShowShipRefitWindow(v); diff --git a/train_cmd.c b/train_cmd.c --- a/train_cmd.c +++ b/train_cmd.c @@ -1924,7 +1924,7 @@ /** Send a train to a depot * @param tile unused * @param p1 train to send to the depot - * @param p2 unused + * @param p2 if bit 0 is set, then the train will only service at the depot. 0 Makes it stop inside */ int32 CmdSendTrainToDepot(TileIndex tile, uint32 flags, uint32 p1, uint32 p2) { @@ -1960,7 +1960,8 @@ if (flags & DC_EXEC) { v->dest_tile = tfdd.tile; v->current_order.type = OT_GOTO_DEPOT; - v->current_order.flags = OF_NON_STOP | OF_FULL_LOAD; + v->current_order.flags = OF_NON_STOP; + if (!HASBIT(p2,0)) SETBIT(v->current_order.flags, OFB_HALT_IN_DEPOT); v->current_order.dest.depot = GetDepotByTile(tfdd.tile)->index; InvalidateWindowWidget(WC_VEHICLE_VIEW, v->index, STATUS_BAR); /* If there is no depot in front, reverse automatically */ diff --git a/train_gui.c b/train_gui.c --- a/train_gui.c +++ b/train_gui.c @@ -975,7 +975,11 @@ case OT_GOTO_DEPOT: { Depot *dep = GetDepot(v->current_order.dest.depot); SetDParam(0, dep->town_index); - str = STR_HEADING_FOR_TRAIN_DEPOT + _patches.vehicle_speed; + if (HASBIT(v->current_order.flags, OFB_HALT_IN_DEPOT)) { + str = STR_HEADING_FOR_TRAIN_DEPOT + _patches.vehicle_speed; + } else { + str = STR_HEADING_FOR_TRAIN_DEPOT_SERVICE + _patches.vehicle_speed; + } SetDParam(1, v->u.rail.last_speed); } break; @@ -1021,7 +1025,7 @@ break; case 7: /* goto depot */ /* TrainGotoDepot has a nice randomizer in the pathfinder, which causes desyncs... */ - DoCommandP(v->tile, v->index, 0, NULL, CMD_TRAIN_GOTO_DEPOT | CMD_NO_TEST_IF_IN_NETWORK | CMD_MSG(STR_8830_CAN_T_SEND_TRAIN_TO_DEPOT)); + DoCommandP(v->tile, v->index, _ctrl_pressed ? 1 : 0, NULL, CMD_TRAIN_GOTO_DEPOT | CMD_NO_TEST_IF_IN_NETWORK | CMD_MSG(STR_8830_CAN_T_SEND_TRAIN_TO_DEPOT)); break; case 8: /* force proceed */ DoCommandP(v->tile, v->index, 0, NULL, CMD_FORCE_TRAIN_PROCEED | CMD_MSG(STR_8862_CAN_T_MAKE_TRAIN_PASS_SIGNAL));