Changeset - r2819:50c046aedc63
[Not reviewed]
master
0 12 0
tron - 18 years ago 2006-01-05 21:35:54
tron@openttd.org
(svn r3367) Unify the 4 distinct CMD_CHANGE_{AIRCRAFT,ROADVEH,SHIP,TRAIN}_SERVICE_INT commands into one CMD_CHANGE_SERVICE_INT command.
As side effect this is a
-Fix: The default AI tried to change the service intervals of vehicles via the CMD_CHANGE_TRAIN_SERVICE_INT command - regardless of the type of the vehicle - which of course failed for non-trains
12 files changed with 40 insertions and 115 deletions:
0 comments (0 inline, 0 general)
ai/default/default.c
Show inline comments
 
@@ -311,7 +311,7 @@ static void AiHandleReplaceTrain(Player 
 
			AiRestoreVehicleOrders(GetVehicle(veh), orderbak);
 
			DoCommandByTile(0, veh, 0, DC_EXEC, CMD_START_STOP_TRAIN);
 

	
 
			DoCommandByTile(0, veh, _ai_service_interval, DC_EXEC, CMD_CHANGE_TRAIN_SERVICE_INT);
 
			DoCommandByTile(0, veh, _ai_service_interval, DC_EXEC, CMD_CHANGE_SERVICE_INT);
 
		}
 
	}
 
}
 
@@ -340,7 +340,7 @@ static void AiHandleReplaceRoadVeh(Playe
 
			AiRestoreVehicleOrders(GetVehicle(veh), orderbak);
 
			DoCommandByTile(0, veh, 0, DC_EXEC, CMD_START_STOP_ROADVEH);
 

	
 
			DoCommandByTile(0, veh, _ai_service_interval, DC_EXEC, CMD_CHANGE_TRAIN_SERVICE_INT);
 
			DoCommandByTile(0, veh, _ai_service_interval, DC_EXEC, CMD_CHANGE_SERVICE_INT);
 
		}
 
	}
 
}
 
@@ -369,7 +369,7 @@ static void AiHandleReplaceAircraft(Play
 
			AiRestoreVehicleOrders(GetVehicle(veh), orderbak);
 
			DoCommandByTile(0, veh, 0, DC_EXEC, CMD_START_STOP_AIRCRAFT);
 

	
 
			DoCommandByTile(0, veh, _ai_service_interval, DC_EXEC, CMD_CHANGE_TRAIN_SERVICE_INT);
 
			DoCommandByTile(0, veh, _ai_service_interval, DC_EXEC, CMD_CHANGE_SERVICE_INT);
 
		}
 
	}
 
}
 
@@ -2450,7 +2450,7 @@ handle_nocash:
 

	
 
	DoCommandByTile(0, loco_id, 0, DC_EXEC, CMD_START_STOP_TRAIN);
 

	
 
	DoCommandByTile(0, loco_id, _ai_service_interval, DC_EXEC, CMD_CHANGE_TRAIN_SERVICE_INT);
 
	DoCommandByTile(0, loco_id, _ai_service_interval, DC_EXEC, CMD_CHANGE_SERVICE_INT);
 

	
 
	if (p->ai.num_want_fullload != 0)
 
		p->ai.num_want_fullload--;
 
@@ -3207,7 +3207,7 @@ static void AiStateBuildRoadVehicles(Pla
 
	}
 

	
 
	DoCommandByTile(0, loco_id, 0, DC_EXEC, CMD_START_STOP_ROADVEH);
 
	DoCommandByTile(0, loco_id, _ai_service_interval, DC_EXEC, CMD_CHANGE_TRAIN_SERVICE_INT);
 
	DoCommandByTile(0, loco_id, _ai_service_interval, DC_EXEC, CMD_CHANGE_SERVICE_INT);
 

	
 
	if (p->ai.num_want_fullload != 0) p->ai.num_want_fullload--;
 
	if (--p->ai.num_loco_to_build == 0) p->ai.state = AIS_0;
 
@@ -3521,7 +3521,7 @@ static void AiStateBuildAircraftVehicles
 

	
 
	DoCommandByTile(0, loco_id, 0, DC_EXEC, CMD_START_STOP_AIRCRAFT);
 

	
 
	DoCommandByTile(0, loco_id, _ai_service_interval, DC_EXEC, CMD_CHANGE_TRAIN_SERVICE_INT);
 
	DoCommandByTile(0, loco_id, _ai_service_interval, DC_EXEC, CMD_CHANGE_SERVICE_INT);
 

	
 
	if (p->ai.num_want_fullload != 0)
 
		p->ai.num_want_fullload--;
aircraft_cmd.c
Show inline comments
 
@@ -452,29 +452,6 @@ int32 CmdSendAircraftToHangar(int x, int
 
	return 0;
 
}
 

	
 
/** Change the service interval for aircraft.
 
 * @param x,y unused
 
 * @param p1 vehicle ID that is being service-interval-changed
 
 * @param p2 new service interval
 
 */
 
int32 CmdChangeAircraftServiceInt(int x, int y, uint32 flags, uint32 p1, uint32 p2)
 
{
 
	Vehicle *v;
 
	uint16 serv_int = GetServiceIntervalClamped(p2); /* Double check the service interval from the user-input */
 

	
 
	if (serv_int != p2 || !IsVehicleIndex(p1)) return CMD_ERROR;
 

	
 
	v = GetVehicle(p1);
 

	
 
	if (v->type != VEH_Aircraft || !CheckOwnership(v->owner)) return CMD_ERROR;
 

	
 
	if (flags & DC_EXEC) {
 
		v->service_interval = serv_int;
 
		InvalidateWindowWidget(WC_VEHICLE_DETAILS, v->index, 7);
 
	}
 

	
 
	return 0;
 
}
 

	
 
/** Refits an aircraft to the specified cargo type.
 
 * @param x,y unused
aircraft_gui.c
Show inline comments
 
@@ -415,7 +415,7 @@ do_change_service_int:
 
			mod = GetServiceIntervalClamped(mod + v->service_interval);
 
			if (mod == v->service_interval) return;
 

	
 
			DoCommandP(v->tile, v->index, mod, NULL, CMD_CHANGE_AIRCRAFT_SERVICE_INT | CMD_MSG(STR_018A_CAN_T_CHANGE_SERVICING));
 
			DoCommandP(v->tile, v->index, mod, NULL, CMD_CHANGE_SERVICE_INT | CMD_MSG(STR_018A_CAN_T_CHANGE_SERVICING));
 
			break;
 
		}
 
	} break;
command.c
Show inline comments
 
@@ -77,7 +77,7 @@ DEF_COMMAND(CmdModifyOrder);
 
DEF_COMMAND(CmdSkipOrder);
 
DEF_COMMAND(CmdDeleteOrder);
 
DEF_COMMAND(CmdInsertOrder);
 
DEF_COMMAND(CmdChangeTrainServiceInt);
 
DEF_COMMAND(CmdChangeServiceInt);
 
DEF_COMMAND(CmdRestoreOrderIndex);
 

	
 
DEF_COMMAND(CmdBuildIndustry);
 
@@ -103,7 +103,6 @@ DEF_COMMAND(CmdSellAircraft);
 
DEF_COMMAND(CmdStartStopAircraft);
 
DEF_COMMAND(CmdBuildAircraft);
 
DEF_COMMAND(CmdSendAircraftToHangar);
 
DEF_COMMAND(CmdChangeAircraftServiceInt);
 
DEF_COMMAND(CmdRefitAircraft);
 

	
 
DEF_COMMAND(CmdPlaceSign);
 
@@ -114,7 +113,6 @@ DEF_COMMAND(CmdStartStopRoadVeh);
 
DEF_COMMAND(CmdSellRoadVeh);
 
DEF_COMMAND(CmdSendRoadVehToDepot);
 
DEF_COMMAND(CmdTurnRoadVeh);
 
DEF_COMMAND(CmdChangeRoadVehServiceInt);
 

	
 
DEF_COMMAND(CmdPause);
 

	
 
@@ -136,7 +134,6 @@ DEF_COMMAND(CmdStartStopShip);
 
DEF_COMMAND(CmdSellShip);
 
DEF_COMMAND(CmdBuildShip);
 
DEF_COMMAND(CmdSendShipToDepot);
 
DEF_COMMAND(CmdChangeShipServiceInt);
 
DEF_COMMAND(CmdRefitShip);
 

	
 
DEF_COMMAND(CmdCloneOrder);
 
@@ -212,7 +209,7 @@ static const Command _command_proc_table
 
	{CmdDeleteOrder,                         0}, /*  44 */
 
	{CmdInsertOrder,                         0}, /*  45 */
 

	
 
	{CmdChangeTrainServiceInt,               0}, /*  46 */
 
	{CmdChangeServiceInt,                    0}, /*  46 */
 

	
 
	{CmdBuildIndustry,                       0}, /*  47 */
 
	{CmdBuildCompanyHQ,                      0}, /*  48 */
 
@@ -237,7 +234,7 @@ static const Command _command_proc_table
 

	
 
	{CmdBuildAircraft,                       0}, /*  61 */
 
	{CmdSendAircraftToHangar,                0}, /*  62 */
 
	{CmdChangeAircraftServiceInt,            0}, /*  63 */
 
	{NULL,                                   0}, /*  63 */
 
	{CmdRefitAircraft,                       0}, /*  64 */
 

	
 
	{CmdPlaceSign,                           0}, /*  65 */
 
@@ -248,7 +245,7 @@ static const Command _command_proc_table
 
	{CmdSellRoadVeh,                         0}, /*  69 */
 
	{CmdSendRoadVehToDepot,                  0}, /*  70 */
 
	{CmdTurnRoadVeh,                         0}, /*  71 */
 
	{CmdChangeRoadVehServiceInt,             0}, /*  72 */
 
	{NULL,                                   0}, /*  72 */
 

	
 
	{CmdPause,                      CMD_SERVER}, /*  73 */
 

	
 
@@ -271,7 +268,7 @@ static const Command _command_proc_table
 
	{CmdSellShip,                            0}, /*  87 */
 
	{CmdBuildShip,                           0}, /*  88 */
 
	{CmdSendShipToDepot,                     0}, /*  89 */
 
	{CmdChangeShipServiceInt,                0}, /*  90 */
 
	{NULL,                                   0}, /*  90 */
 
	{CmdRefitShip,                           0}, /*  91 */
 

	
 
	{NULL,                                   0}, /*  92 */
command.h
Show inline comments
 
@@ -58,7 +58,7 @@ enum {
 
	CMD_DELETE_ORDER = 44,
 
	CMD_INSERT_ORDER = 45,
 

	
 
	CMD_CHANGE_TRAIN_SERVICE_INT = 46,
 
	CMD_CHANGE_SERVICE_INT = 46,
 

	
 
	CMD_BUILD_INDUSTRY = 47,
 

	
 
@@ -81,7 +81,6 @@ enum {
 
	CMD_START_STOP_AIRCRAFT = 60,
 
	CMD_BUILD_AIRCRAFT = 61,
 
	CMD_SEND_AIRCRAFT_TO_HANGAR = 62,
 
	CMD_CHANGE_AIRCRAFT_SERVICE_INT = 63,
 
	CMD_REFIT_AIRCRAFT = 64,
 

	
 
	CMD_PLACE_SIGN = 65,
 
@@ -92,7 +91,6 @@ enum {
 
	CMD_SELL_ROAD_VEH = 69,
 
	CMD_SEND_ROADVEH_TO_DEPOT = 70,
 
	CMD_TURN_ROADVEH = 71,
 
	CMD_CHANGE_ROADVEH_SERVICE_INT = 72,
 

	
 
	CMD_PAUSE = 73,
 

	
 
@@ -113,7 +111,6 @@ enum {
 
	CMD_SELL_SHIP = 87,
 
	CMD_BUILD_SHIP = 88,
 
	CMD_SEND_SHIP_TO_DEPOT = 89,
 
	CMD_CHANGE_SHIP_SERVICE_INT = 90,
 
	CMD_REFIT_SHIP = 91,
 

	
 
	CMD_CLONE_ORDER = 99,
roadveh_cmd.c
Show inline comments
 
@@ -410,30 +410,6 @@ int32 CmdTurnRoadVeh(int x, int y, uint3
 
	return 0;
 
}
 

	
 
/** Change the service interval for road vehicles.
 
 * @param x,y unused
 
 * @param p1 vehicle ID that is being service-interval-changed
 
 * @param p2 new service interval
 
 */
 
int32 CmdChangeRoadVehServiceInt(int x, int y, uint32 flags, uint32 p1, uint32 p2)
 
{
 
	Vehicle *v;
 
	uint16 serv_int = GetServiceIntervalClamped(p2); /* Double check the service interval from the user-input */
 

	
 
	if (serv_int != p2 || !IsVehicleIndex(p1)) return CMD_ERROR;
 

	
 
	v = GetVehicle(p1);
 

	
 
	if (v->type != VEH_Road || !CheckOwnership(v->owner)) return CMD_ERROR;
 

	
 
	if (flags & DC_EXEC) {
 
		v->service_interval = serv_int;
 
		InvalidateWindowWidget(WC_VEHICLE_DETAILS, v->index, 7);
 
	}
 

	
 
	return 0;
 
}
 

	
 

	
 
static void MarkRoadVehDirty(Vehicle *v)
 
{
roadveh_gui.c
Show inline comments
 
@@ -169,7 +169,7 @@ do_change_service_int:
 
			mod = GetServiceIntervalClamped(mod + v->service_interval);
 
			if (mod == v->service_interval) return;
 

	
 
			DoCommandP(v->tile, v->index, mod, NULL, CMD_CHANGE_ROADVEH_SERVICE_INT | CMD_MSG(STR_018A_CAN_T_CHANGE_SERVICING));
 
			DoCommandP(v->tile, v->index, mod, NULL, CMD_CHANGE_SERVICE_INT | CMD_MSG(STR_018A_CAN_T_CHANGE_SERVICING));
 
			break;
 
		}
 
	} break;
ship_cmd.c
Show inline comments
 
@@ -1008,29 +1008,6 @@ int32 CmdSendShipToDepot(int x, int y, u
 
	return 0;
 
}
 

	
 
/** Change the service interval for ships.
 
 * @param x,y unused
 
 * @param p1 vehicle ID that is being service-interval-changed
 
 * @param p2 new service interval
 
 */
 
int32 CmdChangeShipServiceInt(int x, int y, uint32 flags, uint32 p1, uint32 p2)
 
{
 
	Vehicle *v;
 
	uint16 serv_int = GetServiceIntervalClamped(p2); /* Double check the service interval from the user-input */
 

	
 
	if (serv_int != p2 || !IsVehicleIndex(p1)) return CMD_ERROR;
 

	
 
	v = GetVehicle(p1);
 

	
 
	if (v->type != VEH_Ship || !CheckOwnership(v->owner)) return CMD_ERROR;
 

	
 
	if (flags & DC_EXEC) {
 
		v->service_interval = serv_int;
 
		InvalidateWindowWidget(WC_VEHICLE_DETAILS, v->index, 7);
 
	}
 

	
 
	return 0;
 
}
 

	
 
/** Refits a ship to the specified cargo type.
 
 * @param x,y unused
ship_gui.c
Show inline comments
 
@@ -246,7 +246,7 @@ do_change_service_int:
 
			mod = GetServiceIntervalClamped(mod + v->service_interval);
 
			if (mod == v->service_interval) return;
 

	
 
			DoCommandP(v->tile, v->index, mod, NULL, CMD_CHANGE_SHIP_SERVICE_INT | CMD_MSG(STR_018A_CAN_T_CHANGE_SERVICING));
 
			DoCommandP(v->tile, v->index, mod, NULL, CMD_CHANGE_SERVICE_INT | CMD_MSG(STR_018A_CAN_T_CHANGE_SERVICING));
 
			break;
 
		}
 
	} break;
train_cmd.c
Show inline comments
 
@@ -1897,29 +1897,6 @@ int32 CmdSendTrainToDepot(int x, int y, 
 
	return 0;
 
}
 

	
 
/** Change the service interval for trains.
 
 * @param x,y unused
 
 * @param p1 vehicle ID that is being service-interval-changed
 
 * @param p2 new service interval
 
 */
 
int32 CmdChangeTrainServiceInt(int x, int y, uint32 flags, uint32 p1, uint32 p2)
 
{
 
	Vehicle *v;
 
	uint16 serv_int = GetServiceIntervalClamped(p2); /* Double check the service interval from the user-input */
 

	
 
	if (serv_int != p2 || !IsVehicleIndex(p1)) return CMD_ERROR;
 

	
 
	v = GetVehicle(p1);
 

	
 
	if (v->type != VEH_Train || !CheckOwnership(v->owner)) return CMD_ERROR;
 

	
 
	if (flags & DC_EXEC) {
 
		v->service_interval = serv_int;
 
		InvalidateWindowWidget(WC_VEHICLE_DETAILS, v->index, 8);
 
	}
 

	
 
	return 0;
 
}
 

	
 
void OnTick_Train(void)
 
{
train_gui.c
Show inline comments
 
@@ -1254,7 +1254,7 @@ do_change_service_int:
 
			mod = GetServiceIntervalClamped(mod + v->service_interval);
 
			if (mod == v->service_interval) return;
 

	
 
			DoCommandP(v->tile, v->index, mod, NULL, CMD_CHANGE_TRAIN_SERVICE_INT | CMD_MSG(STR_018A_CAN_T_CHANGE_SERVICING));
 
			DoCommandP(v->tile, v->index, mod, NULL, CMD_CHANGE_SERVICE_INT | CMD_MSG(STR_018A_CAN_T_CHANGE_SERVICING));
 
			break;
 
		/* details buttons*/
 
		case 9:		// Cargo
vehicle.c
Show inline comments
 
@@ -1844,6 +1844,30 @@ int32 CmdNameVehicle(int x, int y, uint3
 
}
 

	
 

	
 
/** Change the service interval of a vehicle
 
 * @param x,y unused
 
 * @param p1 vehicle ID that is being service-interval-changed
 
 * @param p2 new service interval
 
 */
 
int32 CmdChangeServiceInt(int x, int y, uint32 flags, uint32 p1, uint32 p2)
 
{
 
	Vehicle* v;
 
	uint16 serv_int = GetServiceIntervalClamped(p2); /* Double check the service interval from the user-input */
 

	
 
	if (serv_int != p2 || !IsVehicleIndex(p1)) return CMD_ERROR;
 

	
 
	v = GetVehicle(p1);
 

	
 
	if (v->type == 0 || !CheckOwnership(v->owner)) return CMD_ERROR;
 

	
 
	if (flags & DC_EXEC) {
 
		v->service_interval = serv_int;
 
		InvalidateWindow(WC_VEHICLE_DETAILS, v->index);
 
	}
 

	
 
	return 0;
 
}
 

	
 

	
 
static Rect _old_vehicle_coords;
 

	
0 comments (0 inline, 0 general)