X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Flibgame%2Fsystem.h;h=e4126a7d6676237789491ff03b760f9563998dec;hb=ff56a43aa3799aa3357f4deca4d6482fc25a6a41;hp=9899f7280d5863d9b5b0f23c5701147c81b4a29b;hpb=94b124e87edbd2e12d7b83f45254fcbfff8554cd;p=rocksndiamonds.git diff --git a/src/libgame/system.h b/src/libgame/system.h index 9899f728..e4126a7d 100644 --- a/src/libgame/system.h +++ b/src/libgame/system.h @@ -1,23 +1,21 @@ /*********************************************************** -* Rocks'n'Diamonds -- McDuffin Strikes Back! * +* Artsoft Retro-Game Library * *----------------------------------------------------------* -* ©1995 Artsoft Development * -* Holger Schemel * -* 33659 Bielefeld-Senne * -* Telefon: (0521) 493245 * -* eMail: aeglos@valinor.owl.de * -* aeglos@uni-paderborn.de * -* q99492@pbhrzx.uni-paderborn.de * +* (c) 1994-2000 Artsoft Entertainment * +* Holger Schemel * +* Detmolder Strasse 189 * +* 33604 Bielefeld * +* Germany * +* e-mail: info@artsoft.org * *----------------------------------------------------------* -* system.h * +* system.h * ***********************************************************/ #ifndef SYSTEM_H #define SYSTEM_H -/* -#include "libgame.h" -*/ +#include "platform.h" +#include "types.h" #if defined(PLATFORM_MSDOS) #include "msdos.h" @@ -73,6 +71,53 @@ #define REDRAWTILES_THRESHOLD (SCR_FIELDX * SCR_FIELDY / 2) +/* 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 + PAGEX2: 2. buffer for DOOR_1 + PAGEX3: buffer for animations +*/ + +#define DOOR_GFX_PAGESIZE (gfx.dxsize) +#define DOOR_GFX_PAGEX1 (0 * DOOR_GFX_PAGESIZE) +#define DOOR_GFX_PAGEX2 (1 * DOOR_GFX_PAGESIZE) +#define DOOR_GFX_PAGEX3 (2 * DOOR_GFX_PAGESIZE) +#define DOOR_GFX_PAGEX4 (3 * DOOR_GFX_PAGESIZE) +#define DOOR_GFX_PAGEX5 (4 * DOOR_GFX_PAGESIZE) +#define DOOR_GFX_PAGEX6 (5 * DOOR_GFX_PAGESIZE) +#define DOOR_GFX_PAGEX7 (6 * DOOR_GFX_PAGESIZE) +#define DOOR_GFX_PAGEX8 (7 * DOOR_GFX_PAGESIZE) +#define DOOR_GFX_PAGEY1 (0) +#define DOOR_GFX_PAGEY2 (gfx.dysize) + + /* type definitions */ typedef int (*EventFilter)(const Event *); @@ -121,6 +166,7 @@ struct AudioSystemInfo { boolean sound_available; boolean loops_available; + boolean sound_enabled; int soundserver_pipe[2]; int soundserver_pid; char *device_name; @@ -142,8 +188,36 @@ struct GfxInfo int vxsize, vysize; }; +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 */ +}; + -#if 0 /* ========================================================================= */ /* exported variables */ /* ========================================================================= */ @@ -154,6 +228,9 @@ 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; @@ -171,7 +248,6 @@ extern int redraw_tiles; extern int FrameCounter; -#endif /* function definitions */ @@ -207,6 +283,7 @@ inline boolean ChangeVideoModeIfNeeded(boolean); inline boolean OpenAudio(struct AudioSystemInfo *); inline void CloseAudio(struct AudioSystemInfo *); +inline void SetAudioMode(boolean); inline void InitEventFilter(EventFilter); inline boolean PendingEvent(void);