Files
@ r15027:bb71fdfcc554
Branch filter:
Location: cpp/openttd-patchpack/source/src/group.h - annotation
r15027:bb71fdfcc554
3.0 KiB
text/x-c
(svn r19654) -Codechange: Use Extract<> in more places.
r6643:fa000ce7441e r6643:fa000ce7441e r12768:980ae0491352 r12768:980ae0491352 r12768:980ae0491352 r12768:980ae0491352 r12768:980ae0491352 r12768:980ae0491352 r12768:980ae0491352 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 r13060:e57594b0ca84 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 r12290:442d5d533a57 r12290:442d5d533a57 r6643:fa000ce7441e r10207:a1fc2f2a33db r6643:fa000ce7441e r10696:8dfe83e30d01 r10696:8dfe83e30d01 r6643:fa000ce7441e | /* $Id$ */
/*
* This file is part of OpenTTD.
* OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2.
* OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
* See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see <http://www.gnu.org/licenses/>.
*/
/** @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 company The company the group belongs to
* @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(Train *v, GroupID grp);
void UpdateTrainGroupID(Train *v);
void RemoveVehicleFromGroup(const Vehicle *v);
void RemoveAllGroupsForCompany(const CompanyID company);
extern GroupID _new_group_id;
#endif /* GROUP_H */
|