cargotype.h

Go to the documentation of this file.
00001 /* $Id: cargotype.h 11862 2008-01-15 13:19:49Z rubidium $ */
00002 
00005 #ifndef CARGOTYPE_H
00006 #define CARGOTYPE_H
00007 
00008 #include "cargo_type.h"
00009 #include "gfx_type.h"
00010 #include "newgrf_string_type.h"
00011 
00012 typedef uint32 CargoLabel;
00013 
00014 enum TownEffect {
00015   TE_NONE,
00016   TE_PASSENGERS,
00017   TE_MAIL,
00018   TE_GOODS,
00019   TE_WATER,
00020   TE_FOOD,
00021 };
00022 
00023 
00024 struct CargoSpec {
00025   uint8 bitnum;
00026   CargoLabel label;
00027   uint32 grfid;
00028   uint8 legend_colour;
00029   uint8 rating_colour;
00030   uint8 weight;
00031   uint16 initial_payment;
00032   uint8 transit_days[2];
00033 
00034   bool is_freight;
00035   TownEffect town_effect; 
00036   uint16 multipliertowngrowth;
00037   uint8 callback_mask;
00038 
00039   GRFMappedStringID name;
00040   GRFMappedStringID name_single;
00041   GRFMappedStringID units_volume;
00042   GRFMappedStringID quantifier;
00043   GRFMappedStringID abbrev;
00044 
00045   SpriteID sprite;
00046 
00047   uint16 classes;
00048   const struct SpriteGroup *group;
00049 
00050   bool IsValid() const;
00051 };
00052 
00053 
00054 extern uint32 _cargo_mask;
00055 extern CargoSpec _cargo[NUM_CARGO];
00056 
00057 
00058 /* Set up the default cargo types for the given landscape type */
00059 void SetupCargoForClimate(LandscapeID l);
00060 /* Retrieve cargo details for the given cargo ID */
00061 const CargoSpec *GetCargo(CargoID c);
00062 /* Get the cargo ID with the cargo label */
00063 CargoID GetCargoIDByLabel(CargoLabel cl);
00064 CargoID GetCargoIDByBitnum(uint8 bitnum);
00065 
00066 static inline bool IsCargoInClass(CargoID c, uint16 cc)
00067 {
00068   return (GetCargo(c)->classes & cc) != 0;
00069 }
00070 
00071 
00072 #endif /* CARGOTYPE_H */

Generated on Wed Oct 1 17:03:20 2008 for openttd by  doxygen 1.5.6