rnd-19981204-2
[rocksndiamonds.git] / src / init.c
index ce89416c783e356126fcaebdbf1d12326543843d..bc72b99a2787ca8f660bfafabbb38ca8baf9b712 100644 (file)
@@ -21,6 +21,7 @@
 #include "files.h"
 #include "joystick.h"
 #include "image.h"
+#include "pcx.h"
 #include "network.h"
 #include "netserv.h"
 
@@ -72,19 +73,10 @@ void OpenAll(int argc, char *argv[])
   InitDisplay();
   InitWindow(argc, argv);
 
-  print_debug("now map window");
-
   XMapWindow(display, window);
   XFlush(display);
 
-  print_debug("window mapped");
-
-  print_debug("now init gfx");
-
   InitGfx();
-
-  print_debug("gfx initialized");
-
   InitElementProperties();
 
   DrawMainMenu();
@@ -168,20 +160,21 @@ void InitSound()
   */
 
 #endif
-#else
+#else /* MSDOS */
   sound_loops_allowed = TRUE;
 
   /*
   setup.sound_loops_on = TRUE;
   */
 
-#endif
+#endif /* MSDOS */
 
   for(i=0; i<NUM_SOUNDS; i++)
   {
 #ifdef MSDOS
-  sprintf(sound_name[i], "%d", i+1);
+    sprintf(sound_name[i], "%d", i + 1);
 #endif
+
     Sound[i].name = sound_name[i];
     if (!LoadSound(&Sound[i]))
     {
@@ -197,6 +190,7 @@ void InitSoundServer()
     return;
 
 #ifndef MSDOS
+
   if (pipe(sound_pipe)<0)
   {
     Error(ERR_WARN, "cannot create pipe - no sounds");
@@ -220,16 +214,17 @@ void InitSoundServer()
   }
   else                         /* we are parent */
     close(sound_pipe[0]);      /* no reading from pipe needed */
-#else
+
+#else /* MSDOS */
+
   SoundServer();
-#endif
+
+#endif /* MSDOS */
 }
 
 void InitJoysticks()
 {
-#ifndef MSDOS
   int i;
-#endif
 
   if (global_joystick_status == JOYSTICK_OFF)
     return;
@@ -265,8 +260,29 @@ void InitJoysticks()
 
     joystick_status = JOYSTICK_AVAILABLE;
   }
-#else
-  joystick_status = JOYSTICK_AVAILABLE;
+
+#else /* MSDOS */
+
+  /* try to access two joysticks; if that fails, try to access just one */
+  if (install_joystick(JOY_TYPE_2PADS) == 0 ||
+      install_joystick(JOY_TYPE_AUTODETECT) == 0)
+    joystick_status = JOYSTICK_AVAILABLE;
+
+  /*
+  load_joystick_data(JOYSTICK_FILENAME);
+  */
+
+  for (i=0; i<MAX_PLAYERS; i++)
+  {
+    char *device_name = setup.input[i].joy.device_name;
+    int joystick_nr = getJoystickNrFromDeviceName(device_name);
+
+    if (joystick_nr >= num_joysticks)
+      joystick_nr = -1;
+
+    /* misuse joystick file descriptor variable to store joystick number */
+    stored_player[i].joystick_fd = joystick_nr;
+  }
 #endif
 }
 
@@ -430,10 +446,6 @@ void InitWindow(int argc, char *argv[])
   gc_values.background = pen_bg;
   gc_valuemask = GCGraphicsExposures | GCForeground | GCBackground;
   gc = XCreateGC(display, window, gc_valuemask, &gc_values);
-
-
-
-  print_debug("OpenWindow finished");
 }
 
 void DrawInitText(char *text, int ypos, int color)
@@ -527,7 +539,7 @@ void InitGfx()
 #ifdef MSDOS
   DrawInitText("MSDOS version done by Guido Schulz",210,FC_BLUE);
   rest(200);
-#endif MSDOS
+#endif /* MSDOS */
   DrawInitText("Loading graphics:",120,FC_GREEN);
 
   for(i=0; i<NUM_PICTURES; i++)
@@ -653,19 +665,9 @@ void LoadGfx(int pos, struct PictureFileInfo *pic)
   char *picturemask_ext = "Mask.xbm";
 #else
   int pcx_err;
-
-#if 1
   char *picture_ext = ".pcx";
-#else
-  char *picture_ext = ".gif";
-#endif
-
 #endif
 
-
-  print_debug("now load pic:");
-
-
   /* Grafik laden */
   if (pic->picture_filename)
   {
@@ -676,7 +678,7 @@ void LoadGfx(int pos, struct PictureFileInfo *pic)
 
 #ifdef MSDOS
     rest(100);
-#endif MSDOS
+#endif /* MSDOS */
 
 #if DEBUG_TIMING
     debug_print_timestamp(1, NULL);    /* initialize timestamp function */
@@ -709,46 +711,26 @@ void LoadGfx(int pos, struct PictureFileInfo *pic)
 
 #else /* !USE_XPM_LIBRARY */
 
-
-
-    print_debug(filename);
-
-
-
     pcx_err = Read_PCX_to_Pixmap(display, window, gc, filename,
                                 &pix[pos], &clipmask[pos]);
-
-
-    print_debug("ok-1");
-
-
     switch(pcx_err)
     {
       case PCX_Success:
-       print_debug("Success");
         break;
       case PCX_OpenFailed:
-       print_debug("OpenFailed");
         Error(ERR_EXIT, "cannot open PCX file '%s'", filename);
       case PCX_ReadFailed:
-       print_debug("ReadFailed");
         Error(ERR_EXIT, "cannot read PCX file '%s'", filename);
       case PCX_FileInvalid:
-       print_debug("FileInvalid");
        Error(ERR_EXIT, "invalid PCX file '%s'", filename);
       case PCX_NoMemory:
-       print_debug("NoMemory");
        Error(ERR_EXIT, "not enough memory for PCX file '%s'", filename);
       case PCX_ColorFailed:
-       print_debug("ColorFailed");
        Error(ERR_EXIT, "cannot get colors for PCX file '%s'", filename);
       default:
-       print_debug("default");
        break;
     }
 
-    print_debug("ok-2");
-
 #if DEBUG_TIMING
     printf("SUMMARY LOADING PCX FILE %s:", filename);
     debug_print_timestamp(1, "");
@@ -756,16 +738,8 @@ void LoadGfx(int pos, struct PictureFileInfo *pic)
 
 #endif /* !USE_XPM_LIBRARY */
 
-
-    print_debug("-> 1");
-
-
-
     if (!pix[pos])
       Error(ERR_EXIT, "cannot get graphics for '%s'", pic->picture_filename);
-
-
-    print_debug("-> 2");
   }
 
   /* zugehörige Maske laden (wenn vorhanden) */
@@ -806,16 +780,9 @@ void LoadGfx(int pos, struct PictureFileInfo *pic)
 
 #endif /* USE_XPM_LIBRARY */
 
-
-    if (!clipmask[pos])
-      print_debug("Oops -- no clipmask");
-
     if (!clipmask[pos])
       Error(ERR_EXIT, "cannot get clipmask for '%s'", pic->picture_filename);
   }
-
-
-  print_debug("LoadGfx done");
 }
 
 void InitElementProperties()
@@ -1412,5 +1379,9 @@ void CloseAllAndExit(int exit_value)
     XCloseDisplay(display);
   }
 
+#ifdef MSDOS
+  dumpErrorFile();
+#endif
+
   exit(exit_value);
 }