glx@7452: /* $Id$ */ glx@7452: #ifndef NEWGRF_TOWNNAME_H glx@7452: #define NEWGRF_TOWNNAME_H glx@7452: rubidium@8760: #include "strings_type.h" rubidium@8760: glx@7452: /** @file newgrf_townname.h glx@7452: * Header of Action 0F "universal holder" structure and functions glx@7452: */ glx@7452: glx@7452: struct NamePart { glx@7452: byte prob; ///< The relative probablity of the following name to appear in the bottom 7 bits. glx@7452: union { glx@7452: char *text; ///< If probability bit 7 is clear glx@7452: byte id; ///< If probability bit 7 is set glx@7452: } data; glx@7452: }; glx@7452: glx@7452: struct NamePartList { glx@7452: byte partcount; glx@7452: byte bitstart; glx@7452: byte bitcount; glx@7452: uint16 maxprob; glx@7452: NamePart *parts; glx@7452: }; glx@7452: glx@7452: struct GRFTownName { glx@7452: uint32 grfid; glx@7452: byte nb_gen; glx@7452: byte id[128]; glx@7452: StringID name[128]; glx@7452: byte nbparts[128]; glx@7452: NamePartList *partlist[128]; glx@7452: GRFTownName *next; glx@7452: }; glx@7452: glx@7452: GRFTownName *AddGRFTownName(uint32 grfid); glx@7452: GRFTownName *GetGRFTownName(uint32 grfid); glx@7452: void DelGRFTownName(uint32 grfid); glx@7452: void CleanUpGRFTownNames(); glx@7452: StringID *GetGRFTownNameList(); glx@7452: char *GRFTownNameGenerate(char *buf, uint32 grfid, uint16 gen, uint32 seed, const char *last); glx@7452: uint32 GetGRFTownNameId(int gen); glx@7452: uint16 GetGRFTownNameType(int gen); glx@7452: glx@7452: #endif /* NEWGRF_TOWNNAME_H */