Codechange: Replace CMD_SET_GROUP_REPLACE_PROTECTION with generic CMD_SET_GROUP_FLAG.

pull/251/head
peter1138 5 years ago committed by Michael Lutz
parent 27a956ba62
commit c56fce70b4

@ -193,7 +193,7 @@ CommandProc CmdDeleteGroup;
CommandProc CmdAddVehicleGroup; CommandProc CmdAddVehicleGroup;
CommandProc CmdAddSharedVehicleGroup; CommandProc CmdAddSharedVehicleGroup;
CommandProc CmdRemoveAllVehiclesGroup; CommandProc CmdRemoveAllVehiclesGroup;
CommandProc CmdSetGroupReplaceProtection; CommandProc CmdSetGroupFlag;
CommandProc CmdSetGroupLivery; CommandProc CmdSetGroupLivery;
CommandProc CmdMoveOrder; CommandProc CmdMoveOrder;
@ -359,7 +359,7 @@ static const Command _command_proc_table[] = {
DEF_CMD(CmdAddVehicleGroup, 0, CMDT_ROUTE_MANAGEMENT ), // CMD_ADD_VEHICLE_GROUP DEF_CMD(CmdAddVehicleGroup, 0, CMDT_ROUTE_MANAGEMENT ), // CMD_ADD_VEHICLE_GROUP
DEF_CMD(CmdAddSharedVehicleGroup, 0, CMDT_ROUTE_MANAGEMENT ), // CMD_ADD_SHARE_VEHICLE_GROUP DEF_CMD(CmdAddSharedVehicleGroup, 0, CMDT_ROUTE_MANAGEMENT ), // CMD_ADD_SHARE_VEHICLE_GROUP
DEF_CMD(CmdRemoveAllVehiclesGroup, 0, CMDT_ROUTE_MANAGEMENT ), // CMD_REMOVE_ALL_VEHICLES_GROUP DEF_CMD(CmdRemoveAllVehiclesGroup, 0, CMDT_ROUTE_MANAGEMENT ), // CMD_REMOVE_ALL_VEHICLES_GROUP
DEF_CMD(CmdSetGroupReplaceProtection, 0, CMDT_ROUTE_MANAGEMENT ), // CMD_SET_GROUP_REPLACE_PROTECTION DEF_CMD(CmdSetGroupFlag, 0, CMDT_ROUTE_MANAGEMENT ), // CMD_SET_GROUP_FLAG
DEF_CMD(CmdSetGroupLivery, 0, CMDT_ROUTE_MANAGEMENT ), // CMD_SET_GROUP_LIVERY DEF_CMD(CmdSetGroupLivery, 0, CMDT_ROUTE_MANAGEMENT ), // CMD_SET_GROUP_LIVERY
DEF_CMD(CmdMoveOrder, 0, CMDT_ROUTE_MANAGEMENT ), // CMD_MOVE_ORDER DEF_CMD(CmdMoveOrder, 0, CMDT_ROUTE_MANAGEMENT ), // CMD_MOVE_ORDER
DEF_CMD(CmdChangeTimetable, 0, CMDT_ROUTE_MANAGEMENT ), // CMD_CHANGE_TIMETABLE DEF_CMD(CmdChangeTimetable, 0, CMDT_ROUTE_MANAGEMENT ), // CMD_CHANGE_TIMETABLE

@ -324,7 +324,7 @@ enum Commands {
CMD_ADD_VEHICLE_GROUP, ///< add a vehicle to a group CMD_ADD_VEHICLE_GROUP, ///< add a vehicle to a group
CMD_ADD_SHARED_VEHICLE_GROUP, ///< add all other shared vehicles to a group which are missing CMD_ADD_SHARED_VEHICLE_GROUP, ///< add all other shared vehicles to a group which are missing
CMD_REMOVE_ALL_VEHICLES_GROUP, ///< remove all vehicles from a group CMD_REMOVE_ALL_VEHICLES_GROUP, ///< remove all vehicles from a group
CMD_SET_GROUP_REPLACE_PROTECTION, ///< set the autoreplace-protection for a group CMD_SET_GROUP_FLAG, ///< set/clear a flag for a group
CMD_SET_GROUP_LIVERY, ///< set the livery for a group CMD_SET_GROUP_LIVERY, ///< set the livery for a group
CMD_MOVE_ORDER, ///< move an order CMD_MOVE_ORDER, ///< move an order

@ -64,6 +64,7 @@ struct GroupStatistics {
enum GroupFlags : uint8 { enum GroupFlags : uint8 {
GF_REPLACE_PROTECTION, ///< If set to true, the global autoreplace has no effect on the group GF_REPLACE_PROTECTION, ///< If set to true, the global autoreplace has no effect on the group
GF_END,
}; };
/** Group data. */ /** Group data. */

@ -664,44 +664,50 @@ CommandCost CmdSetGroupLivery(TileIndex tile, DoCommandFlag flags, uint32 p1, ui
} }
/** /**
* Set replace protection for a group and its sub-groups. * Set group flag for a group and its sub-groups.
* @param g initial group. * @param g initial group.
* @param protect 1 to set or 0 to clear protection. * @param set 1 to set or 0 to clear protection.
*/ */
static void SetGroupReplaceProtection(Group *g, bool protect, bool children) static void SetGroupFlag(Group *g, GroupFlags flag, bool set, bool children)
{ {
if (protect) { if (set) {
SetBit(g->flags, GroupFlags::GF_REPLACE_PROTECTION); SetBit(g->flags, flag);
} else { } else {
ClrBit(g->flags, GroupFlags::GF_REPLACE_PROTECTION); ClrBit(g->flags, flag);
} }
if (!children) return; if (!children) return;
for (Group *pg : Group::Iterate()) { for (Group *pg : Group::Iterate()) {
if (pg->parent == g->index) SetGroupReplaceProtection(pg, protect, true); if (pg->parent == g->index) SetGroupFlag(pg, flag, set, true);
} }
} }
/** /**
* (Un)set global replace protection from a group * (Un)set group flag from a group
* @param tile unused * @param tile unused
* @param flags type of operation * @param flags type of operation
* @param p1 index of group array * @param p1 index of group array
* - p1 bit 0-15 : GroupID * - p1 bit 0-15 : GroupID
* - p1 bit 16-18 : Flag to set, by value not bit.
* @param p2 * @param p2
* - p2 bit 0 : 1 to set or 0 to clear protection. * - p2 bit 0 : 1 to set or 0 to clear protection.
* - p2 bit 1 : 1 to apply to sub-groups. * - p2 bit 1 : 1 to apply to sub-groups.
* @param text unused * @param text unused
* @return the cost of this operation or an error * @return the cost of this operation or an error
*/ */
CommandCost CmdSetGroupReplaceProtection(TileIndex tile, DoCommandFlag flags, uint32 p1, uint32 p2, const char *text) CommandCost CmdSetGroupFlag(TileIndex tile, DoCommandFlag flags, uint32 p1, uint32 p2, const char *text)
{ {
Group *g = Group::GetIfValid(p1); Group *g = Group::GetIfValid(GB(p1, 0, 16));
if (g == nullptr || g->owner != _current_company) return CMD_ERROR; if (g == nullptr || g->owner != _current_company) return CMD_ERROR;
/* GroupFlags are stored in as an 8 bit bitfield but passed here by value,
* so 3 bits is sufficient to cover each possible value. */
GroupFlags flag = (GroupFlags)GB(p1, 16, 3);
if (flag >= GroupFlags::GF_END) return CMD_ERROR;
if (flags & DC_EXEC) { if (flags & DC_EXEC) {
SetGroupReplaceProtection(g, HasBit(p2, 0), HasBit(p2, 1)); SetGroupFlag(g, flag, HasBit(p2, 0), HasBit(p2, 1));
SetWindowDirty(GetWindowClassForVehicleType(g->vehicle_type), VehicleListIdentifier(VL_GROUP_LIST, g->vehicle_type, _current_company).Pack()); SetWindowDirty(GetWindowClassForVehicleType(g->vehicle_type), VehicleListIdentifier(VL_GROUP_LIST, g->vehicle_type, _current_company).Pack());
InvalidateWindowData(WC_REPLACE_VEHICLE, g->vehicle_type); InvalidateWindowData(WC_REPLACE_VEHICLE, g->vehicle_type);

@ -798,7 +798,7 @@ public:
case WID_GL_REPLACE_PROTECTION: { case WID_GL_REPLACE_PROTECTION: {
const Group *g = Group::GetIfValid(this->vli.index); const Group *g = Group::GetIfValid(this->vli.index);
if (g != nullptr) { if (g != nullptr) {
DoCommandP(0, this->vli.index, (HasBit(g->flags, GroupFlags::GF_REPLACE_PROTECTION) ? 0 : 1) | (_ctrl_pressed << 1), CMD_SET_GROUP_REPLACE_PROTECTION); DoCommandP(0, this->vli.index | (GroupFlags::GF_REPLACE_PROTECTION << 16), (HasBit(g->flags, GroupFlags::GF_REPLACE_PROTECTION) ? 0 : 1) | (_ctrl_pressed << 1), CMD_SET_GROUP_FLAG);
} }
break; break;
} }

@ -89,7 +89,7 @@
{ {
EnforcePrecondition(false, IsValidGroup(group_id)); EnforcePrecondition(false, IsValidGroup(group_id));
return ScriptObject::DoCommand(0, group_id, enable ? 1 : 0, CMD_SET_GROUP_REPLACE_PROTECTION); return ScriptObject::DoCommand(0, group_id | GroupFlags::GF_REPLACE_PROTECTION, enable ? 1 : 0, CMD_SET_GROUP_FLAG);
} }
/* static */ bool ScriptGroup::GetAutoReplaceProtection(GroupID group_id) /* static */ bool ScriptGroup::GetAutoReplaceProtection(GroupID group_id)

Loading…
Cancel
Save