Changeset - r19235:b28492c2c691
[Not reviewed]
master
0 2 0
michi_cc - 13 years ago 2012-04-17 19:44:12
michi_cc@openttd.org
(svn r24138) -Feature(ette): Ctrl+drag to add all vehicles with a shared order list to a group. (Juanjo)
2 files changed with 36 insertions and 16 deletions:
0 comments (0 inline, 0 general)
src/group_cmd.cpp
Show inline comments
 
@@ -387,6 +387,32 @@ CommandCost CmdRenameGroup(TileIndex til
 

	
 

	
 
/**
 
 * Do add a vehicle to a group.
 
 * @param v Vehicle to add.
 
 * @param new_g Group to add to.
 
 */
 
static void AddVehicleToGroup(Vehicle *v, GroupID new_g)
 
{
 
	GroupStatistics::CountVehicle(v, -1);
 

	
 
	switch (v->type) {
 
		default: NOT_REACHED();
 
		case VEH_TRAIN:
 
			SetTrainGroupID(Train::From(v), new_g);
 
			break;
 

	
 
		case VEH_ROAD:
 
		case VEH_SHIP:
 
		case VEH_AIRCRAFT:
 
			if (v->IsEngineCountable()) UpdateNumEngineGroup(v, v->group_id, new_g);
 
			v->group_id = new_g;
 
			break;
 
	}
 

	
 
	GroupStatistics::CountVehicle(v, 1);
 
}
 

	
 
/**
 
 * Add a vehicle to a group
 
 * @param tile unused
 
 * @param flags type of operation
 
@@ -394,12 +420,13 @@ CommandCost CmdRenameGroup(TileIndex til
 
 *   - p1 bit 0-15 : GroupID
 
 * @param p2   vehicle to add to a group
 
 *   - p2 bit 0-19 : VehicleID
 
 *   - p2 bit   31 : Add shared vehicles as well.
 
 * @param text unused
 
 * @return the cost of this operation or an error
 
 */
 
CommandCost CmdAddVehicleGroup(TileIndex tile, DoCommandFlag flags, uint32 p1, uint32 p2, const char *text)
 
{
 
	Vehicle *v = Vehicle::GetIfValid(p2);
 
	Vehicle *v = Vehicle::GetIfValid(GB(p2, 0, 20));
 
	GroupID new_g = p1;
 

	
 
	if (v == NULL || (!Group::IsValidID(new_g) && !IsDefaultGroupID(new_g))) return CMD_ERROR;
 
@@ -412,22 +439,15 @@ CommandCost CmdAddVehicleGroup(TileIndex
 
	if (v->owner != _current_company || !v->IsPrimaryVehicle()) return CMD_ERROR;
 

	
 
	if (flags & DC_EXEC) {
 
		GroupStatistics::CountVehicle(v, -1);
 
		AddVehicleToGroup(v, new_g);
 

	
 
		switch (v->type) {
 
			default: NOT_REACHED();
 
			case VEH_TRAIN:
 
				SetTrainGroupID(Train::From(v), new_g);
 
				break;
 
			case VEH_ROAD:
 
			case VEH_SHIP:
 
			case VEH_AIRCRAFT:
 
				if (v->IsEngineCountable()) UpdateNumEngineGroup(v, v->group_id, new_g);
 
				v->group_id = new_g;
 
				break;
 
		if (HasBit(p2, 31)) {
 
			/* Add vehicles in the shared order list as well. */
 
			for (Vehicle *v2 = v->FirstShared(); v2 != NULL; v2 = v2->NextShared()) {
 
				if (v2->group_id != new_g) AddVehicleToGroup(v2, new_g);
 
			}
 
		}
 

	
 
		GroupStatistics::CountVehicle(v, 1);
 
		GroupStatistics::UpdateAutoreplace(v->owner);
 

	
 
		/* Update the Replace Vehicle Windows */
src/group_gui.cpp
Show inline comments
 
@@ -631,7 +631,7 @@ public:
 
		switch (widget) {
 
			case WID_GL_ALL_VEHICLES: // All vehicles
 
			case WID_GL_DEFAULT_VEHICLES: // Ungrouped vehicles
 
				DoCommandP(0, DEFAULT_GROUP, this->vehicle_sel, CMD_ADD_VEHICLE_GROUP | CMD_MSG(STR_ERROR_GROUP_CAN_T_ADD_VEHICLE));
 
				DoCommandP(0, DEFAULT_GROUP, this->vehicle_sel | (_ctrl_pressed ? 1 << 31 : 0), CMD_ADD_VEHICLE_GROUP | CMD_MSG(STR_ERROR_GROUP_CAN_T_ADD_VEHICLE));
 

	
 
				this->vehicle_sel = INVALID_VEHICLE;
 
				this->group_over = INVALID_GROUP;
 
@@ -648,7 +648,7 @@ public:
 
				uint id_g = this->group_sb->GetScrolledRowFromWidget(pt.y, this, WID_GL_LIST_GROUP, 0, this->tiny_step_height);
 
				if (id_g >= this->groups.Length()) return;
 

	
 
				DoCommandP(0, this->groups[id_g]->index, vindex, CMD_ADD_VEHICLE_GROUP | CMD_MSG(STR_ERROR_GROUP_CAN_T_ADD_VEHICLE));
 
				DoCommandP(0, this->groups[id_g]->index, vindex | (_ctrl_pressed ? 1 << 31 : 0), CMD_ADD_VEHICLE_GROUP | CMD_MSG(STR_ERROR_GROUP_CAN_T_ADD_VEHICLE));
 
				break;
 
			}
 

	
0 comments (0 inline, 0 general)