Files
@ r14217:40beee5d2e82
Branch filter:
Location: cpp/openttd-patchpack/source/src/vehicle_func.h - annotation
r14217:40beee5d2e82
5.5 KiB
text/x-c
(svn r18778) -Fix [FS#3483]: [YAPP] Remove a special check for two-sided signals when reserving a path as this causes trains to get stuck in front of them.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 | r8144:1432edd15267 r8144:1432edd15267 r12768:980ae0491352 r12768:980ae0491352 r12768:980ae0491352 r12768:980ae0491352 r12768:980ae0491352 r12768:980ae0491352 r12768:980ae0491352 r9111:983de9c5a848 r8144:1432edd15267 r8144:1432edd15267 r8144:1432edd15267 r8144:1432edd15267 r8144:1432edd15267 r8144:1432edd15267 r8144:1432edd15267 r8144:1432edd15267 r8144:1432edd15267 r8144:1432edd15267 r8144:1432edd15267 r8777:59b04e504aa5 r9126:35955a7b9d9e r11346:032b1fd8218f r8144:1432edd15267 r8144:1432edd15267 r8144:1432edd15267 r8144:1432edd15267 r8144:1432edd15267 r9775:4eaf88c92876 r8144:1432edd15267 r8144:1432edd15267 r8144:1432edd15267 r10083:2e8288935c09 r10083:2e8288935c09 r10083:2e8288935c09 r10083:2e8288935c09 r8144:1432edd15267 r11085:c87a330fb4c2 r8144:1432edd15267 r8144:1432edd15267 r8144:1432edd15267 r11085:c87a330fb4c2 r8144:1432edd15267 r13952:d0372804e739 r13380:487657d263d3 r8144:1432edd15267 r8144:1432edd15267 r8144:1432edd15267 r11346:032b1fd8218f r10103:3b6188cb0b44 r8144:1432edd15267 r8144:1432edd15267 r8144:1432edd15267 r8144:1432edd15267 r8144:1432edd15267 r8144:1432edd15267 r11321:15f691941b01 r8317:d2bb8edc9b31 r8144:1432edd15267 r8144:1432edd15267 r8144:1432edd15267 r11090:9276cea703d4 r8144:1432edd15267 r8144:1432edd15267 r8144:1432edd15267 r8144:1432edd15267 r8144:1432edd15267 r8144:1432edd15267 r10260:88d82a40120c r8144:1432edd15267 r10260:88d82a40120c r10260:88d82a40120c r10260:88d82a40120c r8144:1432edd15267 r8144:1432edd15267 r8144:1432edd15267 r8144:1432edd15267 r8144:1432edd15267 r10207:a1fc2f2a33db r8144:1432edd15267 r8144:1432edd15267 r8144:1432edd15267 r8144:1432edd15267 r8144:1432edd15267 r8144:1432edd15267 r8144:1432edd15267 r8144:1432edd15267 r8144:1432edd15267 r8144:1432edd15267 r8144:1432edd15267 r8144:1432edd15267 r10207:a1fc2f2a33db r8144:1432edd15267 r10207:a1fc2f2a33db r8144:1432edd15267 r8144:1432edd15267 r10207:a1fc2f2a33db r8144:1432edd15267 r8144:1432edd15267 r8144:1432edd15267 r8144:1432edd15267 r10207:a1fc2f2a33db r8144:1432edd15267 r8144:1432edd15267 r10207:a1fc2f2a33db r8144:1432edd15267 r8144:1432edd15267 r8144:1432edd15267 r8144:1432edd15267 r8144:1432edd15267 r8144:1432edd15267 r8144:1432edd15267 r8144:1432edd15267 r13407:428d181f586b r13378:d77630912fbb r8144:1432edd15267 r8144:1432edd15267 r8144:1432edd15267 r8144:1432edd15267 r8144:1432edd15267 r8144:1432edd15267 r8144:1432edd15267 r8144:1432edd15267 r8144:1432edd15267 r8144:1432edd15267 r8144:1432edd15267 r8144:1432edd15267 r8144:1432edd15267 r8144:1432edd15267 r8144:1432edd15267 r8144:1432edd15267 r8144:1432edd15267 r8144:1432edd15267 r8144:1432edd15267 r8144:1432edd15267 r8144:1432edd15267 r8144:1432edd15267 r8144:1432edd15267 r8144:1432edd15267 r8144:1432edd15267 r8144:1432edd15267 r8144:1432edd15267 r8144:1432edd15267 r8144:1432edd15267 r8144:1432edd15267 r8144:1432edd15267 r8144:1432edd15267 r8144:1432edd15267 r8144:1432edd15267 r8144:1432edd15267 r8144:1432edd15267 r8144:1432edd15267 r8144:1432edd15267 r8144:1432edd15267 r8144:1432edd15267 r8144:1432edd15267 r8144:1432edd15267 r8144:1432edd15267 r8144:1432edd15267 r8144:1432edd15267 r8144:1432edd15267 r8144:1432edd15267 r8144:1432edd15267 r8144:1432edd15267 r8144:1432edd15267 r9344:f9f972b7b45d r8144:1432edd15267 r8144:1432edd15267 r12624:da84c1a9a664 r8144:1432edd15267 r10650:77ed40e17699 r10650:77ed40e17699 r10650:77ed40e17699 r12107:e2e26c8ef3e7 r12107:e2e26c8ef3e7 r9009:e21a5dd1e60e | /* $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 vehicle_func.h Functions related to vehicles. */
#ifndef VEHICLE_FUNC_H
#define VEHICLE_FUNC_H
#include "tile_type.h"
#include "strings_type.h"
#include "gfx_type.h"
#include "direction_type.h"
#include "cargo_type.h"
#include "command_type.h"
#include "vehicle_type.h"
#include "engine_type.h"
#include "transport_type.h"
#include "newgrf_config.h"
#define is_custom_sprite(x) (x >= 0xFD)
#define IS_CUSTOM_FIRSTHEAD_SPRITE(x) (x == 0xFD)
#define IS_CUSTOM_SECONDHEAD_SPRITE(x) (x == 0xFE)
typedef Vehicle *VehicleFromPosProc(Vehicle *v, void *data);
void VehicleServiceInDepot(Vehicle *v);
uint CountVehiclesInChain(const Vehicle *v);
void FindVehicleOnPos(TileIndex tile, void *data, VehicleFromPosProc *proc);
void FindVehicleOnPosXY(int x, int y, void *data, VehicleFromPosProc *proc);
bool HasVehicleOnPos(TileIndex tile, void *data, VehicleFromPosProc *proc);
bool HasVehicleOnPosXY(int x, int y, void *data, VehicleFromPosProc *proc);
void CallVehicleTicks();
uint8 CalcPercentVehicleFilled(const Vehicle *v, StringID *colour);
byte VehicleRandomBits();
void ResetVehiclePosHash();
void ResetVehicleColourMap();
byte GetBestFittingSubType(Vehicle *v_from, Vehicle *v_for);
CommandCost RefitVehicle(Vehicle *v, bool only_this, CargoID new_cid, byte new_subtype, DoCommandFlag flags);
void ViewportAddVehicles(DrawPixelInfo *dpi);
void ShowNewGrfVehicleError(EngineID engine, StringID part1, StringID part2, GRFBugs bug_type, bool critical);
bool HasVehicleOnTunnelBridge(TileIndex tile, TileIndex endtile, const Vehicle *ignore = NULL);
void DecreaseVehicleValue(Vehicle *v);
void CheckVehicleBreakdown(Vehicle *v);
void AgeVehicle(Vehicle *v);
void VehicleEnteredDepotThisTick(Vehicle *v);
void VehicleMove(Vehicle *v, bool update_viewport);
void MarkSingleVehicleDirty(const Vehicle *v);
UnitID GetFreeUnitNumber(VehicleType type);
CommandCost SendAllVehiclesToDepot(VehicleType type, DoCommandFlag flags, bool service, Owner owner, uint16 vlw_flag, uint32 id);
void VehicleEnterDepot(Vehicle *v);
bool CanBuildVehicleInfrastructure(VehicleType type);
void CcCloneVehicle(bool success, TileIndex tile, uint32 p1, uint32 p2);
/** Position information of a vehicle after it moved */
struct GetNewVehiclePosResult {
int x, y; ///< x and y position of the vehicle after moving
TileIndex old_tile; ///< Current tile of the vehicle
TileIndex new_tile; ///< Tile of the vehicle after moving
};
GetNewVehiclePosResult GetNewVehiclePos(const Vehicle *v);
Direction GetDirectionTowards(const Vehicle *v, int x, int y);
static inline bool IsCompanyBuildableVehicleType(VehicleType type)
{
switch (type) {
case VEH_TRAIN:
case VEH_ROAD:
case VEH_SHIP:
case VEH_AIRCRAFT:
return true;
default: return false;
}
}
static inline bool IsCompanyBuildableVehicleType(const BaseVehicle *v)
{
return IsCompanyBuildableVehicleType(v->type);
}
const struct Livery *GetEngineLivery(EngineID engine_type, CompanyID company, EngineID parent_engine_type, const Vehicle *v);
/**
* Get the colour map for an engine. This used for unbuilt engines in the user interface.
* @param engine_type ID of engine
* @param company ID of company
* @return A ready-to-use palette modifier
*/
SpriteID GetEnginePalette(EngineID engine_type, CompanyID company);
/**
* Get the colour map for a vehicle.
* @param v Vehicle to get colour map for
* @return A ready-to-use palette modifier
*/
SpriteID GetVehiclePalette(const Vehicle *v);
uint GetVehicleCapacity(const Vehicle *v, uint16 *mail_capacity = NULL);
extern const uint32 _veh_build_proc_table[];
extern const uint32 _veh_sell_proc_table[];
extern const uint32 _veh_refit_proc_table[];
extern const uint32 _send_to_depot_proc_table[];
/* Functions to find the right command for certain vehicle type */
static inline uint32 GetCmdBuildVeh(VehicleType type)
{
return _veh_build_proc_table[type];
}
static inline uint32 GetCmdBuildVeh(const BaseVehicle *v)
{
return GetCmdBuildVeh(v->type);
}
static inline uint32 GetCmdSellVeh(VehicleType type)
{
return _veh_sell_proc_table[type];
}
static inline uint32 GetCmdSellVeh(const BaseVehicle *v)
{
return GetCmdSellVeh(v->type);
}
static inline uint32 GetCmdRefitVeh(VehicleType type)
{
return _veh_refit_proc_table[type];
}
static inline uint32 GetCmdRefitVeh(const BaseVehicle *v)
{
return GetCmdRefitVeh(v->type);
}
static inline uint32 GetCmdSendToDepot(VehicleType type)
{
return _send_to_depot_proc_table[type];
}
static inline uint32 GetCmdSendToDepot(const BaseVehicle *v)
{
return GetCmdSendToDepot(v->type);
}
bool EnsureNoVehicleOnGround(TileIndex tile);
void StopAllVehicles();
extern VehicleID _vehicle_id_ctr_day;
extern const Vehicle *_place_clicked_vehicle;
extern VehicleID _new_vehicle_id;
extern uint16 _returned_refit_capacity;
extern byte _age_cargo_skip_counter;
bool CanVehicleUseStation(EngineID engine_type, const struct Station *st);
bool CanVehicleUseStation(const Vehicle *v, const struct Station *st);
void ReleaseDisastersTargetingVehicle(VehicleID vehicle);
#endif /* VEHICLE_FUNC_H */
|