Files
@ r12162:c4894f5339c3
Branch filter:
Location: cpp/openttd-patchpack/source/src/group.h - annotation
r12162:c4894f5339c3
2.4 KiB
text/x-c
(svn r16583) -Update: the order of the language files so it's in sync with english.txt. Normally WT2 would do this, but only with activity for those languages. Now we'd like to the order to match so we can more easily spot import bugs while developing WT3.
r6643:fa000ce7441e r6643:fa000ce7441e r9111:983de9c5a848 r6643:fa000ce7441e r6643:fa000ce7441e r6643:fa000ce7441e r6643:fa000ce7441e r8770:06d779b8eed1 r11969:3526c3cc75dc r10208:ef8fcc3dc4ca r8254:b96be9ebfc6e r8786:f24a6d1fba34 r6643:fa000ce7441e r11967:df0600d2c7e7 r11967:df0600d2c7e7 r7382:750cdd87ddef r11967:df0600d2c7e7 r8258:08100da56269 r6643:fa000ce7441e r6643:fa000ce7441e r10207:a1fc2f2a33db r6643:fa000ce7441e r6643:fa000ce7441e r6643:fa000ce7441e r10207:a1fc2f2a33db r7382:750cdd87ddef r10207:a1fc2f2a33db r11967:df0600d2c7e7 r6643:fa000ce7441e r6643:fa000ce7441e r6643:fa000ce7441e r6643:fa000ce7441e r6643:fa000ce7441e r7258:6dd7a1782071 r7258:6dd7a1782071 r7258:6dd7a1782071 r7258:6dd7a1782071 r10207:a1fc2f2a33db r7258:6dd7a1782071 r7258:6dd7a1782071 r7258:6dd7a1782071 r7258:6dd7a1782071 r7258:6dd7a1782071 r7258:6dd7a1782071 r6643:fa000ce7441e r6643:fa000ce7441e r11966:921bea0ca112 r11966:921bea0ca112 r6643:fa000ce7441e r6643:fa000ce7441e r6643:fa000ce7441e r6643:fa000ce7441e r11962:0e3a6981e508 r6643:fa000ce7441e r6643:fa000ce7441e r6643:fa000ce7441e r6643:fa000ce7441e r6643:fa000ce7441e r6643:fa000ce7441e r6643:fa000ce7441e r6643:fa000ce7441e r6643:fa000ce7441e r7258:6dd7a1782071 r7258:6dd7a1782071 r7258:6dd7a1782071 r7258:6dd7a1782071 r7258:6dd7a1782071 r7258:6dd7a1782071 r7258:6dd7a1782071 r10207:a1fc2f2a33db r7258:6dd7a1782071 r6643:fa000ce7441e r6643:fa000ce7441e r11944:3b8f9f948e8d r11944:3b8f9f948e8d r6643:fa000ce7441e r6643:fa000ce7441e r6643:fa000ce7441e r6643:fa000ce7441e r11944:3b8f9f948e8d r11944:3b8f9f948e8d r6643:fa000ce7441e r6643:fa000ce7441e r6643:fa000ce7441e r6643:fa000ce7441e r6643:fa000ce7441e r6643:fa000ce7441e r6643:fa000ce7441e r10207:a1fc2f2a33db r6643:fa000ce7441e r10696:8dfe83e30d01 r10696:8dfe83e30d01 r6643:fa000ce7441e | /* $Id$ */
/** @file group.h Base class from groups. */
#ifndef GROUP_H
#define GROUP_H
#include "group_type.h"
#include "core/pool_type.hpp"
#include "company_type.h"
#include "vehicle_type.h"
#include "engine_type.h"
typedef Pool<Group, GroupID, 16, 64000> GroupPool;
extern GroupPool _group_pool;
struct Group : GroupPool::PoolItem<&_group_pool> {
char *name; ///< Group Name
uint16 num_vehicle; ///< Number of vehicles wich belong to the group
OwnerByte owner; ///< Group Owner
VehicleTypeByte vehicle_type; ///< Vehicle type of the group
bool replace_protection; ///< If set to true, the global autoreplace have no effect on the group
uint16 *num_engines; ///< Caches the number of engines of each type the company owns (no need to save this)
Group(CompanyID owner = INVALID_COMPANY);
~Group();
};
static inline bool IsDefaultGroupID(GroupID index)
{
return index == DEFAULT_GROUP;
}
/**
* Checks if a GroupID stands for all vehicles of a company
* @param id_g The GroupID to check
* @return true is id_g is identical to ALL_GROUP
*/
static inline bool IsAllGroupID(GroupID id_g)
{
return id_g == ALL_GROUP;
}
#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)
/**
* Get the current size of the GroupPool
*/
static inline uint GetGroupArraySize()
{
const Group *g;
uint num = 0;
FOR_ALL_GROUPS(g) num++;
return num;
}
/**
* Get the number of engines with EngineID id_e in the group with GroupID
* id_g
* @param id_g The GroupID of the group used
* @param id_e The EngineID of the engine to count
* @return The number of engines with EngineID id_e in the group
*/
uint GetGroupNumEngines(CompanyID company, GroupID id_g, EngineID id_e);
static inline void IncreaseGroupNumVehicle(GroupID id_g)
{
Group *g = Group::GetIfValid(id_g);
if (g != NULL) g->num_vehicle++;
}
static inline void DecreaseGroupNumVehicle(GroupID id_g)
{
Group *g = Group::GetIfValid(id_g);
if (g != NULL) g->num_vehicle--;
}
void InitializeGroup();
void SetTrainGroupID(Vehicle *v, GroupID grp);
void UpdateTrainGroupID(Vehicle *v);
void RemoveVehicleFromGroup(const Vehicle *v);
void RemoveAllGroupsForCompany(const CompanyID company);
extern GroupID _new_group_id;
#endif /* GROUP_H */
|