Handling of the engine groups. More...
#include "stdafx.h"#include "cmd_helper.h"#include "command_func.h"#include "group.h"#include "train.h"#include "vehicle_gui.h"#include "vehiclelist.h"#include "window_func.h"#include "vehicle_func.h"#include "autoreplace_base.h"#include "autoreplace_func.h"#include "string_func.h"#include "company_func.h"#include "core/pool_func.hpp"#include "order_backup.h"#include "table/strings.h"Go to the source code of this file.
Functions | |
| static void | UpdateNumEngineGroup (EngineID i, GroupID old_g, GroupID new_g) |
| Update the num engines of a groupID. | |
| void | InitializeGroup () |
| CommandCost | CmdCreateGroup (TileIndex tile, DoCommandFlag flags, uint32 p1, uint32 p2, const char *text) |
| Create a new vehicle group. | |
| CommandCost | CmdDeleteGroup (TileIndex tile, DoCommandFlag flags, uint32 p1, uint32 p2, const char *text) |
| Add all vehicles in the given group to the default group and then deletes the group. | |
| static bool | IsUniqueGroupName (const char *name) |
| CommandCost | CmdRenameGroup (TileIndex tile, DoCommandFlag flags, uint32 p1, uint32 p2, const char *text) |
| Rename a group. | |
| CommandCost | CmdAddVehicleGroup (TileIndex tile, DoCommandFlag flags, uint32 p1, uint32 p2, const char *text) |
| Add a vehicle to a group. | |
| CommandCost | CmdAddSharedVehicleGroup (TileIndex tile, DoCommandFlag flags, uint32 p1, uint32 p2, const char *text) |
| Add all shared vehicles of all vehicles from a group. | |
| CommandCost | CmdRemoveAllVehiclesGroup (TileIndex tile, DoCommandFlag flags, uint32 p1, uint32 p2, const char *text) |
| Remove all vehicles from a group. | |
| CommandCost | CmdSetGroupReplaceProtection (TileIndex tile, DoCommandFlag flags, uint32 p1, uint32 p2, const char *text) |
| (Un)set global replace protection from a group | |
| void | RemoveVehicleFromGroup (const Vehicle *v) |
| Decrease the num_vehicle variable before delete an front engine from a group. | |
| void | SetTrainGroupID (Train *v, GroupID new_g) |
| Affect the groupID of a train to new_g. | |
| void | UpdateTrainGroupID (Train *v) |
| Recalculates the groupID of a train. | |
| uint | GetGroupNumEngines (CompanyID company, GroupID id_g, EngineID id_e) |
| Get the number of engines with EngineID id_e in the group with GroupID id_g. | |
| void | RemoveAllGroupsForCompany (const CompanyID company) |
Variables | |
| GroupID | _new_group_id |
| GroupPool | _group_pool ("Group") |
Handling of the engine groups.
Definition in file group_cmd.cpp.
| CommandCost CmdAddSharedVehicleGroup | ( | TileIndex | tile, | |
| DoCommandFlag | flags, | |||
| uint32 | p1, | |||
| uint32 | p2, | |||
| const char * | text | |||
| ) |
Add all shared vehicles of all vehicles from a group.
| tile | unused | |
| flags | type of operation | |
| p1 | index of group array
| |
| p2 | type of vehicles | |
| text | unused |
Definition at line 261 of file group_cmd.cpp.
References _current_company, CMD_ADD_VEHICLE_GROUP, CMD_ERROR, DC_EXEC, DoCommand(), Vehicle::FirstShared(), FOR_ALL_VEHICLES, GetWindowClassForVehicleType(), Vehicle::group_id, InvalidateWindowData(), IsCompanyBuildableVehicleType(), Vehicle::IsPrimaryVehicle(), Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tcache, Tzero >::PoolItem<&_group_pool >::IsValidID(), Vehicle::NextShared(), and BaseVehicle::type.
| CommandCost CmdAddVehicleGroup | ( | TileIndex | tile, | |
| DoCommandFlag | flags, | |||
| uint32 | p1, | |||
| uint32 | p2, | |||
| const char * | text | |||
| ) |
Add a vehicle to a group.
| tile | unused | |
| flags | type of operation | |
| p1 | index of array group
| |
| p2 | vehicle to add to a group
| |
| text | unused |
Definition at line 212 of file group_cmd.cpp.
References _current_company, CMD_ERROR, DC_EXEC, Vehicle::engine_type, SpecializedVehicle< Train, Type >::From(), Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tcache, Tzero >::PoolItem<&_group_pool >::Get(), Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tcache, Tzero >::PoolItem<&_vehicle_pool >::GetIfValid(), GetWindowClassForVehicleType(), Vehicle::group_id, InvalidateWindowData(), Vehicle::IsEngineCountable(), Vehicle::IsPrimaryVehicle(), Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tcache, Tzero >::PoolItem<&_group_pool >::IsValidID(), Vehicle::owner, Group::owner, SetTrainGroupID(), SetWindowDirty(), BaseVehicle::type, UpdateNumEngineGroup(), VEH_AIRCRAFT, VEH_ROAD, VEH_SHIP, VEH_TRAIN, and Group::vehicle_type.
| CommandCost CmdCreateGroup | ( | TileIndex | tile, | |
| DoCommandFlag | flags, | |||
| uint32 | p1, | |||
| uint32 | p2, | |||
| const char * | text | |||
| ) |
Create a new vehicle group.
| tile | unused | |
| flags | type of operation | |
| p1 | vehicle type | |
| p2 | unused | |
| text | unused |
Definition at line 85 of file group_cmd.cpp.
References _current_company, Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tcache, Tzero >::PoolItem<&_group_pool >::CanAllocateItem(), CMD_ERROR, DC_EXEC, GetWindowClassForVehicleType(), Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tcache, Tzero >::PoolItem< Tpool >::index, InvalidateWindowData(), IsCompanyBuildableVehicleType(), Group::replace_protection, and Group::vehicle_type.
| CommandCost CmdDeleteGroup | ( | TileIndex | tile, | |
| DoCommandFlag | flags, | |||
| uint32 | p1, | |||
| uint32 | p2, | |||
| const char * | text | |||
| ) |
Add all vehicles in the given group to the default group and then deletes the group.
| tile | unused | |
| flags | type of operation | |
| p1 | index of array group
| |
| p2 | unused | |
| text | unused |
Definition at line 116 of file group_cmd.cpp.
References _current_company, OrderBackup::ClearGroup(), CMD_ERROR, DC_EXEC, DEFAULT_GROUP, DeleteWindowById(), FOR_ALL_VEHICLES, Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tcache, Tzero >::PoolItem<&_company_pool >::Get(), Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tcache, Tzero >::PoolItem<&_group_pool >::GetIfValid(), GetWindowClassForVehicleType(), Vehicle::group_id, Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tcache, Tzero >::PoolItem< Tpool >::index, InvalidateWindowData(), MAX_COMPANIES, Group::owner, RemoveEngineReplacementForCompany(), BaseVehicle::type, and Group::vehicle_type.
| CommandCost CmdRemoveAllVehiclesGroup | ( | TileIndex | tile, | |
| DoCommandFlag | flags, | |||
| uint32 | p1, | |||
| uint32 | p2, | |||
| const char * | text | |||
| ) |
Remove all vehicles from a group.
| tile | unused | |
| flags | type of operation | |
| p1 | index of group array
| |
| p2 | type of vehicles | |
| text | unused |
Definition at line 300 of file group_cmd.cpp.
References _current_company, CMD_ADD_VEHICLE_GROUP, CMD_ERROR, DC_EXEC, DEFAULT_GROUP, DoCommand(), FOR_ALL_VEHICLES, Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tcache, Tzero >::PoolItem<&_group_pool >::GetIfValid(), GetWindowClassForVehicleType(), Vehicle::group_id, Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tcache, Tzero >::PoolItem< Tpool >::index, InvalidateWindowData(), IsCompanyBuildableVehicleType(), Vehicle::IsPrimaryVehicle(), Group::owner, and BaseVehicle::type.
| CommandCost CmdRenameGroup | ( | TileIndex | tile, | |
| DoCommandFlag | flags, | |||
| uint32 | p1, | |||
| uint32 | p2, | |||
| const char * | text | |||
| ) |
Rename a group.
| tile | unused | |
| flags | type of operation | |
| p1 | index of array group
| |
| p2 | unused | |
| text | the new name or an empty string when resetting to the default |
Definition at line 176 of file group_cmd.cpp.
References _current_company, CMD_ERROR, DC_EXEC, Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tcache, Tzero >::PoolItem<&_group_pool >::GetIfValid(), GetWindowClassForVehicleType(), InvalidateWindowData(), MAX_LENGTH_GROUP_NAME_CHARS, Group::name, Group::owner, return_cmd_error, StrEmpty(), Utf8StringLength(), and Group::vehicle_type.
| CommandCost CmdSetGroupReplaceProtection | ( | TileIndex | tile, | |
| DoCommandFlag | flags, | |||
| uint32 | p1, | |||
| uint32 | p2, | |||
| const char * | text | |||
| ) |
(Un)set global replace protection from a group
| tile | unused | |
| flags | type of operation | |
| p1 | index of group array
| |
| p2 |
| |
| text | unused |
Definition at line 339 of file group_cmd.cpp.
References _current_company, CMD_ERROR, DC_EXEC, Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tcache, Tzero >::PoolItem<&_group_pool >::GetIfValid(), GetWindowClassForVehicleType(), HasBit(), InvalidateWindowData(), Group::owner, Group::replace_protection, and Group::vehicle_type.
Get the number of engines with EngineID id_e in the group with GroupID id_g.
| company | The company the group belongs to | |
| id_g | The GroupID of the group used | |
| id_e | The EngineID of the engine to count |
Definition at line 420 of file group_cmd.cpp.
References Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tcache, Tzero >::PoolItem<&_company_pool >::Get(), Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tcache, Tzero >::PoolItem<&_group_pool >::Get(), Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tcache, Tzero >::PoolItem<&_group_pool >::IsValidID(), Group::num_engines, and Group::owner.
Referenced by DrawEngineList(), ReplaceVehicleWindow::GenerateReplaceVehList(), AIGroup::GetNumEngines(), and InvalidateAutoreplaceWindow().
| void RemoveVehicleFromGroup | ( | const Vehicle * | v | ) |
Decrease the num_vehicle variable before delete an front engine from a group.
| v | FrontEngine of the train we want to remove. |
Definition at line 359 of file group_cmd.cpp.
References Vehicle::group_id, and Vehicle::IsPrimaryVehicle().
Referenced by CmdMoveRailVehicle().
Affect the groupID of a train to new_g.
| v | First vehicle of the chain. | |
| new_g | index of array group |
Definition at line 373 of file group_cmd.cpp.
References Vehicle::IsFrontEngine(), Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tcache, Tzero >::PoolItem<&_group_pool >::IsValidID(), SpecializedVehicle< T, Type >::Next(), SetWindowDirty(), UpdateNumEngineGroup(), and VEH_TRAIN.
Referenced by CmdAddVehicleGroup(), and CmdMoveRailVehicle().
Update the num engines of a groupID.
Decrease the old one and increase the new one
| i | EngineID we have to update | |
| old_g | index of the old group | |
| new_g | index of the new group |
Definition at line 42 of file group_cmd.cpp.
References Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tcache, Tzero >::PoolItem<&_group_pool >::Get(), and Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tcache, Tzero >::PoolItem<&_group_pool >::IsValidID().
Referenced by CmdAddVehicleGroup(), SetTrainGroupID(), and UpdateTrainGroupID().
| void UpdateTrainGroupID | ( | Train * | v | ) |
Recalculates the groupID of a train.
Should be called each time a vehicle is added to/removed from the chain,.
| v | First vehicle of the chain. |
Definition at line 397 of file group_cmd.cpp.
References DEFAULT_GROUP, Vehicle::group_id, GroundVehicle< T, Type >::IsFreeWagon(), Vehicle::IsFrontEngine(), SpecializedVehicle< T, Type >::Next(), SetWindowDirty(), UpdateNumEngineGroup(), and VEH_TRAIN.
Referenced by CmdBuildRailVehicle(), CmdBuildRailWagon(), and NormaliseTrainHead().
1.7.1