mirror of
https://github.com/OpenTTD/OpenTTD.git
synced 2025-03-06 14:27:16 +00:00
(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
This commit is contained in:
parent
d3096b84fd
commit
6cbd4cc167
@ -492,9 +492,8 @@ int32 CmdStartStopAircraft(TileIndex tile, uint32 flags, uint32 p1, uint32 p2)
|
||||
* @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 @@ int32 CmdSendAircraftToHangar(TileIndex tile, uint32 flags, uint32 p1, uint32 p2
|
||||
} 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 @@ int32 CmdSendAircraftToHangar(TileIndex tile, uint32 flags, uint32 p1, uint32 p2
|
||||
|
||||
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 @@ static void AircraftEventHandler_HeliTakeOff(Vehicle *v, const AirportFTAClass *
|
||||
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 @@ static void AircraftEventHandler_Landing(Vehicle *v, const AirportFTAClass *Airp
|
||||
// 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;
|
||||
}
|
||||
}
|
||||
|
@ -557,7 +557,11 @@ static void AircraftViewWndProc(Window *w, WindowEvent *e)
|
||||
/* 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 @@ static void AircraftViewWndProc(Window *w, WindowEvent *e)
|
||||
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);
|
||||
|
@ -2456,8 +2456,10 @@ STR_SERVICE_AT_TRAIN_DEPOT :Service at {TOW
|
||||
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_8842_CENTER_MAIN_VIEW_ON_TRAIN :{BLACK}Centre m
|
||||
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_9013_MUST_BE_STOPPED_INSIDE :{WHITE}...must
|
||||
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_9817_CAPACITY :{BLACK}Capacity
|
||||
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_9823_SHIPS_CLICK_ON_SHIP_FOR :{BLACK}Ships -
|
||||
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_A00F_PROFIT_THIS_YEAR_LAST_YEAR :{BLACK}Profit t
|
||||
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_A023_DRAG_AIRCRAFT_TO_HERE_TO :{BLACK}Drag air
|
||||
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}
|
||||
|
@ -357,7 +357,7 @@ static const Depot* FindClosestRoadDepot(const Vehicle* v)
|
||||
/** 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 @@ int32 CmdSendRoadVehToDepot(TileIndex tile, uint32 flags, uint32 p1, uint32 p2)
|
||||
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);
|
||||
|
@ -343,7 +343,11 @@ static void RoadVehViewWndProc(Window *w, WindowEvent *e)
|
||||
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 @@ static void RoadVehViewWndProc(Window *w, WindowEvent *e)
|
||||
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));
|
||||
|
@ -995,7 +995,7 @@ int32 CmdStartStopShip(TileIndex tile, uint32 flags, uint32 p1, uint32 p2)
|
||||
/** 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 @@ int32 CmdSendShipToDepot(TileIndex tile, uint32 flags, uint32 p1, uint32 p2)
|
||||
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);
|
||||
}
|
||||
|
@ -490,7 +490,11 @@ static void ShipViewWndProc(Window *w, WindowEvent *e)
|
||||
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 @@ static void ShipViewWndProc(Window *w, WindowEvent *e)
|
||||
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);
|
||||
|
@ -1924,7 +1924,7 @@ static TrainFindDepotData FindClosestTrainDepot(Vehicle *v, int max_distance)
|
||||
/** 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 @@ int32 CmdSendTrainToDepot(TileIndex tile, uint32 flags, uint32 p1, uint32 p2)
|
||||
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 */
|
||||
|
@ -975,7 +975,11 @@ static void TrainViewWndProc(Window *w, WindowEvent *e)
|
||||
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 @@ static void TrainViewWndProc(Window *w, WindowEvent *e)
|
||||
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));
|
||||
|
Loading…
Reference in New Issue
Block a user