group.h File Reference

Base class from groups. More...

#include "group_type.h"
#include "core/pool_type.hpp"
#include "company_type.h"
#include "vehicle_type.h"
#include "engine_type.h"

Go to the source code of this file.

Data Structures

struct  Group

Defines

#define FOR_ALL_GROUPS_FROM(var, start)   FOR_ALL_ITEMS_FROM(Group, group_index, var, start)
#define FOR_ALL_GROUPS(var)   FOR_ALL_GROUPS_FROM(var, 0)

Typedefs

typedef Pool< Group, GroupID, 16, 64000 > GroupPool

Functions

static bool IsDefaultGroupID (GroupID index)
static bool IsAllGroupID (GroupID id_g)
 Checks if a GroupID stands for all vehicles of a company.
static uint GetGroupArraySize ()
 Get the current size of the GroupPool.
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.
static void IncreaseGroupNumVehicle (GroupID id_g)
static void DecreaseGroupNumVehicle (GroupID id_g)
void InitializeGroup ()
void SetTrainGroupID (Train *v, GroupID grp)
 Affect the groupID of a train to new_g.
void UpdateTrainGroupID (Train *v)
 Recalculates the groupID of a train.
void RemoveVehicleFromGroup (const Vehicle *v)
 Decrease the num_vehicle variable before delete an front engine from a group.
void RemoveAllGroupsForCompany (const CompanyID company)

Variables

GroupPool _group_pool
GroupID _new_group_id

Detailed Description

Base class from groups.

Definition in file group.h.


Function Documentation

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.

Parameters:
company The company the group belongs to
id_g The GroupID of the group used
id_e The EngineID of the engine to count
Returns:
The number of engines with EngineID id_e in the group

Definition at line 412 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().

static bool IsAllGroupID ( GroupID  id_g  )  [inline, static]

Checks if a GroupID stands for all vehicles of a company.

Parameters:
id_g The GroupID to check
Returns:
true is id_g is identical to ALL_GROUP

Definition at line 49 of file group.h.

Referenced by CmdSetAutoReplace(), VehicleGroupWindow::DrawWidget(), VehicleGroupWindow::OnClick(), VehicleGroupWindow::OnInvalidateData(), VehicleGroupWindow::OnPaint(), and VehicleGroupWindow::SetStringParameters().

void RemoveVehicleFromGroup ( const Vehicle v  ) 

Decrease the num_vehicle variable before delete an front engine from a group.

Note:
Called in CmdSellRailWagon and DeleteLasWagon,
Parameters:
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().

void SetTrainGroupID ( Train v,
GroupID  new_g 
)

Affect the groupID of a train to new_g.

Note:
called in CmdAddVehicleGroup and CmdMoveRailVehicle
Parameters:
v First vehicle of the chain.
new_g index of array group

Definition at line 373 of file group_cmd.cpp.

References Train::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().

void UpdateTrainGroupID ( Train v  ) 

Recalculates the groupID of a train.

Should be called each time a vehicle is added to/removed from the chain,.

Note:
this needs to be called too for 'wagon chains' (in the depot, without an engine)
Called in CmdBuildRailVehicle, CmdBuildRailWagon, CmdMoveRailVehicle, CmdSellRailWagon
Parameters:
v First vehicle of the chain.

Definition at line 397 of file group_cmd.cpp.

References DEFAULT_GROUP, Vehicle::group_id, Train::IsFreeWagon(), Train::IsFrontEngine(), SpecializedVehicle< T, Type >::Next(), SetWindowDirty(), UpdateNumEngineGroup(), and VEH_TRAIN.

Referenced by CmdBuildRailVehicle(), CmdBuildRailWagon(), and NormaliseTrainHead().


Generated on Fri Dec 31 17:15:45 2010 for OpenTTD by  doxygen 1.6.1