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