X-Git-Url: https://git.artsoft.org/?p=rocksndiamonds.git;a=blobdiff_plain;f=src%2Flibgame%2Fmisc.h;h=34499610e2633ea978a4b11553a32cceb9a34105;hp=6213ae1becb60e190251707fabe826ba1c3d5bdd;hb=4a8368abd71c718621838773eed914b5bbd4e1d8;hpb=e20a5f598ac5ef3280c4a881fe63e44463dff086 diff --git a/src/libgame/misc.h b/src/libgame/misc.h index 6213ae1b..34499610 100644 --- a/src/libgame/misc.h +++ b/src/libgame/misc.h @@ -1,7 +1,7 @@ /*********************************************************** * Artsoft Retro-Game Library * *----------------------------------------------------------* -* (c) 1994-2001 Artsoft Entertainment * +* (c) 1994-2006 Artsoft Entertainment * * Holger Schemel * * Detmolder Strasse 189 * * 33604 Bielefeld * @@ -20,27 +20,30 @@ #include "system.h" -/* functions for version handling */ -#define VERSION_IDENT(x,y,z) ((x) * 10000 + (y) * 100 + (z)) -#define VERSION_MAJOR(x) ((x) / 10000) -#define VERSION_MINOR(x) (((x) % 10000) / 100) -#define VERSION_PATCH(x) ((x) % 100) - /* values for InitCounter() and Counter() */ #define INIT_COUNTER 0 #define READ_COUNTER 1 /* values for InitRND() */ -#define NEW_RANDOMIZE -1 +#define NEW_RANDOMIZE 0 + +#define RANDOM_ENGINE 0 +#define RANDOM_SIMPLE 1 + +#define InitEngineRandom(seed) init_random_number(RANDOM_ENGINE, seed) +#define InitSimpleRandom(seed) init_random_number(RANDOM_SIMPLE, seed) +#define GetEngineRandom(max) get_random_number(RANDOM_ENGINE, max) +#define GetSimpleRandom(max) get_random_number(RANDOM_SIMPLE, max) /* values for Error() */ -#define ERR_RETURN 0 -#define ERR_WARN (1 << 0) -#define ERR_EXIT (1 << 1) -#define ERR_HELP (1 << 2) -#define ERR_SOUND_SERVER (1 << 3) -#define ERR_NETWORK_SERVER (1 << 4) -#define ERR_NETWORK_CLIENT (1 << 5) +#define ERR_INFO 0 +#define ERR_INFO_LINE (1 << 0) +#define ERR_WARN (1 << 1) +#define ERR_EXIT (1 << 2) +#define ERR_HELP (1 << 3) +#define ERR_SOUND_SERVER (1 << 4) +#define ERR_NETWORK_SERVER (1 << 5) +#define ERR_NETWORK_CLIENT (1 << 6) #define ERR_FROM_SERVER (ERR_SOUND_SERVER | ERR_NETWORK_SERVER) #define ERR_EXIT_HELP (ERR_EXIT | ERR_HELP) #define ERR_EXIT_SOUND_SERVER (ERR_EXIT | ERR_SOUND_SERVER) @@ -51,38 +54,30 @@ #define BYTE_ORDER_BIG_ENDIAN 0 #define BYTE_ORDER_LITTLE_ENDIAN 1 +/* values for cursor bitmap creation */ +#define BIT_ORDER_MSB 0 +#define BIT_ORDER_LSB 1 + /* values for createDirectory() */ #define PERMS_PRIVATE 0 #define PERMS_PUBLIC 1 /* values for general file handling stuff */ #define MAX_FILENAME_LEN 256 -#define MAX_LINE_LEN 1000 +#define MAX_LINE_LEN 1024 -/* values for setup file stuff */ -#define TYPE_BOOLEAN 1 -#define TYPE_SWITCH 2 -#define TYPE_KEY 3 -#define TYPE_INTEGER 4 -#define TYPE_STRING 5 +/* values for general username handling stuff */ +#define MAX_USERNAME_LEN 1024 -#define TOKEN_STR_FILE_IDENTIFIER "file_identifier" -#define TOKEN_VALUE_POSITION 30 - -struct SetupFileList -{ - char *token; - char *value; - struct SetupFileList *next; -}; +void fprintf_line(FILE *, char *, int); +void printf_line(char *, int); +void printf_line_with_prefix(char *, char *, int); +char *int2str(int, int); +char *i_to_a(unsigned int); +int log_2(unsigned int); -struct TokenInfo -{ - int type; - void *value; - char *text; -}; +boolean getTokenValueFromString(char *, char **, char **); void InitCounter(void); unsigned long Counter(void); @@ -90,77 +85,127 @@ void Delay(unsigned long); boolean FrameReached(unsigned long *, unsigned long); boolean DelayReached(unsigned long *, unsigned long); void WaitUntilDelayReached(unsigned long *, unsigned long); -char *int2str(int, int); -unsigned int SimpleRND(unsigned int); -unsigned int RND(unsigned int); -unsigned int InitRND(long); + +unsigned int init_random_number(int, long); +unsigned int get_random_number(int, int); + char *getLoginName(void); char *getRealName(void); -char *getHomeDir(void); + +time_t getFileTimestampEpochSeconds(char *); + +char *getBasePath(char *); +char *getBaseName(char *); +char *getBaseNamePtr(char *); + +char *getStringCat2WithSeparator(char *, char *, char *); +char *getStringCat3WithSeparator(char *, char *, char *, char *); +char *getStringCat2(char *, char *); +char *getStringCat3(char *, char *, char *); char *getPath2(char *, char *); char *getPath3(char *, char *, char*); char *getStringCopy(char *); +char *getStringCopyN(char *, int); char *getStringToLower(char *); -void GetOptions(char **); +void setString(char **, char *); +boolean strEqual(char *, char *); +boolean strEqualN(char *, char *, int); +boolean strPrefix(char *, char *); +boolean strSuffix(char *, char *); +boolean strPrefixLower(char *, char *); +boolean strSuffixLower(char *, char *); + +void GetOptions(char **, void (*print_usage_function)(void)); + +void SetError(char *, ...); +char *GetError(void); void Error(int, char *, ...); + void *checked_malloc(unsigned long); void *checked_calloc(unsigned long); void *checked_realloc(void *, unsigned long); -short getFile16BitInteger(FILE *, int); -void putFile16BitInteger(FILE *, short, int); +void checked_free(void *); +void clear_mem(void *, unsigned long); + +void swap_numbers(int *, int *); +void swap_number_pairs(int *, int *, int *, int *); + +int getFile8BitInteger(FILE *); +int putFile8BitInteger(FILE *, int); +int getFile16BitInteger(FILE *, int); +int putFile16BitInteger(FILE *, int, int); int getFile32BitInteger(FILE *, int); -void putFile32BitInteger(FILE *, int, int); +int putFile32BitInteger(FILE *, int, int); + boolean getFileChunk(FILE *, char *, int *, int); -void putFileChunk(FILE *, char *, int, int); +int putFileChunk(FILE *, char *, int, int); +int getFileVersion(FILE *); +int putFileVersion(FILE *, int); + +void ReadBytesFromFile(FILE *, byte *, unsigned long); +void WriteBytesToFile(FILE *, byte *, unsigned long); + void ReadUnusedBytesFromFile(FILE *, unsigned long); void WriteUnusedBytesToFile(FILE *, unsigned long); +#define getFile8Bit(f) getFile8BitInteger(f) +#define putFile8Bit(f,x) putFile8BitInteger(f,x) +#define getFile16BitBE(f) getFile16BitInteger(f,BYTE_ORDER_BIG_ENDIAN) +#define getFile16BitLE(f) getFile16BitInteger(f,BYTE_ORDER_LITTLE_ENDIAN) +#define putFile16BitBE(f,x) putFile16BitInteger(f,x,BYTE_ORDER_BIG_ENDIAN) +#define putFile16BitLE(f,x) putFile16BitInteger(f,x,BYTE_ORDER_LITTLE_ENDIAN) +#define getFile32BitBE(f) getFile32BitInteger(f,BYTE_ORDER_BIG_ENDIAN) +#define getFile32BitLE(f) getFile32BitInteger(f,BYTE_ORDER_LITTLE_ENDIAN) +#define putFile32BitBE(f,x) putFile32BitInteger(f,x,BYTE_ORDER_BIG_ENDIAN) +#define putFile32BitLE(f,x) putFile32BitInteger(f,x,BYTE_ORDER_LITTLE_ENDIAN) + +#define getFileChunkBE(f,s,x) getFileChunk(f,s,x,BYTE_ORDER_BIG_ENDIAN) +#define getFileChunkLE(f,s,x) getFileChunk(f,s,x,BYTE_ORDER_LITTLE_ENDIAN) +#define putFileChunkBE(f,s,x) putFileChunk(f,s,x,BYTE_ORDER_BIG_ENDIAN) +#define putFileChunkLE(f,s,x) putFileChunk(f,s,x,BYTE_ORDER_LITTLE_ENDIAN) + char *getKeyNameFromKey(Key); char *getX11KeyNameFromKey(Key); +Key getKeyFromKeyName(char *); Key getKeyFromX11KeyName(char *); char getCharFromKey(Key); -char *getJoyNameFromJoySymbol(int); -int getJoySymbolFromJoyName(char *); -int getJoystickNrFromDeviceName(char *); - -struct LevelDirInfo *newLevelDirInfo(); -void pushLevelDirInfo(struct LevelDirInfo **, struct LevelDirInfo *); -int numLevelDirInfo(struct LevelDirInfo *); -boolean validLevelSeries(struct LevelDirInfo *); -struct LevelDirInfo *getFirstValidLevelSeries(struct LevelDirInfo *); -struct LevelDirInfo *getLevelDirInfoFirstGroupEntry(struct LevelDirInfo *); -int numLevelDirInfoInGroup(struct LevelDirInfo *); -int posLevelDirInfo(struct LevelDirInfo *); -struct LevelDirInfo *getLevelDirInfoFromPos(struct LevelDirInfo *, int); -struct LevelDirInfo *getLevelDirInfoFromFilename(char *); -void dumpLevelDirInfo(struct LevelDirInfo *, int); -void sortLevelDirInfo(struct LevelDirInfo **, - int (*compare_function)(const void *, const void *)); - -inline void swap_numbers(int *, int *); -inline void swap_number_pairs(int *, int *, int *, int *); - -char *getUserDataDir(void); -char *getSetupDir(void); -void createDirectory(char *, char *, int); -void InitUserDataDirectory(void); -void SetFilePermissions(char *, int); -int getFileVersionFromCookieString(const char *); -boolean checkCookieString(const char *, const char *); - -int get_string_integer_value(char *); -boolean get_string_boolean_value(char *); -char *getFormattedSetupEntry(char *, char *); -void freeSetupFileList(struct SetupFileList *); -char *getTokenValue(struct SetupFileList *, char *); -struct SetupFileList *loadSetupFileList(char *); -void checkSetupFileListIdentifier(struct SetupFileList *, char *); - -#if !defined(PLATFORM_UNIX) -void initErrorFile(); -FILE *openErrorFile(); +char getValidConfigValueChar(char); + +int get_integer_from_string(char *); +boolean get_boolean_from_string(char *); +int get_switch3_from_string(char *); + +ListNode *newListNode(void); +void addNodeToList(ListNode **, char *, void *); +void deleteNodeFromList(ListNode **, char *, void (*function)(void *)); +ListNode *getNodeFromKey(ListNode *, char *); +int getNumNodes(ListNode *); + +boolean fileExists(char *); +boolean FileIsGraphic(char *); +boolean FileIsSound(char *); +boolean FileIsMusic(char *); +boolean FileIsArtworkType(char *, int); + +char *get_mapped_token(char *); + +int get_parameter_value(char *, char *, int); + +struct ScreenModeInfo *get_screen_mode_from_string(char *); +void get_aspect_ratio_from_screen_mode(struct ScreenModeInfo *, int *x, int *y); + +struct FileInfo *getFileListFromConfigList(struct ConfigInfo *, + struct ConfigTypeInfo *, + char **, int); +void LoadArtworkConfig(struct ArtworkListInfo *); +void ReloadCustomArtworkList(struct ArtworkListInfo *); +void FreeCustomArtworkLists(struct ArtworkListInfo *); + +char *getErrorFilename(char *); +void openErrorFile(); +void closeErrorFile(); void dumpErrorFile(); -#endif +void NotifyUserAboutErrorFile(); void debug_print_timestamp(int, char *);