Files
@ r17167:68f47a8db1b5
Branch filter:
Location: cpp/openttd-patchpack/source/src/group.h - annotation
r17167:68f47a8db1b5
2.7 KiB
text/x-c
(svn r21916) -Fix [FS#4442]: the minimum speed needed for (realistic) acceleration to work properly can sometimes be more than the (temporary) maximum speed causing Clamp to "fail". Make sure that the minimum speed always overrules the maximum speed
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 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;
}
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 */
|