Files
@ r11049:6eb2c87ed64a
Branch filter:
Location: cpp/openttd-patchpack/source/src/group.h - annotation
r11049:6eb2c87ed64a
2.5 KiB
text/x-c
(svn r15389) -Feature: Add ability to select which base graphics set is used from the Game Options window. The change takes effect when the window is closed. This option can only be used from the intro menu, as reloading graphics during a game may cause issues.
r6643:fa000ce7441e r6643:fa000ce7441e r9111:983de9c5a848 r6643:fa000ce7441e r6643:fa000ce7441e r6643:fa000ce7441e r6643:fa000ce7441e r8770:06d779b8eed1 r6643:fa000ce7441e r10208:ef8fcc3dc4ca r8254:b96be9ebfc6e r8786:f24a6d1fba34 r6643:fa000ce7441e r7382:750cdd87ddef r7382:750cdd87ddef r7382:750cdd87ddef r8258:08100da56269 r6643:fa000ce7441e r6643:fa000ce7441e r10207:a1fc2f2a33db r6643:fa000ce7441e r6643:fa000ce7441e r6643:fa000ce7441e r10207:a1fc2f2a33db r7382:750cdd87ddef r10207:a1fc2f2a33db r7382:750cdd87ddef r7382:750cdd87ddef r7382:750cdd87ddef r6643:fa000ce7441e r6643:fa000ce7441e r6643:fa000ce7441e r6643:fa000ce7441e r6643:fa000ce7441e r7382:750cdd87ddef 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 r7382:750cdd87ddef r6643:fa000ce7441e r6643:fa000ce7441e r6643:fa000ce7441e r6643:fa000ce7441e r6643:fa000ce7441e r6643:fa000ce7441e 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 r6643:fa000ce7441e r6643:fa000ce7441e r6643:fa000ce7441e r6643:fa000ce7441e r6643:fa000ce7441e r6643:fa000ce7441e 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 "oldpool.h"
#include "company_type.h"
#include "vehicle_type.h"
#include "engine_type.h"
DECLARE_OLD_POOL(Group, Group, 5, 2047)
struct Group : PoolItem<Group, GroupID, &_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);
virtual ~Group();
bool IsValid() const;
};
static inline bool IsValidGroupID(GroupID index)
{
return index < GetGroupPoolSize() && GetGroup(index)->IsValid();
}
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(g, start) for (g = GetGroup(start); g != NULL; g = (g->index + 1U < GetGroupPoolSize()) ? GetGroup(g->index + 1) : NULL) if (g->IsValid())
#define FOR_ALL_GROUPS(g) FOR_ALL_GROUPS_FROM(g, 0)
/**
* Get the current size of the GroupPool
*/
static inline uint GetGroupArraySize(void)
{
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)
{
if (IsValidGroupID(id_g)) GetGroup(id_g)->num_vehicle++;
}
static inline void DecreaseGroupNumVehicle(GroupID id_g)
{
if (IsValidGroupID(id_g)) GetGroup(id_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 */
|