rnd-19981130-1
[rocksndiamonds.git] / src / init.c
index 184ea73f333c5beef4801ae7a5ff229041c3039e..ce89416c783e356126fcaebdbf1d12326543843d 100644 (file)
 #include "network.h"
 #include "netserv.h"
 
-#ifdef DEBUG
-
-#define DEBUG_TIMING
-
-#endif
-
 struct PictureFileInfo
 {
   char *picture_filename;
@@ -78,10 +72,19 @@ 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();
@@ -104,30 +107,32 @@ void InitLevelAndPlayerInfo()
 
   local_player->connected = TRUE;
 
-  if (!LoadLevelInfo())                        /* global level info */
-    Error(ERR_EXIT, NULL);
-
+  LoadLevelInfo();                     /* global level info */
   LoadSetup();                         /* global setup info */
   LoadLevelSetup();                    /* info about last played level */
 }
 
 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.alias_name);
+  SendToServer_PlayerName(setup.player_name);
   SendToServer_ProtocolVersion();
 
   if (nr_wanted)
     SendToServer_NrWanted(nr_wanted);
+#endif
 }
 
 void InitSound()
@@ -222,7 +227,9 @@ void InitSoundServer()
 
 void InitJoysticks()
 {
+#ifndef MSDOS
   int i;
+#endif
 
   if (global_joystick_status == JOYSTICK_OFF)
     return;
@@ -265,8 +272,10 @@ void InitJoysticks()
 
 void InitDisplay()
 {
+#ifndef MSDOS
   XVisualInfo vinfo_template, *vinfo;
   int num_visuals;
+#endif
   unsigned int depth;
 
   /* connect to X server */
@@ -279,6 +288,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);
@@ -303,29 +313,33 @@ 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);
   unsigned long pen_bg = BlackPixel(display,screen);
+  const int width = WIN_XSIZE, height = WIN_YSIZE;
 
 #ifndef MSDOS
   static struct IconFileInfo icon_pic =
@@ -338,9 +352,6 @@ void InitWindow(int argc, char *argv[])
   screen_width = XDisplayWidth(display, screen);
   screen_height = XDisplayHeight(display, screen);
 
-  width = WIN_XSIZE;
-  height = WIN_YSIZE;
-
   win_xpos = (screen_width - width) / 2;
   win_ypos = (screen_height - height) / 2;
 
@@ -419,6 +430,10 @@ 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)
@@ -502,9 +517,8 @@ void InitGfx()
     { -1, 0 }
   };
 
-#ifdef DEBUG_TIMING
-  long count1, count2;
-  count1 = Counter();
+#if DEBUG_TIMING
+  debug_print_timestamp(0, NULL);      /* initialize timestamp function */
 #endif
 
   LoadGfx(PIX_SMALLFONT,&pic[PIX_SMALLFONT]);
@@ -520,12 +534,10 @@ void InitGfx()
     if (i != PIX_SMALLFONT)
       LoadGfx(i,&pic[i]);
 
-#ifdef DEBUG_TIMING
-  count2 = Counter();
-  printf("SUMMARY: %.2f SECONDS LOADING TIME\n",(float)(count2-count1)/1000.0);
+#if DEBUG_TIMING
+  debug_print_timestamp(0, "SUMMARY LOADING ALL GRAPHICS:");
 #endif
 
-
   pix[PIX_DB_BACK] = XCreatePixmap(display, window,
                                   WIN_XSIZE,WIN_YSIZE,
                                   XDefaultDepth(display,screen));
@@ -632,7 +644,7 @@ void LoadGfx(int pos, struct PictureFileInfo *pic)
   char basefilename[256];
   char filename[256];
 
-#ifdef XPM_INCLUDE_FILE
+#ifdef USE_XPM_LIBRARY
   int xpm_err, xbm_err;
   unsigned int width,height;
   int hot_x,hot_y;
@@ -641,13 +653,19 @@ 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
 
-#ifdef DEBUG_TIMING
-  long count1, count2;
 #endif
 
+
+  print_debug("now load pic:");
+
+
   /* Grafik laden */
   if (pic->picture_filename)
   {
@@ -660,17 +678,16 @@ void LoadGfx(int pos, struct PictureFileInfo *pic)
     rest(100);
 #endif MSDOS
 
-#ifdef DEBUG_TIMING
-    count1 = Counter();
+#if DEBUG_TIMING
+    debug_print_timestamp(1, NULL);    /* initialize timestamp function */
 #endif
 
-#ifdef XPM_INCLUDE_FILE
+#ifdef USE_XPM_LIBRARY
 
     xpm_att[pos].valuemask = XpmCloseness;
     xpm_att[pos].closeness = 20000;
     xpm_err = XpmReadFileToPixmap(display,window,filename,
                                  &pix[pos],&shapemask,&xpm_att[pos]);
-
     switch(xpm_err)
     {
       case XpmOpenFailed:
@@ -685,65 +702,88 @@ void LoadGfx(int pos, struct PictureFileInfo *pic)
        break;
     }
 
-#ifdef DEBUG_TIMING
-    count2 = Counter();
-    printf("XPM LOADING %s IN %.2f SECONDS\n",
-          filename,(float)(count2-count1)/1000.0);
+#if DEBUG_TIMING
+    printf("LOADING XPM FILE %s:", filename);
+    debug_print_timestamp(1, "");
 #endif
 
-#else 
+#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");
 
-    pcx_err = Read_PCX_to_Pixmaps(display, window, filename,
-                                 &pix[pos], &clipmask[pos]);
 
     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;
     }
 
-#ifdef DEBUG_TIMING
-    count2 = Counter();
-    printf("PCX LOADING %s IN %.2f SECONDS\n",
-          filename,(float)(count2-count1)/1000.0);
-#endif
+    print_debug("ok-2");
 
+#if DEBUG_TIMING
+    printf("SUMMARY LOADING PCX FILE %s:", filename);
+    debug_print_timestamp(1, "");
 #endif
 
+#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) */
   if (pic->picture_with_mask)
   {
-
-#ifdef XPM_INCLUDE_FILE
+#ifdef USE_XPM_LIBRARY
 
     sprintf(basefilename, "%s%s", pic->picture_filename, picturemask_ext);
     DrawInitText(basefilename, 150, FC_YELLOW);
     sprintf(filename, "%s/%s/%s",
            options.base_directory, GRAPHICS_DIRECTORY, basefilename);
 
-#ifdef DEBUG_TIMING
-    count1 = Counter();
+#if DEBUG_TIMING
+    debug_print_timestamp(1, NULL);    /* initialize timestamp function */
 #endif
 
     xbm_err = XReadBitmapFile(display,window,filename,
                              &width,&height,&clipmask[pos],&hot_x,&hot_y);
-
     switch(xbm_err)
     {
       case BitmapSuccess:
@@ -759,17 +799,23 @@ void LoadGfx(int pos, struct PictureFileInfo *pic)
        break;
     }
 
-#ifdef DEBUG_TIMING
-    count2 = Counter();
-    printf("XBM LOADING %s IN %.2f SECONDS\n",
-          filename,(float)(count2-count1)/1000.0);
+#if DEBUG_TIMING
+    printf("LOADING XBM FILE %s:", filename);
+    debug_print_timestamp(1, "");
 #endif
 
-#endif
+#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()
@@ -1341,8 +1387,8 @@ void CloseAllAndExit(int exit_value)
   {
     if (pix[i])
     {
-#ifdef XPM_INCLUDE_FILE
-      if (i<NUM_PICTURES)      /* XPM pictures */
+#ifdef USE_XPM_LIBRARY
+      if (i < NUM_PICTURES)    /* XPM pictures */
       {
        XFreeColors(display,DefaultColormap(display,screen),
                    xpm_att[i].pixels,xpm_att[i].npixels,0);