rnd-19981204-2
[rocksndiamonds.git] / src / init.c
index 5f5419f200243dda3b78212720f1c2ea342b82cc..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"
 
@@ -105,21 +106,25 @@ void InitLevelAndPlayerInfo()
 
 void InitNetworkServer()
 {
+#ifndef MSDOS
   int nr_wanted;
+#endif
 
   if (!options.network)
     return;
 
+#ifndef MSDOS
   nr_wanted = Request("Choose player", REQ_PLAYER | REQ_STAY_CLOSED);
 
   if (!ConnectToServer(options.server_host, options.server_port))
-    Error(ERR_EXIT, "cannot connect to multiplayer server");
+    Error(ERR_EXIT, "cannot connect to network game server");
 
-  SendToServer_Nickname(setup.player_name);
+  SendToServer_PlayerName(setup.player_name);
   SendToServer_ProtocolVersion();
 
   if (nr_wanted)
     SendToServer_NrWanted(nr_wanted);
+#endif
 }
 
 void InitSound()
@@ -155,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]))
     {
@@ -184,6 +190,7 @@ void InitSoundServer()
     return;
 
 #ifndef MSDOS
+
   if (pipe(sound_pipe)<0)
   {
     Error(ERR_WARN, "cannot create pipe - no sounds");
@@ -207,9 +214,12 @@ void InitSoundServer()
   }
   else                         /* we are parent */
     close(sound_pipe[0]);      /* no reading from pipe needed */
-#else
+
+#else /* MSDOS */
+
   SoundServer();
-#endif
+
+#endif /* MSDOS */
 }
 
 void InitJoysticks()
@@ -250,15 +260,38 @@ 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
 }
 
 void InitDisplay()
 {
+#ifndef MSDOS
   XVisualInfo vinfo_template, *vinfo;
   int num_visuals;
+#endif
   unsigned int depth;
 
   /* connect to X server */
@@ -271,6 +304,7 @@ void InitDisplay()
   depth  = DefaultDepth(display, screen);
   cmap   = DefaultColormap(display, screen);
 
+#ifndef MSDOS
   /* look for good enough visual */
   vinfo_template.screen = screen;
   vinfo_template.class = (depth == 8 ? PseudoColor : TrueColor);
@@ -295,25 +329,28 @@ void InitDisplay()
     printf("Sorry, cannot get appropriate visual.\n");
     exit(-1);
   }
+#endif
 }
 
 void InitWindow(int argc, char *argv[])
 {
   unsigned int border_width = 4;
+  XGCValues gc_values;
+  unsigned long gc_valuemask;
+#ifndef MSDOS
+  XTextProperty windowName, iconName;
   Pixmap icon_pixmap, iconmask_pixmap;
-  unsigned int icon_width,icon_height;
-  int icon_hot_x,icon_hot_y;
+  unsigned int icon_width, icon_height;
+  int icon_hot_x, icon_hot_y;
   char icon_filename[256];
   XSizeHints size_hints;
   XWMHints wm_hints;
   XClassHint class_hints;
-  XTextProperty windowName, iconName;
-  XGCValues gc_values;
-  unsigned long gc_valuemask;
   char *window_name = WINDOWTITLE_STRING;
   char *icon_name = WINDOWTITLE_STRING;
   long window_event_mask;
   Atom proto_atom = None, delete_atom = None;
+#endif
   int screen_width, screen_height;
   int win_xpos = WIN_XPOS, win_ypos = WIN_YPOS;
   unsigned long pen_fg = WhitePixel(display,screen);
@@ -502,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++)
@@ -641,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 */
@@ -674,8 +711,8 @@ void LoadGfx(int pos, struct PictureFileInfo *pic)
 
 #else /* !USE_XPM_LIBRARY */
 
-    pcx_err = Read_PCX_to_Pixmaps(display, window, gc, filename,
-                                 &pix[pos], &clipmask[pos]);
+    pcx_err = Read_PCX_to_Pixmap(display, window, gc, filename,
+                                &pix[pos], &clipmask[pos]);
     switch(pcx_err)
     {
       case PCX_Success:
@@ -1342,5 +1379,9 @@ void CloseAllAndExit(int exit_value)
     XCloseDisplay(display);
   }
 
+#ifdef MSDOS
+  dumpErrorFile();
+#endif
+
   exit(exit_value);
 }