Changeset - r15078:76a51dd49982
[Not reviewed]
master
0 8 0
smatz - 14 years ago 2010-04-24 20:55:51
smatz@openttd.org
(svn r19714) -Feature: ctrl+click on a vehicle to start/stop it
8 files changed with 42 insertions and 7 deletions:
0 comments (0 inline, 0 general)
src/command_func.h
Show inline comments
 
@@ -140,5 +140,6 @@ CommandCallback CcFoundRandomTown;
 

	
 
/* vehicle_gui.cpp */
 
CommandCallback CcBuildPrimaryVehicle;
 
CommandCallback CcStartStopVehicle;
 

	
 
#endif /* COMMAND_FUNC_H */
src/depot_gui.cpp
Show inline comments
 
@@ -509,7 +509,7 @@ struct DepotWindow : Window {
 
				break;
 

	
 
			case MODE_START_STOP: // click start/stop flag
 
				StartStopVehicle(v);
 
				StartStopVehicle(v, false);
 
				break;
 

	
 
			default: NOT_REACHED();
src/lang/english.txt
Show inline comments
 
@@ -2967,6 +2967,12 @@ STR_VEHICLE_STATUS_HEADING_FOR_SHIP_DEPO
 
STR_VEHICLE_STATUS_HEADING_FOR_HANGAR_SERVICE                   :{LTBLUE}Service at {STATION} Hangar
 
STR_VEHICLE_STATUS_HEADING_FOR_HANGAR_SERVICE_VEL               :{LTBLUE}Service at {STATION} Hangar, {VELOCITY}
 

	
 
# Vehicle stopped/started animations
 
STR_VEHICLE_COMMAND_STOPPED_SMALL                               :{TINYFONT}{RED}Stopped
 
STR_VEHICLE_COMMAND_STOPPED                                     :{RED}Stopped
 
STR_VEHICLE_COMMAND_STARTED_SMALL                               :{TINYFONT}{GREEN}Started
 
STR_VEHICLE_COMMAND_STARTED                                     :{GREEN}Started
 

	
 
# Vehicle details
 
STR_VEHICLE_DETAILS_CAPTION                                     :{WHITE}{VEHICLE} (Details)
 
STR_VEHICLE_NAME_BUTTON                                         :{BLACK}Name
src/network/network_command.cpp
Show inline comments
 
@@ -49,6 +49,7 @@ static CommandCallback * const _callback
 
	/* 0x16 */ CcFoundRandomTown,
 
	/* 0x17 */ CcRoadStop,
 
	/* 0x18 */ CcBuildIndustry,
 
	/* 0x19 */ CcStartStopVehicle,
 
};
 

	
 
/** Local queue of packets */
src/vehicle_cmd.cpp
Show inline comments
 
@@ -64,7 +64,7 @@ const uint32 _send_to_depot_proc_table[]
 
/** Start/Stop a vehicle
 
 * @param tile unused
 
 * @param flags type of operation
 
 * @param p1 vehicle to start/stop
 
 * @param p1 vehicle to start/stop, don't forget to change CcStartStopVehicle if you modify this!
 
 * @param p2 bit 0: Shall the start/stop newgrf callback be evaluated (only valid with DC_AUTOREPLACE for network safety)
 
 * @param text unused
 
 * @return the cost of this operation or an error
src/vehicle_gui.cpp
Show inline comments
 
@@ -1869,13 +1869,33 @@ static const uint32 _vehicle_command_tra
 
};
 

	
 
/**
 
 * This is the Callback method after the cloning attempt of a vehicle
 
 * @param result the result of the cloning command
 
 * @param tile unused
 
 * @param p1 vehicle ID
 
 * @param p2 unused
 
 */
 
void CcStartStopVehicle(const CommandCost &result, TileIndex tile, uint32 p1, uint32 p2)
 
{
 
	if (result.Failed()) return;
 

	
 
	const Vehicle *v = Vehicle::GetIfValid(p1);
 
	if (v == NULL || !v->IsPrimaryVehicle() || v->owner != _local_company) return;
 

	
 
	StringID msg = (v->vehstatus & VS_STOPPED) ? STR_VEHICLE_COMMAND_STOPPED : STR_VEHICLE_COMMAND_STARTED;
 
	Point pt = RemapCoords(v->x_pos, v->y_pos, v->z_pos);
 
	AddTextEffect(msg, pt.x, pt.y, DAY_TICKS, TE_RISING);
 
}
 

	
 
/**
 
 * Executes #CMD_START_STOP_VEHICLE for given vehicle.
 
 * @param v Vehicle to start/stop
 
 * @param texteffect Should a texteffect be shown?
 
 */
 
void StartStopVehicle(const Vehicle *v)
 
void StartStopVehicle(const Vehicle *v, bool texteffect)
 
{
 
	assert(v->IsPrimaryVehicle());
 
	DoCommandP(v->tile, v->index, 0, _vehicle_command_translation_table[VCT_CMD_START_STOP][v->type]);
 
	DoCommandP(v->tile, v->index, 0, _vehicle_command_translation_table[VCT_CMD_START_STOP][v->type], texteffect ? CcStartStopVehicle : NULL);
 
}
 

	
 
/** Checks whether the vehicle may be refitted at the moment.*/
 
@@ -2129,7 +2149,7 @@ public:
 
					if (tile != INVALID_TILE) ScrollMainWindowToTile(tile);
 
				} else {
 
					/* Start/Stop */
 
					StartStopVehicle(v);
 
					StartStopVehicle(v, false);
 
				}
 
				break;
 
			case VVW_WIDGET_CENTER_MAIN_VIEH: {// center main view
src/vehicle_gui.h
Show inline comments
 
@@ -108,7 +108,7 @@ static inline WindowClass GetWindowClass
 

	
 
/* Unified window procedure */
 
void ShowVehicleViewWindow(const Vehicle *v);
 
void StartStopVehicle(const Vehicle *v);
 
void StartStopVehicle(const Vehicle *v, bool texteffect);
 

	
 
Vehicle *CheckClickOnVehicle(const struct ViewPort *vp, int x, int y);
 

	
src/viewport.cpp
Show inline comments
 
@@ -1811,7 +1811,14 @@ bool HandleViewportClicked(const ViewPor
 
	v = CheckClickOnVehicle(vp, x, y);
 
	if (v != NULL) {
 
		DEBUG(misc, 2, "Vehicle %d (index %d) at %p", v->unitnumber, v->index, v);
 
		if (IsCompanyBuildableVehicleType(v)) ShowVehicleViewWindow(v->First());
 
		if (IsCompanyBuildableVehicleType(v)) {
 
			v = v->First();
 
			if (_ctrl_pressed && v->owner == _local_company) {
 
				StartStopVehicle(v, true);
 
			} else {
 
				ShowVehicleViewWindow(v);
 
			}
 
		}
 
		return true;
 
	}
 
	return CheckClickOnLandscape(vp, x, y);
0 comments (0 inline, 0 general)