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