rnd-20001127-1-src
[rocksndiamonds.git] / src / init.c
index a8ce6a50bc357ce2dde3cede3b3535b47224973e..b95b99c290fa5c81e620e2dee5e2da680b7174e6 100644 (file)
@@ -35,7 +35,7 @@ struct PictureFileInfo
   boolean picture_with_mask;
 };
 
-#ifndef USE_SDL_LIBRARY
+#ifndef TARGET_SDL
 static int sound_process_id = 0;
 #endif
 
@@ -52,16 +52,16 @@ static void InitElementProperties(void);
 
 void OpenAll(int argc, char *argv[])
 {
-#if defined(MSDOS) || defined(WIN32)
+#if !defined(PLATFORM_UNIX)
   initErrorFile();
 #endif
 
   if (options.serveronly)
   {
-#ifdef WIN32
-    Error(ERR_WARN, "networking not supported in Windows version");
-#else
+#if defined(PLATFORM_UNIX)
     NetworkServer(options.server_port, options.serveronly);
+#else
+    Error(ERR_WARN, "networking not supported in Windows version");
 #endif
 
     /* never reached */
@@ -121,14 +121,14 @@ void InitLevelInfo()
 
 void InitNetworkServer()
 {
-#if !defined(MSDOS) && !defined(WIN32)
+#if defined(PLATFORM_UNIX)
   int nr_wanted;
 #endif
 
   if (!options.network)
     return;
 
-#if !defined(MSDOS) && !defined(WIN32)
+#if defined(PLATFORM_UNIX)
   nr_wanted = Request("Choose player", REQ_PLAYER | REQ_STAY_CLOSED);
 
   if (!ConnectToServer(options.server_host, options.server_port))
@@ -149,66 +149,31 @@ void InitSound()
   if (sound_status == SOUND_OFF)
     return;
 
-#ifdef USE_SDL_LIBRARY
-  /* initialize SDL audio */
-
-  if (SDL_Init(SDL_INIT_AUDIO) < 0)
+#if defined(TARGET_SDL)
+  if (InitAudio())
   {
-    Error(ERR_WARN, "SDL_Init() failed: %s", SDL_GetError());
-    sound_status = SOUND_OFF;
-    return;
+    sound_status = SOUND_AVAILABLE;
+    sound_loops_allowed = TRUE;
   }
-
-  if (Mix_OpenAudio(22050, AUDIO_S16, 2, 512) < 0)
-  {
-    Error(ERR_WARN, "Mix_OpenAudio() failed: %s", SDL_GetError());
-    sound_status = SOUND_OFF;
-    return;
-  }
-
-  Mix_Volume(-1, SDL_MIX_MAXVOLUME / 4);
-  Mix_VolumeMusic(SDL_MIX_MAXVOLUME / 4);
-
-  sound_status = SOUND_AVAILABLE;
-  sound_loops_allowed = TRUE;
-
-#else /* !USE_SDL_LIBRARY */
-
-#if !defined(MSDOS) && !defined(WIN32)
-  if (access(sound_device_name, W_OK) != 0)
+  else
   {
-    Error(ERR_WARN, "cannot access sound device - no sounds");
     sound_status = SOUND_OFF;
-    return;
   }
+#else /* !TARGET_SDL */
 
-  if ((sound_device = OpenAudio(sound_device_name)) < 0)
-  {
-    Error(ERR_WARN, "cannot open sound device - no sounds");
-    sound_status = SOUND_OFF;
+#if defined(PLATFORM_UNIX)
+  if ((sound_status = CheckAudio(sound_device_name)) == SOUND_OFF)
     return;
-  }
-
-  close(sound_device);
-  sound_status = SOUND_AVAILABLE;
 
 #ifdef VOXWARE
   sound_loops_allowed = TRUE;
-
-  /*
-  setup.sound_loops_on = TRUE;
-  */
-
 #endif
-#else /* MSDOS || WIN32 */
-  sound_loops_allowed = TRUE;
 
-  /*
-  setup.sound_loops_on = TRUE;
-  */
+#else /* !PLATFORM_UNIX */
+  sound_loops_allowed = TRUE;
 
-#endif /* MSDOS || WIN32 */
-#endif /* !USE_SDL_LIBRARY */
+#endif /* !PLATFORM_UNIX */
+#endif /* !TARGET_SDL */
 
   for(i=0; i<NUM_SOUNDS; i++)
   {
@@ -221,11 +186,6 @@ void InitSound()
       return;
     }
   }
-
-#if 0
-  sound_status = SOUND_OFF;
-#endif
-
 }
 
 void InitSoundServer()
@@ -233,9 +193,8 @@ void InitSoundServer()
   if (sound_status == SOUND_OFF)
     return;
 
-#ifndef USE_SDL_LIBRARY
-
-#if !defined(MSDOS) && !defined(WIN32)
+#if !defined(TARGET_SDL)
+#if defined(PLATFORM_UNIX)
 
   if (pipe(sound_pipe)<0)
   {
@@ -261,18 +220,17 @@ void InitSoundServer()
   else                         /* we are parent */
     close(sound_pipe[0]);      /* no reading from pipe needed */
 
-#else /* MSDOS || WIN32 */
+#else /* !PLATFORM_UNIX */
 
   SoundServer();
 
-#endif /* MSDOS */
-
-#endif /* !USE_SDL_LIBRARY */
+#endif /* !PLATFORM_UNIX */
+#endif /* !TARGET_SDL */
 }
 
 void InitJoysticks()
 {
-#ifdef USE_SDL_JOYSTICK
+#if defined(TARGET_SDL)
   static boolean sdl_joystick_subsystem_initialized = FALSE;
 #endif
 
@@ -283,7 +241,7 @@ void InitJoysticks()
 
   joystick_status = JOYSTICK_OFF;
 
-#ifdef USE_SDL_JOYSTICK
+#if defined(TARGET_SDL)
 
   if (!sdl_joystick_subsystem_initialized)
   {
@@ -323,9 +281,9 @@ void InitJoysticks()
     joystick_status = JOYSTICK_AVAILABLE;
   }
 
-#else /* !USE_SDL_JOYSTICK */
+#else /* !TARGET_SDL */
 
-#ifndef MSDOS
+#if defined(PLATFORM_UNIX)
   for (i=0; i<MAX_PLAYERS; i++)
   {
     char *device_name = setup.input[i].joy.device_name;
@@ -355,7 +313,7 @@ void InitJoysticks()
     joystick_status = JOYSTICK_AVAILABLE;
   }
 
-#else /* MSDOS */
+#else /* !PLATFORM_UNIX */
 
   /* try to access two joysticks; if that fails, try to access just one */
   if (install_joystick(JOY_TYPE_2PADS) == 0 ||
@@ -379,14 +337,14 @@ void InitJoysticks()
   }
 #endif
 
-#endif /* !USE_SDL_LIBRARY */
+#endif /* !TARGET_SDL */
 }
 
 void InitGfx()
 {
   int i, j;
 
-#ifdef USE_SDL_LIBRARY
+#if defined(TARGET_SDL)
   SDL_Surface *sdl_image_tmp;
 #else
   GC copy_clipmask_gc;
@@ -394,21 +352,7 @@ void InitGfx()
   unsigned long clip_gc_valuemask;
 #endif
 
-#ifdef MSDOS
-  static struct PictureFileInfo pic[NUM_PICTURES] =
-  {
-    { "Screen",        TRUE },
-    { "Door",  TRUE },
-    { "Heroes",        TRUE },
-    { "Toons", TRUE },
-    { "SP",    TRUE },
-    { "DC",    TRUE },
-    { "More",  TRUE },
-    { "Font",  FALSE },
-    { "Font2", FALSE },
-    { "Font3", FALSE }
-  }; 
-#else
+#if !defined(PLATFORM_MSDOS)
   static struct PictureFileInfo pic[NUM_PICTURES] =
   {
     { "RocksScreen",   TRUE },
@@ -422,6 +366,20 @@ void InitGfx()
     { "RocksFont2",    FALSE },
     { "RocksFont3",    FALSE }
   }; 
+#else
+  static struct PictureFileInfo pic[NUM_PICTURES] =
+  {
+    { "Screen",        TRUE },
+    { "Door",  TRUE },
+    { "Heroes",        TRUE },
+    { "Toons", TRUE },
+    { "SP",    TRUE },
+    { "DC",    TRUE },
+    { "More",  TRUE },
+    { "Font",  FALSE },
+    { "Font2", FALSE },
+    { "Font3", FALSE }
+  }; 
 #endif
 
   static struct
@@ -484,10 +442,10 @@ void InitGfx()
   LoadGfx(PIX_SMALLFONT, &pic[PIX_SMALLFONT]);
   DrawInitText(WINDOW_TITLE_STRING, 20, FC_YELLOW);
   DrawInitText(WINDOW_SUBTITLE_STRING, 50, FC_RED);
-#ifdef MSDOS
+#if defined(PLATFORM_MSDOS)
   DrawInitText(PROGRAM_DOS_PORT_STRING, 210, FC_BLUE);
   rest(200);
-#endif /* MSDOS */
+#endif
   DrawInitText("Loading graphics:",120,FC_GREEN);
 
   for(i=0; i<NUM_PICTURES; i++)
@@ -496,7 +454,7 @@ void InitGfx()
 
   /* create additional image buffers for masking of graphics */
 
-#ifdef USE_SDL_LIBRARY
+#if defined(TARGET_SDL)
 
   /* initialize surface array to 'NULL' */
   for(i=0; i<NUM_TILES; i++)
@@ -534,7 +492,7 @@ void InitGfx()
     }
   }
 
-#else /* !USE_SDL_LIBRARY */
+#else /* !TARGET_SDL */
 
   /* create graphic context structures needed for clipping */
   clip_gc_values.graphics_exposures = False;
@@ -583,7 +541,7 @@ void InitGfx()
     }
   }
 
-#endif /* !USE_SDL_LIBRARY */
+#endif /* !TARGET_SDL */
 }
 
 void InitGfxBackground()
@@ -610,11 +568,11 @@ void LoadGfx(int pos, struct PictureFileInfo *pic)
   char basefilename[256];
   char filename[256];
 
-#ifdef USE_SDL_LIBRARY
+#if defined(TARGET_SDL)
   SDL_Surface *sdl_image_tmp;
-#else /* !USE_SDL_LIBRARY */
+#else
   int pcx_err;
-#endif /* !USE_SDL_LIBRARY */
+#endif
   char *picture_ext = ".pcx";
 
   /* Grafik laden */
@@ -625,11 +583,11 @@ void LoadGfx(int pos, struct PictureFileInfo *pic)
     sprintf(filename, "%s/%s/%s",
            options.ro_base_directory, GRAPHICS_DIRECTORY, basefilename);
 
-#ifdef MSDOS
+#if defined(PLATFORM_MSDOS)
     rest(100);
-#endif /* MSDOS */
+#endif
 
-#ifdef USE_SDL_LIBRARY
+#if defined(TARGET_SDL)
     /* load image to temporary surface */
     if ((sdl_image_tmp = IMG_Load(filename)) == NULL)
       Error(ERR_EXIT, "IMG_Load() failed: %s", SDL_GetError());
@@ -647,7 +605,7 @@ void LoadGfx(int pos, struct PictureFileInfo *pic)
     /* free temporary surface */
     SDL_FreeSurface(sdl_image_tmp);
 
-#else /* !USE_SDL_LIBRARY */
+#else /* !TARGET_SDL */
 
     pcx_err = Read_PCX_to_Pixmap(display, window, gc, filename,
                                 &pix[pos], &clipmask[pos]);
@@ -676,14 +634,14 @@ void LoadGfx(int pos, struct PictureFileInfo *pic)
        use pix_masked[], although they are the same when not using SDL */
     pix_masked[pos] = pix[pos];
 
-#endif /* !USE_SDL_LIBRARY */
+#endif /* !TARGET_SDL */
   }
 
-#ifndef USE_SDL_LIBRARY
-  /* zugehörige Maske laden (wenn vorhanden) */
+#if defined(TARGET_X11)
+  /* check if clip mask was correctly created */
   if (pic->picture_with_mask && !clipmask[pos])
     Error(ERR_EXIT, "cannot get clipmask for '%s'", pic->picture_filename);
-#endif /* !USE_SDL_LIBRARY */
+#endif
 }
 
 void InitGadgets()
@@ -1847,7 +1805,7 @@ void CloseAllAndExit(int exit_value)
 {
   int i;
 
-#ifdef USE_SDL_LIBRARY
+#if defined(TARGET_SDL)
   StopSounds();
   FreeSounds(NUM_SOUNDS);
 #else
@@ -1864,7 +1822,7 @@ void CloseAllAndExit(int exit_value)
     if (pix[i])
       FreeBitmap(pix[i]);
 
-#ifdef USE_SDL_LIBRARY
+#if defined(TARGET_SDL)
     FreeBitmap(pix_masked[i]);
 #else
     if (clipmask[i])
@@ -1874,7 +1832,7 @@ void CloseAllAndExit(int exit_value)
 #endif
   }
 
-#ifdef USE_SDL_LIBRARY
+#if defined(TARGET_SDL)
   KeyboardAutoRepeatOn();
 #else
   if (gc)
@@ -1887,7 +1845,7 @@ void CloseAllAndExit(int exit_value)
   }
 #endif
 
-#if defined(MSDOS) || defined(WIN32)
+#if !defined(PLATFORM_UNIX)
   dumpErrorFile();
 #endif