X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Flibgame%2Flibgame.h;h=e8956034534b13b741986acc5b26263d128b8135;hb=94b124e87edbd2e12d7b83f45254fcbfff8554cd;hp=fd613b9ce9cd97339d5f81743b838d4dc571c92e;hpb=49221e59bff18cdfbef8c877b588280266ae5037;p=rocksndiamonds.git diff --git a/src/libgame/libgame.h b/src/libgame/libgame.h index fd613b9c..e8956034 100644 --- a/src/libgame/libgame.h +++ b/src/libgame/libgame.h @@ -27,6 +27,33 @@ #include "misc.h" +/* default name for empty highscore entry */ +#define EMPTY_PLAYER_NAME "no name" + +/* default name for unknown player names */ +#define ANONYMOUS_NAME "anonymous" + +/* default name for new levels */ +#define NAMELESS_LEVEL_NAME "nameless level" + +/* definitions for game sub-directories */ +#ifndef RO_GAME_DIR +#define RO_GAME_DIR "." +#endif + +#ifndef RW_GAME_DIR +#define RW_GAME_DIR "." +#endif + +#define RO_BASE_PATH RO_GAME_DIR +#define RW_BASE_PATH RW_GAME_DIR + +#define GRAPHICS_DIRECTORY "graphics" +#define SOUNDS_DIRECTORY "sounds" +#define LEVELS_DIRECTORY "levels" +#define TAPES_DIRECTORY "tapes" +#define SCORES_DIRECTORY "scores" + /* areas in bitmap PIX_DOOR */ /* meaning in PIX_DB_DOOR: (3 PAGEs) PAGEX1: 1. buffer for DOOR_1 @@ -46,4 +73,64 @@ #define DOOR_GFX_PAGEY1 (0) #define DOOR_GFX_PAGEY2 (gfx.dysize) +struct LevelDirInfo +{ + char *filename; /* level series single directory name */ + char *fullpath; /* complete path relative to level directory */ + char *basepath; /* absolute base path of level directory */ + char *name; /* level series name, as displayed on main screen */ + char *name_short; /* optional short name for level selection screen */ + char *name_sorting; /* optional sorting name for correct level sorting */ + char *author; /* level series author name levels without author */ + char *imported_from; /* optional comment for imported level series */ + int levels; /* number of levels in level series */ + int first_level; /* first level number (to allow start with 0 or 1) */ + int last_level; /* last level number (automatically calculated) */ + int sort_priority; /* sort levels by 'sort_priority' and then by name */ + boolean level_group; /* directory contains more level series directories */ + boolean parent_link; /* entry links back to parent directory */ + boolean user_defined; /* user defined levels are stored in home directory */ + boolean readonly; /* readonly levels can not be changed with editor */ + int color; /* color to use on selection screen for this level */ + char *class_desc; /* description of level series class */ + int handicap_level; /* number of the lowest unsolved level */ + int cl_first; /* internal control field for "choose level" screen */ + int cl_cursor; /* internal control field for "choose level" screen */ + + struct LevelDirInfo *node_parent; /* parent level directory info */ + struct LevelDirInfo *node_group; /* level group sub-directory info */ + struct LevelDirInfo *next; /* next level series structure node */ +}; + + +/* ========================================================================= */ +/* exported variables */ +/* ========================================================================= */ + +extern struct ProgramInfo program; +extern struct OptionInfo options; +extern struct VideoSystemInfo video; +extern struct AudioSystemInfo audio; +extern struct GfxInfo gfx; + +extern struct LevelDirInfo *leveldir_first; +extern struct LevelDirInfo *leveldir_current; + +extern Display *display; +extern Visual *visual; +extern int screen; +extern Colormap cmap; + +extern DrawWindow window; +extern DrawBuffer backbuffer; +extern DrawBuffer drawto; + +extern int button_status; +extern boolean motion_status; + +extern int redraw_mask; +extern int redraw_tiles; + +extern int FrameCounter; + #endif /* LIBGAME_H */