Changeset - r19236:ce39f6a41576
[Not reviewed]
master
0 5 0
michi_cc - 13 years ago 2012-04-17 19:44:16
michi_cc@openttd.org
(svn r24139) -Add: Creating a new vehicle group by drag and drop. (Based on patch by Juanjo)
5 files changed with 29 insertions and 3 deletions:
0 comments (0 inline, 0 general)
src/command_func.h
Show inline comments
 
@@ -91,6 +91,7 @@ CommandCallback CcGame;
 

	
 
/* group_gui.cpp */
 
CommandCallback CcCreateGroup;
 
CommandCallback CcAddVehicleNewGroup;
 

	
 
/* industry_gui.cpp */
 
CommandCallback CcBuildIndustry;
src/group_cmd.cpp
Show inline comments
 
@@ -429,7 +429,7 @@ CommandCost CmdAddVehicleGroup(TileIndex
 
	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;
 
	if (v == NULL || (!Group::IsValidID(new_g) && !IsDefaultGroupID(new_g) && new_g != NEW_GROUP)) return CMD_ERROR;
 

	
 
	if (Group::IsValidID(new_g)) {
 
		Group *g = Group::Get(new_g);
 
@@ -438,6 +438,14 @@ CommandCost CmdAddVehicleGroup(TileIndex
 

	
 
	if (v->owner != _current_company || !v->IsPrimaryVehicle()) return CMD_ERROR;
 

	
 
	if (new_g == NEW_GROUP) {
 
		/* Create new group. */
 
		CommandCost ret = CmdCreateGroup(0, flags, v->type, 0, NULL);
 
		if (ret.Failed()) return ret;
 

	
 
		new_g = _new_group_id;
 
	}
 

	
 
	if (flags & DC_EXEC) {
 
		AddVehicleToGroup(v, new_g);
 

	
src/group_gui.cpp
Show inline comments
 
@@ -646,9 +646,9 @@ public:
 
				this->SetDirty();
 

	
 
				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;
 
				GroupID new_g = id_g >= this->groups.Length() ? NEW_GROUP : this->groups[id_g]->index;
 

	
 
				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));
 
				DoCommandP(0, new_g, vindex | (_ctrl_pressed ? 1 << 31 : 0), CMD_ADD_VEHICLE_GROUP | CMD_MSG(STR_ERROR_GROUP_CAN_T_ADD_VEHICLE), new_g == NEW_GROUP ? CcAddVehicleNewGroup : NULL);
 
				break;
 
			}
 

	
 
@@ -865,6 +865,21 @@ void CcCreateGroup(const CommandCost &re
 
}
 

	
 
/**
 
 * Open rename window after adding a vehicle to a new group via drag and drop.
 
 * @param success Did command succeed?
 
 * @param tile Unused.
 
 * @param p1 Unused.
 
 * @param p2 Bit 0-19: Vehicle ID.
 
 */
 
void CcAddVehicleNewGroup(const CommandCost &result, TileIndex tile, uint32 p1, uint32 p2)
 
{
 
	if (result.Failed()) return;
 
	assert(Vehicle::IsValidID(GB(p2, 0, 20)));
 

	
 
	CcCreateGroup(result, 0, Vehicle::Get(GB(p2, 0, 20))->type, 0);
 
}
 

	
 
/**
 
 * Removes the highlight of a vehicle in a group window
 
 * @param *v Vehicle to remove all highlights from
 
 */
src/group_type.h
Show inline comments
 
@@ -14,6 +14,7 @@
 

	
 
typedef uint16 GroupID; ///< Type for all group identifiers.
 

	
 
static const GroupID NEW_GROUP     = 0xFFFC; ///< Sentinel for a to-be-created group.
 
static const GroupID ALL_GROUP     = 0xFFFD; ///< All vehicles are in this group.
 
static const GroupID DEFAULT_GROUP = 0xFFFE; ///< Ungrouped vehicles are in this group.
 
static const GroupID INVALID_GROUP = 0xFFFF; ///< Sentinel for invalid groups.
src/network/network_command.cpp
Show inline comments
 
@@ -48,6 +48,7 @@ static CommandCallback * const _callback
 
	/* 0x18 */ CcBuildIndustry,
 
	/* 0x19 */ CcStartStopVehicle,
 
	/* 0x1A */ CcGame,
 
	/* 0x1B */ CcAddVehicleNewGroup,
 
};
 

	
 
/**
0 comments (0 inline, 0 general)