mirror of
https://github.com/JGRennison/OpenTTD-patches.git
synced 2024-11-16 00:12:51 +00:00
76 lines
1.5 KiB
C
76 lines
1.5 KiB
C
/* $Id$ */
|
|
|
|
/** @file cargotype.h Types/functions related to cargos. */
|
|
|
|
#ifndef CARGOTYPE_H
|
|
#define CARGOTYPE_H
|
|
|
|
#include "cargo_type.h"
|
|
#include "gfx_type.h"
|
|
#include "strings_type.h"
|
|
#include "landscape_type.h"
|
|
|
|
typedef uint32 CargoLabel;
|
|
|
|
enum TownEffect {
|
|
TE_NONE,
|
|
TE_PASSENGERS,
|
|
TE_MAIL,
|
|
TE_GOODS,
|
|
TE_WATER,
|
|
TE_FOOD,
|
|
};
|
|
|
|
|
|
struct CargoSpec {
|
|
uint8 bitnum;
|
|
CargoLabel label;
|
|
uint8 legend_colour;
|
|
uint8 rating_colour;
|
|
uint8 weight;
|
|
uint16 initial_payment;
|
|
uint8 transit_days[2];
|
|
|
|
bool is_freight;
|
|
TownEffect town_effect; ///< The effect this cargo type has on towns
|
|
uint16 multipliertowngrowth;
|
|
uint8 callback_mask;
|
|
|
|
StringID name;
|
|
StringID name_single;
|
|
StringID units_volume;
|
|
StringID quantifier;
|
|
StringID abbrev;
|
|
|
|
SpriteID sprite;
|
|
|
|
uint16 classes;
|
|
const struct GRFFile *grffile; ///< NewGRF where 'group' belongs to
|
|
const struct SpriteGroup *group;
|
|
|
|
bool IsValid() const;
|
|
};
|
|
|
|
|
|
extern uint32 _cargo_mask;
|
|
extern CargoSpec _cargo[NUM_CARGO];
|
|
|
|
|
|
/* Set up the default cargo types for the given landscape type */
|
|
void SetupCargoForClimate(LandscapeID l);
|
|
/* Retrieve cargo details for the given cargo ID */
|
|
const CargoSpec *GetCargo(CargoID c);
|
|
/* Get the cargo icon for a given cargo ID */
|
|
SpriteID GetCargoSprite(CargoID i);
|
|
/* Get the cargo ID with the cargo label */
|
|
CargoID GetCargoIDByLabel(CargoLabel cl);
|
|
CargoID GetCargoIDByBitnum(uint8 bitnum);
|
|
|
|
static inline bool IsCargoInClass(CargoID c, uint16 cc)
|
|
{
|
|
return (GetCargo(c)->classes & cc) != 0;
|
|
}
|
|
|
|
|
|
#endif /* CARGOTYPE_H */
|