rnd-20001203-5-src
authorHolger Schemel <info@artsoft.org>
Sun, 3 Dec 2000 22:42:54 +0000 (23:42 +0100)
committerHolger Schemel <info@artsoft.org>
Sat, 30 Aug 2014 08:35:25 +0000 (10:35 +0200)
29 files changed:
src/cartoons.c
src/game.c
src/init.c
src/libgame/Makefile
src/libgame/gadgets.c
src/libgame/gadgets.h
src/libgame/image.c
src/libgame/image.h
src/libgame/libgame.c [deleted file]
src/libgame/libgame.h
src/libgame/main_TMP.h [deleted symlink]
src/libgame/misc.c
src/libgame/misc.h
src/libgame/msdos.c
src/libgame/msdos.h
src/libgame/pcx.c
src/libgame/pcx.h
src/libgame/private.c [deleted file]
src/libgame/private.h [deleted file]
src/libgame/sdl.c
src/libgame/sound.c
src/libgame/sound.h
src/libgame/system.c
src/libgame/system.h
src/libgame/text.c
src/libgame/text.h
src/libgame/x11.c
src/main.c
src/main.h

index c2c0fea6a28a564ff0470b079d541f563d73a307..2ef229f14f023df4ce0bc4d43e3ce49f154b6cc9 100644 (file)
 *  cartoons.c                                              *
 ***********************************************************/
 
-#include "libgame/libgame.h"
-
 #include "cartoons.h"
 #include "main.h"
 #include "tools.h"
 
+
 static void HandleAnimation(int);
 static boolean AnimateToon(int, boolean);
 static void DrawAnim(Bitmap, GC, int, int, int, int, int, int, int, int);
index 3f95c2b01bae1a95797b78d3773e667595ed9bb6..fd89096ab4dd6259aa320061a3f290e44bca3533 100644 (file)
@@ -180,6 +180,7 @@ void GetPlayerConfig()
 
   setup.sound_simple = setup.sound;
 
+  SetAudioMode(setup.sound);
   InitJoysticks();
 }
 
index 8f30094d77fec06f1ff6edbfc9c09c265b02211f..8d9571c9a88834006fc2934aac026245de8c6f97 100644 (file)
@@ -148,14 +148,16 @@ void InitSound()
 
   OpenAudio(&audio);
 
+  AllocSoundArray(NUM_SOUNDS);
+
   for(i=0; i<NUM_SOUNDS; i++)
   {
-    Sound[i].name = sound_name[i];
-
-    if (!LoadSound(&Sound[i]))
+    if (!LoadSound(i, sound_name[i]))
     {
       audio.sound_available = FALSE;
       audio.loops_available = FALSE;
+      audio.sound_enabled = FALSE;
+
       return;
     }
   }
index c325fef5a5a28ea1768a25f4cb94302702d6d0d4..c9e2de4ee76ac515c237b29669f79678a319b176 100644 (file)
@@ -3,9 +3,7 @@
 # (c) 1995-2000 Holger Schemel, info@artsoft.org                              #
 #=============================================================================#
 
-SRCS = libgame.c       \
-       private.c       \
-       system.c        \
+SRCS = system.c        \
        gadgets.c       \
        text.c          \
        sound.c         \
@@ -17,9 +15,7 @@ SRCS =        libgame.c       \
        x11.c           \
        sdl.c
 
-OBJS = libgame.o       \
-       private.o       \
-       system.o        \
+OBJS = system.o        \
        gadgets.o       \
        text.o          \
        sound.o         \
index bace632babb8573e8fbf73fa306652f2033ce96f..a73564b6b006c1e0e67d4e960188e28b62f2d4b8 100644 (file)
@@ -14,9 +14,9 @@
 #include <stdarg.h>
 #include <string.h>
 
-#include "libgame.h"
-
 #include "gadgets.h"
+#include "text.h"
+#include "misc.h"
 
 
 /* values for DrawGadget() */
index ccac2373c83117f7354287d424426480cc4c47ed..398d97c7de17df31dbecd9f590029a902737af01 100644 (file)
@@ -14,7 +14,7 @@
 #ifndef GADGETS_H
 #define GADGETS_H
 
-#include "libgame.h"
+#include "system.h"
 
 
 #define GADGET_FRAME_DELAY     150     /* delay between gadget actions */
index b83de19fa7dd4de39f0edba563d4ded9be5ba4d9..6a6d5a1dbbcff652b8df2f55db1f846174b89e86 100644 (file)
 *  image.c                                                 *
 ***********************************************************/
 
-#include "platform.h"
-
-#if defined(TARGET_X11)
-
 #include "image.h"
 #include "pcx.h"
 #include "misc.h"
 
+
+#if defined(TARGET_X11)
+
 /* for MS-DOS/Allegro, exclude all except newImage() and freeImage() */
 
 Image *newImage(unsigned int width, unsigned int height, unsigned int depth)
index 1257dda1ca2750eb7ec218aa44656efd9656e870..716ba0f56c7d0ad59b3178789d677aed14188980 100644 (file)
 #ifndef IMAGE_H
 #define IMAGE_H
 
-#include "platform.h"
-
-#ifndef TARGET_SDL
-
-#include "types.h"
 #include "system.h"
 
-/*
-#include "types.h"
-#include "x11.h"
-*/
+
+#if defined(TARGET_X11)
 
 #define MAX_COLORS     256     /* maximal number of colors for each image */
 
@@ -64,5 +57,6 @@ void freeImage(Image *);
 void freeXImage(Image *, XImageInfo *);
 int Read_PCX_to_Pixmap(Display *, Window, GC, char *, Pixmap *, Pixmap *);
 
-#endif /* !TARGET_SDL */
+#endif /* TARGET_X11 */
+
 #endif /* IMAGE_H */
diff --git a/src/libgame/libgame.c b/src/libgame/libgame.c
deleted file mode 100644 (file)
index 00d7c13..0000000
+++ /dev/null
@@ -1,45 +0,0 @@
-/***********************************************************
-*  Rocks'n'Diamonds -- McDuffin Strikes Back!              *
-*----------------------------------------------------------*
-*  (c) 1995-98 Artsoft Entertainment                       *
-*              Holger Schemel                              *
-*              Oststrasse 11a                              *
-*              33604 Bielefeld                             *
-*              phone: ++49 +521 290471                     *
-*              email: aeglos@valinor.owl.de                *
-*----------------------------------------------------------*
-*  libgame.c                                               *
-***********************************************************/
-
-#include "libgame.h"
-
-
-/* ========================================================================= */
-/* exported variables                                                        */
-/* ========================================================================= */
-
-struct ProgramInfo     program;
-struct OptionInfo      options;
-struct VideoSystemInfo video;
-struct AudioSystemInfo audio;
-struct GfxInfo         gfx;
-
-struct LevelDirInfo    *leveldir_first = NULL;
-struct LevelDirInfo    *leveldir_current = NULL;
-
-Display        *display = NULL;
-Visual        *visual = NULL;
-int            screen = 0;
-Colormap       cmap = None;
-
-DrawWindow     window = NULL;
-DrawBuffer     backbuffer = NULL;
-DrawBuffer     drawto = NULL;
-
-int            button_status = MB_NOT_PRESSED;
-boolean                motion_status = FALSE;
-
-int            redraw_mask = REDRAW_NONE;
-int            redraw_tiles = 0;
-
-int            FrameCounter = 0;
index e8956034534b13b741986acc5b26263d128b8135..94f21f46c65b981e87b214470a39d04ba9624500 100644 (file)
@@ -16,7 +16,6 @@
 
 #include "platform.h"
 #include "types.h"
-#include "private.h"
 #include "system.h"
 #include "random.h"
 #include "gadgets.h"
 #include "pcx.h"
 #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
-   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)
-
-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 */
diff --git a/src/libgame/main_TMP.h b/src/libgame/main_TMP.h
deleted file mode 120000 (symlink)
index 31e337c..0000000
+++ /dev/null
@@ -1 +0,0 @@
-../main.h
\ No newline at end of file
index b2ee47177cb9131596f4558f04c17d946091151b..2947adc4b000dc36a85a867908559b56e424492d 100644 (file)
 #include <sys/param.h>
 #endif
 
-#include "libgame.h"
-
 #include "misc.h"
+#include "random.h"
 
-#if 0
-#include "joystick_TMP.h"
-#endif
 
 #if defined(PLATFORM_MSDOS)
 volatile unsigned long counter = 0;
index 28b073ff0b3e5a5ce7bfb818acbdfb85305618e5..f838df1a9ea7fec89508c41495cf875b902f0b77 100644 (file)
@@ -17,7 +17,8 @@
 #include <stdlib.h>
 #include <stdio.h>
 
-#include "libgame.h"
+#include "system.h"
+
 
 /* values for InitCounter() and Counter() */
 #define INIT_COUNTER                   0
index b3137b4a5bc7ecc98eb20e536503e1614b6f205b..16bbe771c3024842a5e62a1070269aa3938eabbe 100644 (file)
 *  msdos.c                                                 *
 ***********************************************************/
 
-#include "libgame.h"
+#include "system.h"
+
 
 #if defined(PLATFORM_MSDOS)
 
+#include "sound.h"
+#include "misc.h"
+#include "pcx.h"
+
 #define AllegroDefaultScreen() (display->screens[display->default_screen])
 
 /* allegro driver declarations */
@@ -915,7 +920,7 @@ void XAutoRepeatOff(Display *display)
   keyboard_auto_repeat = FALSE;
 }
 
-boolean MSDOSOpenAudio(void)
+Bool MSDOSOpenAudio(void)
 {
   return allegro_init_audio();
 }
index c265b0d7cebab54133634387633ad12df4146114..7523ef4029eb32667ba4f54453090b70d5f5184d 100644 (file)
@@ -18,6 +18,7 @@
 #include <time.h>
 #include "allegro.h"
 
+
 /* symbol 'window' is defined in DJGPP cross-compiler in libc.a(conio.o) */
 #define window window_djgpp
 
@@ -708,7 +709,7 @@ Bool XQueryPointer(Display *, Window, Window *, Window *, int *, int *,
 void XAutoRepeatOn(Display *);
 void XAutoRepeatOff(Display *);
 
-boolean MSDOSOpenAudio(void);
+Bool MSDOSOpenAudio(void);
 void MSDOSCloseAudio(void);
 
 void NetworkServer(int, int);
index b075940c8447a0a273938c63cb0ce5ddc325b6ad..6763edd3835d6e18a87993c8489cd08e24cb252a 100644 (file)
 
 #ifndef TARGET_SDL
 
+#include <stdio.h>
+
 #include "pcx.h"
-#include "image.h"
 #include "misc.h"
 
+
 #define PCX_DEBUG              FALSE
 
 #define PCX_MAGIC              0x0a    /* first byte in a PCX image file    */
index f214971b76aa0658cb9f4d66c857da758bf70680..304672fe2834f0eab0f344dec1677531e520ad08 100644 (file)
@@ -14,7 +14,9 @@
 #ifndef PCX_H
 #define PCX_H
 
-#include "libgame.h"
+#include "system.h"
+#include "image.h"
+
 
 #if !defined(TARGET_SDL)
 
diff --git a/src/libgame/private.c b/src/libgame/private.c
deleted file mode 100644 (file)
index 90de58a..0000000
+++ /dev/null
@@ -1,22 +0,0 @@
-/***********************************************************
-*  Rocks'n'Diamonds -- McDuffin Strikes Back!              *
-*----------------------------------------------------------*
-*  (c) 1995-98 Artsoft Entertainment                       *
-*              Holger Schemel                              *
-*              Oststrasse 11a                              *
-*              33604 Bielefeld                             *
-*              phone: ++49 +521 290471                     *
-*              email: aeglos@valinor.owl.de                *
-*----------------------------------------------------------*
-*  private.c                                               *
-***********************************************************/
-
-#include "libgame.h"
-
-#if 0
-Display        *display;
-Visual        *visual;
-int            screen;
-
-DrawWindow     window = None;
-#endif
diff --git a/src/libgame/private.h b/src/libgame/private.h
deleted file mode 100644 (file)
index e79f00d..0000000
+++ /dev/null
@@ -1,27 +0,0 @@
-/***********************************************************
-*  Rocks'n'Diamonds -- McDuffin Strikes Back!              *
-*----------------------------------------------------------*
-*  (c) 1995-98 Artsoft Entertainment                       *
-*              Holger Schemel                              *
-*              Oststrasse 11a                              *
-*              33604 Bielefeld                             *
-*              phone: ++49 +521 290471                     *
-*              email: aeglos@valinor.owl.de                *
-*----------------------------------------------------------*
-*  private.h                                               *
-***********************************************************/
-
-#ifndef PRIVATE_H
-#define PRIVATE_H
-
-#include "libgame.h"
-
-#if 0
-extern Display        *display;
-extern Visual         *visual;
-extern int             screen;
-
-extern DrawWindow      window;
-#endif
-
-#endif /* PRIVATE_H */
index 19526fe0b5a3c1ff1847f019a7e2e0ed302db8cf..fed2a65e122f58ce3b70a59fbac3cff08e3e374e 100644 (file)
 *  sdl.c                                                   *
 ***********************************************************/
 
-#include "libgame.h"
+#include "system.h"
+#include "misc.h"
 
-#ifdef TARGET_SDL
+
+#if defined(TARGET_SDL)
 
 inline void SDLInitVideoDisplay(void)
 {
index 745e3cd9d9004c64bc92bffbff100ae56c9fb613..1cf7e5f1baeaa86cce0188ce2676d73132c0d28e 100644 (file)
 *  sound.c                                                 *
 ***********************************************************/
 
-#include "libgame.h"
-
-#include "main_TMP.h"
+#include <sys/time.h>
+#include <unistd.h>
+#include <fcntl.h>
 
 #include "sound.h"
 #include "misc.h"
 
+
+static int num_sounds = 0;
+static struct SampleInfo *Sound = NULL;
+
+
 /*** THE STUFF BELOW IS ONLY USED BY THE SOUND SERVER CHILD PROCESS ***/
 
 static int playing_sounds = 0;
@@ -101,6 +106,7 @@ void UnixOpenAudio(struct AudioSystemInfo *audio)
 
   audio->device_name = audio_device_name[i];
   audio->sound_available = TRUE;
+  audio->sound_enabled = TRUE;
 
 #if defined(AUDIO_STREAMING_DSP)
   audio->loops_available = TRUE;
@@ -785,11 +791,18 @@ static int ulaw_to_linear(unsigned char ulawbyte)
 
 /*** THE STUFF BELOW IS ONLY USED BY THE MAIN PROCESS ***/
 
+void AllocSoundArray(int num)
+{
+  num_sounds = num;
+  Sound = checked_calloc(num_sounds * sizeof(struct SampleInfo));
+}
+
 #define CHUNK_ID_LEN            4       /* IFF style chunk id length */
 #define WAV_HEADER_SIZE                20      /* size of WAV file header */
 
-boolean LoadSound(struct SampleInfo *snd_info)
+boolean LoadSound(int sound_nr, char *sound_name)
 {
+  struct SampleInfo *snd_info = &Sound[sound_nr];
   char filename[256];
   char *sound_ext = "wav";
 #if !defined(TARGET_SDL)
@@ -802,6 +815,8 @@ boolean LoadSound(struct SampleInfo *snd_info)
 #endif
 #endif
 
+  snd_info->name = sound_name;
+
   sprintf(filename, "%s/%s/%s.%s",
          options.ro_base_directory, SOUNDS_DIRECTORY,
          snd_info->name, sound_ext);
@@ -907,7 +922,7 @@ void PlaySoundExt(int nr, int volume, int stereo, boolean loop)
 {
   struct SoundControl snd_ctrl = emptySoundControl;
 
-  if (!audio.sound_available || !setup.sound)
+  if (!audio.sound_available || !audio.sound_enabled)
     return;
 
   if (volume<PSND_MIN_VOLUME)
@@ -940,7 +955,7 @@ void PlaySoundExt(int nr, int volume, int stereo, boolean loop)
   if (write(audio.soundserver_pipe[1], &snd_ctrl, sizeof(snd_ctrl)) < 0)
   {
     Error(ERR_WARN, "cannot pipe to child process - no sounds");
-    audio.sound_available = FALSE;
+    audio.sound_available = audio.sound_enabled = FALSE;
     return;
   }
 #else
@@ -1005,7 +1020,7 @@ void StopSoundExt(int nr, int method)
   if (write(audio.soundserver_pipe[1], &snd_ctrl, sizeof(snd_ctrl)) < 0)
   {
     Error(ERR_WARN, "cannot pipe to child process - no sounds");
-    audio.sound_available = FALSE;
+    audio.sound_available = audio.sound_enabled = FALSE;
     return;
   }
 #else
index 238a5b19dfea138b47a1448b8d35f221ec39c0ea..f75ad477ae09737709b69b927114a82f59022d06 100644 (file)
 
 #include <math.h>
 
+#include "platform.h"
+
 #if defined(PLATFORM_LINUX)
 #include <sys/ioctl.h>
 #endif
 
-#define SND_BLOCKSIZE 4096
-
 #if defined(PLATFORM_LINUX)
 #include <linux/soundcard.h>
 #elif defined(PLATFORM_FREEBSD)
 #include <machine/soundcard.h>
 #elif defined(PLATFORM_HPUX)
 #include <sys/audio.h>
-#undef  SND_BLOCKSIZE
-#define SND_BLOCKSIZE 32768
 #endif
 
-#include "libgame.h"
+#include "system.h"
+
 
 #if defined(PLATFORM_LINUX) || defined(PLATFORM_FREEBSD) || defined(VOXWARE)
 #define AUDIO_STREAMING_DSP
 #define MAX_SOUNDS_PLAYING     8
 #endif
 
+#if !defined(PLATFORM_HPUX)
+#define SND_BLOCKSIZE 4096
+#else
+#define SND_BLOCKSIZE 32768
+#endif
+
 /* some values for PlaySound(), StopSound() and friends */
 #if !defined(PLATFORM_MSDOS)
 #define PSND_SILENCE           0
@@ -155,7 +160,8 @@ void UnixCloseAudio(struct AudioSystemInfo *);
 void SoundServer(void);
 
 /* sound client functions */
-boolean LoadSound(struct SampleInfo *);
+void AllocSoundArray(int);
+boolean LoadSound(int, char *);
 void PlaySound(int);
 void PlaySoundStereo(int, int);
 void PlaySoundLoop(int);
index 0304be812529fa19b895a5eb9d59bbd11e3db7bb..30c3bc5cdcbbb024e4420650001ea5a29e5688c6 100644 (file)
 #include <fcntl.h>
 #endif
 
-#include "libgame.h"
+#include "system.h"
+#include "sound.h"
+#include "misc.h"
+
 
-#if 0
 /* ========================================================================= */
 /* exported variables                                                        */
 /* ========================================================================= */
@@ -33,6 +35,9 @@ struct VideoSystemInfo        video;
 struct AudioSystemInfo audio;
 struct GfxInfo         gfx;
 
+struct LevelDirInfo    *leveldir_first = NULL;
+struct LevelDirInfo    *leveldir_current = NULL;
+
 Display        *display = NULL;
 Visual        *visual = NULL;
 int            screen = 0;
@@ -50,7 +55,6 @@ int           redraw_tiles = 0;
 
 int            FrameCounter = 0;
 
-#endif
 
 /* ========================================================================= */
 /* init functions                                                            */
@@ -431,6 +435,7 @@ inline boolean OpenAudio(struct AudioSystemInfo *audio)
 {
   audio->sound_available = FALSE;
   audio->loops_available = FALSE;
+  audio->sound_enabled = FALSE;
   audio->soundserver_pipe[0] = audio->soundserver_pipe[1] = 0;
   audio->soundserver_pid = 0;
   audio->device_name = NULL;
@@ -441,12 +446,14 @@ inline boolean OpenAudio(struct AudioSystemInfo *audio)
   {
     audio->sound_available = TRUE;
     audio->loops_available = TRUE;
+    audio->sound_enabled = TRUE;
   }
 #elif defined(PLATFORM_MSDOS)
   if (MSDOSOpenAudio())
   {
     audio->sound_available = TRUE;
     audio->loops_available = TRUE;
+    audio->sound_enabled = TRUE;
   }
 #elif defined(PLATFORM_UNIX)
   UnixOpenAudio(audio);
@@ -467,6 +474,15 @@ inline void CloseAudio(struct AudioSystemInfo *audio)
 
   audio->sound_available = FALSE;
   audio->loops_available = FALSE;
+  audio->sound_enabled = FALSE;
+}
+
+inline void SetAudioMode(boolean enabled)
+{
+  if (!audio.sound_available)
+    return;
+
+  audio.sound_enabled = enabled;
 }
 
 
index 9899f7280d5863d9b5b0f23c5701147c81b4a29b..26565af0ac320ce16d0f805a12461f24ea93fbfe 100644 (file)
@@ -15,9 +15,8 @@
 #ifndef SYSTEM_H
 #define SYSTEM_H
 
-/*
-#include "libgame.h"
-*/
+#include "platform.h"
+#include "types.h"
 
 #if defined(PLATFORM_MSDOS)
 #include "msdos.h"
 #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 +167,7 @@ struct AudioSystemInfo
 {
   boolean sound_available;
   boolean loops_available;
+  boolean sound_enabled;
   int soundserver_pipe[2];
   int soundserver_pid;
   char *device_name;
@@ -142,8 +189,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 +229,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 +249,6 @@ extern int          redraw_tiles;
 
 extern int             FrameCounter;
 
-#endif
 
 /* function definitions */
 
@@ -207,6 +284,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);
index 6dfdf7f86ac39eccfa40fd2b491567a0d9bbad45..aab18ef6b4eca6dd5ff42a9c0ca8a5f3b0524e58 100644 (file)
 *  text.c                                                  *
 ***********************************************************/
 
+#include <stdio.h>
 #include <stdarg.h>
 
-#include "libgame.h"
+#include "text.h"
 
 
 /* ========================================================================= */
index 4aee0437ae5b46e902aee0f69cfce29b4b73db99..7bbad09cc4827b2eaf317d053f08d412657aadea 100644 (file)
@@ -14,7 +14,8 @@
 #ifndef TEXT_H
 #define TEXT_H
 
-#include "libgame.h"
+#include "system.h"
+
 
 /* font types */
 #define FS_SMALL               0
index fef8bcf9ed2e74590ac69efa2bc97bde04f0fef8..931e9d5c5a62e6aba813fbe764b9661c2010a646 100644 (file)
@@ -12,7 +12,9 @@
 *  x11.c                                                   *
 ***********************************************************/
 
-#include "libgame.h"
+#include "system.h"
+#include "misc.h"
+
 
 #if defined(TARGET_X11)
 
index 40a19333c34cb2f928e5ca636a988e0cfeaa4473..427a74ebe0c8d17c98fe8a34a90fdee245363252 100644 (file)
@@ -142,7 +142,9 @@ struct LevelDirInfo    *leveldir_first = NULL, *leveldir_current = NULL;
 struct LevelInfo       level;
 struct PlayerInfo      stored_player[MAX_PLAYERS], *local_player = NULL;
 struct HiScore         highscore[MAX_SCORE_ENTRIES];
+#if 0
 struct SampleInfo      Sound[NUM_SOUNDS];
+#endif
 struct TapeInfo                tape;
 
 #if 0
index b41c3829ae6ff7b3cf92d78dcfff1ba2914d48cb..6c0ec325a8d19d106f3d0ab51b6de6c0678b7c0d 100644 (file)
@@ -28,9 +28,7 @@
 #define DEBUG_TIMING   0
 #endif
 
-#if 0
 #include "libgame/libgame.h"
-#endif
 
 #ifndef FALSE
 #define FALSE          0
@@ -521,7 +519,9 @@ extern struct LevelInfo             level;
 extern struct PlayerInfo       stored_player[], *local_player;
 extern struct HiScore          highscore[];
 extern struct TapeInfo         tape;
+#if 0
 extern struct SampleInfo       Sound[];
+#endif
 extern struct JoystickInfo     joystick[];
 
 #if 0