rnd-20000815-1-src
authorHolger Schemel <info@artsoft.org>
Tue, 15 Aug 2000 13:18:44 +0000 (15:18 +0200)
committerHolger Schemel <info@artsoft.org>
Sat, 30 Aug 2014 08:34:48 +0000 (10:34 +0200)
18 files changed:
src/editor.c
src/events.c
src/files.c
src/files.h
src/game.c
src/init.c
src/main.h
src/misc.c
src/netserv.c
src/network.c
src/screens.c
src/sdl.c
src/sdl.h
src/sound.c
src/system.c
src/tape.c
src/tools.c
src/x11.h

index bb729811096f99b28d81eba55f771956f262848a..669991b70ed6949d05077e1a6c64e488e6a46099 100644 (file)
@@ -3511,7 +3511,8 @@ static void HandleDrawingAreas(struct GadgetInfo *gi)
          {
            CopyAreaToBrush(start_sx, start_sy, sx, sy, button);
            CopyBrushToCursor(sx, sy);
-           ClickOnGadget(level_editor_gadget[GADGET_ID_SINGLE_ITEMS],MB_LEFT);
+           ClickOnGadget(level_editor_gadget[GADGET_ID_SINGLE_ITEMS],
+                         MB_LEFTBUTTON);
            draw_with_brush = TRUE;
          }
          else if (drawing_function == GADGET_ID_TEXT)
@@ -3540,7 +3541,8 @@ static void HandleDrawingAreas(struct GadgetInfo *gi)
 
     case GADGET_ID_PICK_ELEMENT:
       if (button_release_event)
-       ClickOnGadget(level_editor_gadget[last_drawing_function], MB_LEFT);
+       ClickOnGadget(level_editor_gadget[last_drawing_function],
+                     MB_LEFTBUTTON);
       else
        PickDrawingElement(button, Feld[lx][ly]);
 
@@ -3943,7 +3945,8 @@ static void HandleControlButtons(struct GadgetInfo *gi)
        }
 
        if (drawing_function == GADGET_ID_PICK_ELEMENT)
-         ClickOnGadget(level_editor_gadget[last_drawing_function], MB_LEFT);
+         ClickOnGadget(level_editor_gadget[last_drawing_function],
+                       MB_LEFTBUTTON);
       }
 #ifdef DEBUG
       else if (gi->event.type == GD_EVENT_PRESSED)
@@ -3962,7 +3965,7 @@ static void HandleControlButtons(struct GadgetInfo *gi)
 void HandleLevelEditorKeyInput(Key key)
 {
   char letter = getCharFromKey(key);
-  int button = MB_LEFT;
+  int button = MB_LEFTBUTTON;
 
   if (drawing_function == GADGET_ID_TEXT &&
       DrawLevelText(0, 0, 0, TEXT_QUERY_TYPING) == TRUE)
@@ -3994,11 +3997,11 @@ void HandleLevelEditorKeyInput(Key key)
        break;
       case KEY_Page_Up:
        id = GADGET_ID_SCROLL_LIST_UP;
-       button = 3;
+       button = MB_RIGHTBUTTON;
        break;
       case KEY_Page_Down:
        id = GADGET_ID_SCROLL_LIST_DOWN;
-       button = 3;
+       button = MB_RIGHTBUTTON;
        break;
 
       default:
index e2f9db8ec530d9f93614a2ae27fb82cbfc39e2ba..d7466911d0ac044b89be05bc38ee56a1a19013f0 100644 (file)
@@ -714,7 +714,7 @@ void HandleNoXEvent()
     return;
   }
 
-#ifndef MSDOS
+#if !defined(MSDOS) && !defined(WIN32)
   if (options.network)
     HandleNetworking();
 #endif
index 9870c8288791ebfabceda3dd25ee04c646557141..f1872c68512544ce4385b77813f2fd0faa24b864 100644 (file)
 #define LEVELFILE_EXTENSION    "lvl"
 #define TAPEFILE_EXTENSION     "tap"
 #define SCOREFILE_EXTENSION    "sco"
+#endif
+
+#if defined(MSDOS) || defined(WIN32)
 #define ERROR_FILENAME         "error.out"
 #endif
 
+#ifdef WIN32
+#ifndef S_IRGRP
+#define S_IRGRP S_IRUSR
+#endif
+#ifndef S_IROTH
+#define S_IROTH S_IRUSR
+#endif
+#ifndef S_IWGRP
+#define S_IWGRP S_IWUSR
+#endif
+#ifndef S_IWOTH
+#define S_IWOTH S_IWUSR
+#endif
+#ifndef S_IXGRP
+#define S_IXGRP S_IXUSR
+#endif
+#ifndef S_IXOTH
+#define S_IXOTH S_IXUSR
+#endif
+#endif
+
 /* file permissions for newly written files */
 #define MODE_R_ALL             (S_IRUSR | S_IRGRP | S_IROTH)
 #define MODE_W_ALL             (S_IWUSR | S_IWGRP | S_IWOTH)
@@ -323,7 +347,11 @@ static char *getScoreFilename(int nr)
 static void createDirectory(char *dir, char *text)
 {
   if (access(dir, F_OK) != 0)
+#ifdef WIN32
+    if (mkdir(dir) != 0)
+#else
     if (mkdir(dir, USERDATA_DIR_MODE) != 0)
+#endif
       Error(ERR_WARN, "cannot create %s directory '%s'", text, dir);
 }
 
@@ -2185,7 +2213,7 @@ void SaveLevelSetup_SeriesInfo()
   chmod(filename, SETUP_PERMS);
 }
 
-#ifdef MSDOS
+#if defined(MSDOS) || defined(WIN32)
 void initErrorFile()
 {
   char *filename;
index 35fa3f10f7e3672b6043a5c5d019f3b9b6ef3c04..c87b3309ebcad1b26b4e500c1e8f421b9b1d75b7 100644 (file)
@@ -33,7 +33,7 @@ void SaveLevelSetup_LastSeries(void);
 void LoadLevelSetup_SeriesInfo(void);
 void SaveLevelSetup_SeriesInfo(void);
 
-#ifdef MSDOS
+#if defined(MSDOS) || defined(WIN32)
 void initErrorFile();
 FILE *openErrorFile();
 void dumpErrorFile();
index 7c6cf1599ad4df135e9f140fce33aecc87a025d8..fa5942ffe86851c95d0a37863dbcddebedcedf5e 100644 (file)
@@ -502,7 +502,7 @@ void InitGame()
 
   network_player_action_received = FALSE;
 
-#ifndef MSDOS
+#if !defined(MSDOS) && !defined(WIN32)
   /* initial null action */
   if (network_playing)
     SendToServer_MovePlayer(MV_NO_MOVING);
@@ -4240,7 +4240,7 @@ void GameActions()
 #endif
     */
 
-#ifndef MSDOS
+#if !defined(MSDOS) && !defined(WIN32)
     /* last chance to get network player actions without main loop delay */
     HandleNetworking();
 #endif
@@ -4277,7 +4277,7 @@ void GameActions()
       stored_player[i].effective_action = stored_player[i].action;
   }
 
-#ifndef MSDOS
+#if !defined(MSDOS) && !defined(WIN32)
   if (network_playing)
     SendToServer_MovePlayer(summarized_player_action);
 #endif
@@ -6162,7 +6162,7 @@ static void HandleGameButtons(struct GadgetInfo *gi)
          Request("Do you really want to quit the game ?",
                  REQ_ASK | REQ_STAY_CLOSED))
       { 
-#ifndef MSDOS
+#if !defined(MSDOS) && !defined(WIN32)
        if (options.network)
          SendToServer_StopPlaying();
        else
@@ -6179,7 +6179,7 @@ static void HandleGameButtons(struct GadgetInfo *gi)
     case GAME_CTRL_ID_PAUSE:
       if (options.network)
       {
-#ifndef MSDOS
+#if !defined(MSDOS) && !defined(WIN32)
        if (tape.pausing)
          SendToServer_ContinuePlaying();
        else
@@ -6193,7 +6193,7 @@ static void HandleGameButtons(struct GadgetInfo *gi)
     case GAME_CTRL_ID_PLAY:
       if (tape.pausing)
       {
-#ifndef MSDOS
+#if !defined(MSDOS) && !defined(WIN32)
        if (options.network)
          SendToServer_ContinuePlaying();
        else
index 64f748019cac0e9050ef5048b0939bb616c9a7c1..114f61c01aedfa9e6b610e0fa63e513a6520dc02 100644 (file)
@@ -41,7 +41,9 @@ struct IconFileInfo
   char *picturemask_filename;
 };
 
+#ifndef USE_SDL_LIBRARY
 static int sound_process_id = 0;
+#endif
 
 static void InitLevelAndPlayerInfo(void);
 static void InitNetworkServer(void);
@@ -56,13 +58,17 @@ static void InitElementProperties(void);
 
 void OpenAll(int argc, char *argv[])
 {
-#ifdef MSDOS
+#if defined(MSDOS) || defined(WIN32)
   initErrorFile();
 #endif
 
   if (options.serveronly)
   {
+#ifdef WIN32
+    Error(ERR_WARN, "networking not supported in Windows version");
+#else
     NetworkServer(options.server_port, options.serveronly);
+#endif
 
     /* never reached */
     exit(0);
@@ -119,14 +125,14 @@ void InitLevelAndPlayerInfo()
 
 void InitNetworkServer()
 {
-#ifndef MSDOS
+#if !defined(MSDOS) && !defined(WIN32)
   int nr_wanted;
 #endif
 
   if (!options.network)
     return;
 
-#ifndef MSDOS
+#if !defined(MSDOS) && !defined(WIN32)
   nr_wanted = Request("Choose player", REQ_PLAYER | REQ_STAY_CLOSED);
 
   if (!ConnectToServer(options.server_host, options.server_port))
@@ -172,7 +178,7 @@ void InitSound()
 
 #else /* !USE_SDL_LIBRARY */
 
-#ifndef MSDOS
+#if !defined(MSDOS) && !defined(WIN32)
   if (access(sound_device_name, W_OK) != 0)
   {
     Error(ERR_WARN, "cannot access sound device - no sounds");
@@ -198,14 +204,14 @@ void InitSound()
   */
 
 #endif
-#else /* MSDOS */
+#else /* MSDOS || WIN32 */
   sound_loops_allowed = TRUE;
 
   /*
   setup.sound_loops_on = TRUE;
   */
 
-#endif /* MSDOS */
+#endif /* MSDOS || WIN32 */
 #endif /* !USE_SDL_LIBRARY */
 
   for(i=0; i<NUM_SOUNDS; i++)
@@ -230,11 +236,9 @@ void InitSoundServer()
   if (sound_status == SOUND_OFF)
     return;
 
-#ifdef USE_SDL_LIBRARY
-  return;
-#endif
+#ifndef USE_SDL_LIBRARY
 
-#ifndef MSDOS
+#if !defined(MSDOS) && !defined(WIN32)
 
   if (pipe(sound_pipe)<0)
   {
@@ -260,11 +264,13 @@ void InitSoundServer()
   else                         /* we are parent */
     close(sound_pipe[0]);      /* no reading from pipe needed */
 
-#else /* MSDOS */
+#else /* MSDOS || WIN32 */
 
   SoundServer();
 
 #endif /* MSDOS */
+
+#endif /* !USE_SDL_LIBRARY */
 }
 
 void InitJoysticks()
@@ -2193,12 +2199,17 @@ void CloseAllAndExit(int exit_value)
 {
   int i;
 
+#ifdef USE_SDL_LIBRARY
+  StopSounds();
+  FreeSounds(NUM_SOUNDS);
+#else
   if (sound_process_id)
   {
     StopSounds();
     kill(sound_process_id, SIGTERM);
     FreeSounds(NUM_SOUNDS);
   }
+#endif
 
   for(i=0; i<NUM_BITMAPS; i++)
   {
index 15c21e81fb11a3327d0d5f3ad29f93f71fcd56c1..acef24060cc39544b56dd7b6989eba756ca6288e 100644 (file)
@@ -1675,9 +1675,9 @@ extern char               *element_info[];
 #define MB_MENU_CHOICE         FALSE
 #define MB_MENU_MARK           TRUE
 #define MB_MENU_INITIALIZE     (-1)
-#define MB_LEFT                        1
-#define MB_MIDDLE              2
-#define MB_RIGHT               3
+#define MB_LEFTBUTTON          1
+#define MB_MIDDLEBUTTON                2
+#define MB_RIGHTBUTTON         3
 
 /* values for redraw_mask */
 #define REDRAW_ALL             (1 << 0)
index 211108d0f5dbeb74f1e9a11ca56fd351499afc4b..8b86b89c3476d77a01244b9cf956bf1ce82309b4 100644 (file)
 *  misc.c                                                  *
 ***********************************************************/
 
-#include <pwd.h>
 #include <time.h>
 #include <sys/time.h>
-#include <sys/param.h>
 #include <sys/types.h>
 #include <stdarg.h>
 #include <ctype.h>
 
+#ifndef WIN32
+#include <pwd.h>
+#include <sys/param.h>
+#endif
+
 #include "misc.h"
 #include "init.h"
 #include "tools.h"
@@ -39,11 +42,31 @@ END_OF_FUNCTION(increment_counter);
 #endif
 
 
-
 /* maximal allowed length of a command line option */
 #define MAX_OPTION_LEN         256
 
+#ifdef USE_SDL_LIBRARY
+
+static unsigned long mainCounter(int mode)
+{
+  static unsigned long base_ms = 0;
+  unsigned long current_ms;
+  unsigned long counter_ms;
+
+  current_ms = SDL_GetTicks();
+
+  /* reset base time in case of counter initializing or wrap-around */
+  if (mode == INIT_COUNTER || current_ms < base_ms)
+    base_ms = current_ms;
+
+  counter_ms = current_ms - base_ms;
+
+  return counter_ms;           /* return milliseconds since last init */
+}
+
+#else /* !USE_SDL_LIBRARY */
 #ifndef MSDOS
+
 static unsigned long mainCounter(int mode)
 {
   static struct timeval base_time = { 0, 0 };
@@ -52,6 +75,7 @@ static unsigned long mainCounter(int mode)
 
   gettimeofday(&current_time, NULL);
 
+  /* reset base time in case of counter initializing or wrap-around */
   if (mode == INIT_COUNTER || current_time.tv_sec < base_time.tv_sec)
     base_time = current_time;
 
@@ -60,7 +84,9 @@ static unsigned long mainCounter(int mode)
 
   return counter_ms;           /* return milliseconds since last init */
 }
-#endif
+
+#endif /* !MSDOS */
+#endif /* !USE_SDL_LIBRARY */
 
 void InitCounter()             /* set counter back to zero */
 {
@@ -87,7 +113,7 @@ static void sleep_milliseconds(unsigned long milliseconds_delay)
   boolean do_busy_waiting = (milliseconds_delay < 5 ? TRUE : FALSE);
 
 #ifdef MSDOS
-  /* donït use select() to perform waiting operations under DOS/Windows
+  /* don't use select() to perform waiting operations under DOS/Windows
      environment; always use a busy loop for waiting instead */
   do_busy_waiting = TRUE;
 #endif
@@ -107,6 +133,9 @@ static void sleep_milliseconds(unsigned long milliseconds_delay)
   }
   else
   {
+#ifdef USE_SDL_LIBRARY
+    SDL_Delay(milliseconds_delay);
+#else /* !USE_SDL_LIBRARY */
     struct timeval delay;
 
     delay.tv_sec  = milliseconds_delay / 1000;
@@ -114,6 +143,7 @@ static void sleep_milliseconds(unsigned long milliseconds_delay)
 
     if (select(0, NULL, NULL, NULL, &delay) != 0)
       Error(ERR_WARN, "sleep_milliseconds(): select() failed");
+#endif /* !USE_SDL_LIBRARY */
   }
 }
 
@@ -198,12 +228,25 @@ char *int2str(int number, int size)
 
 unsigned int SimpleRND(unsigned int max)
 {
+#ifdef USE_SDL_LIBRARY
+
+  static unsigned long root = 654321;
+  unsigned long current_ms;
+
+  current_ms = SDL_GetTicks();
+  root = root * 4253261 + current_ms;
+  return (root % max);
+
+#else /* !USE_SDL_LIBRARY */
+
   static unsigned long root = 654321;
   struct timeval current_time;
 
-  gettimeofday(&current_time,NULL);
+  gettimeofday(&current_time, NULL);
   root = root * 4253261 + current_time.tv_sec + current_time.tv_usec;
   return (root % max);
+
+#endif /* !USE_SDL_LIBRARY */
 }
 
 #ifdef DEBUG
@@ -226,34 +269,56 @@ unsigned int RND(unsigned int max)
 
 unsigned int InitRND(long seed)
 {
+#ifdef USE_SDL_LIBRARY
+  unsigned long current_ms;
+
+  if (seed == NEW_RANDOMIZE)
+  {
+    current_ms = SDL_GetTicks();
+    srandom_linux_libc((unsigned int) current_ms);
+    return (unsigned int) current_ms;
+  }
+  else
+  {
+    srandom_linux_libc((unsigned int) seed);
+    return (unsigned int) seed;
+  }
+#else /* !USE_SDL_LIBRARY */
   struct timeval current_time;
 
   if (seed == NEW_RANDOMIZE)
   {
-    gettimeofday(&current_time,NULL);
+    gettimeofday(&current_time, NULL);
     srandom_linux_libc((unsigned int) current_time.tv_usec);
-    return (unsigned int)current_time.tv_usec;
+    return (unsigned int) current_time.tv_usec;
   }
   else
   {
     srandom_linux_libc((unsigned int) seed);
-    return (unsigned int)seed;
+    return (unsigned int) seed;
   }
+#endif /* !USE_SDL_LIBRARY */
 }
 
 char *getLoginName()
 {
+#ifdef WIN32
+  return ANONYMOUS_NAME;
+#else
   struct passwd *pwd;
 
   if ((pwd = getpwuid(getuid())) == NULL)
     return ANONYMOUS_NAME;
   else
     return pwd->pw_name;
+#endif
 }
 
 char *getRealName()
 {
-#ifndef MSDOS
+#if defined(MSDOS) || defined(WIN32)
+  return ANONYMOUS_NAME;
+#else
   struct passwd *pwd;
 
   if ((pwd = getpwuid(getuid())) == NULL || strlen(pwd->pw_gecos) == 0)
@@ -283,14 +348,14 @@ char *getRealName()
 
     return real_name;
   }
-#else
-  return ANONYMOUS_NAME;
 #endif
 }
 
 char *getHomeDir()
 {
-#ifndef MSDOS
+#if defined(MSDOS) || defined(WIN32)
+  return ".";
+#else
   static char *home_dir = NULL;
 
   if (!home_dir)
@@ -307,8 +372,6 @@ char *getHomeDir()
   }
 
   return home_dir;
-#else
-  return ".";
 #endif
 }
 
@@ -524,7 +587,7 @@ void Error(int mode, char *format, ...)
   if (mode & ERR_WARN && !options.verbose)
     return;
 
-#ifdef MSDOS
+#if defined(MSDOS) || defined(WIN32)
   if ((error = openErrorFile()) == NULL)
   {
     printf("Cannot write to error output file!\n");
@@ -722,8 +785,10 @@ void translate_keyname(Key *keysym, char **x11name, char **name, int mode)
     { KEY_Meta_R,      "XK_Meta_R",            "right meta" },
     { KEY_Alt_L,       "XK_Alt_L",             "left alt" },
     { KEY_Alt_R,       "XK_Alt_R",             "right alt" },
-    { KEY_Mode_switch, "XK_Mode_switch",       "mode switch" },
-    { KEY_Multi_key,   "XK_Multi_key",         "multi key" },
+    { KEY_Super_L,     "XK_Super_L",           "left super" },  /* Win-L */
+    { KEY_Super_R,     "XK_Super_R",           "right super" }, /* Win-R */
+    { KEY_Mode_switch, "XK_Mode_switch",       "mode switch" }, /* Alt-R */
+    { KEY_Multi_key,   "XK_Multi_key",         "multi key" },   /* Ctrl-R */
 
     /* some special keys */
     { KEY_BackSpace,   "XK_BackSpace",         "backspace" },
@@ -734,7 +799,7 @@ void translate_keyname(Key *keysym, char **x11name, char **name, int mode)
     { KEY_End,         "XK_End",               "end" },
     { KEY_Page_Up,     "XK_Page_Up",           "page up" },
     { KEY_Page_Down,   "XK_Page_Down",         "page down" },
-
+    { KEY_Menu,                "XK_Menu",              "menu" },        /* Win-Menu */
 
     /* ASCII 0x20 to 0x40 keys (except numbers) */
     { KEY_space,       "XK_space",             "space" },
index ac142763b2eff1b465674018c7f85ee3fbca4759..10b0ab504d5615a66dc17e9221e7630f7bd60238 100644 (file)
@@ -11,7 +11,7 @@
 *  network.c                                               *
 ***********************************************************/
 
-#ifndef MSDOS
+#if !defined(MSDOS) && !defined(WIN32)
 
 #include <fcntl.h>
 #include <sys/time.h>
@@ -661,4 +661,4 @@ void NetworkServer(int port, int serveronly)
   }
 }
 
-#endif /* !MSDOS */
+#endif /* !MSDOS && !WIN32 */
index 5534c56f5b42a9e42893e577eedb5aa901f653ee..70720ea26818305518d09dda35cd80ba5bd17d8e 100644 (file)
@@ -11,7 +11,7 @@
 *  network.c                                               *
 ***********************************************************/
 
-#ifndef MSDOS
+#if !defined(MSDOS) && !defined(WIN32)
 
 #include <signal.h>
 #include <sys/time.h>
@@ -615,4 +615,4 @@ void HandleNetworking()
   }
 }
 
-#endif /* !MSDOS */
+#endif /* !MSDOS && !WIN32 */
index eb550cb9406818e3951927ce27bd262067302109..2e206e2186ec05dffb3366cb2eed227a9e436bae 100644 (file)
@@ -327,7 +327,7 @@ void HandleMainMenu(int mx, int my, int dx, int dy, int button)
        if (setup.autorecord)
          TapeStartRecording();
 
-#ifndef MSDOS
+#if !defined(MSDOS) && !defined(WIN32)
        if (options.network)
          SendToServer_StartPlaying();
        else
@@ -1904,8 +1904,12 @@ void CustomizeKeyboard(int player_nr)
              break;
            }
 
+           /* all keys configured -- wait for "Escape" or "Return" key */
+           if (step_nr == 6)
+             break;
+
            /* press 'Enter' to keep the existing key binding */
-           if (key == KEY_Return || step_nr == 6)
+           if (key == KEY_Return)
              key = *customize_step[step_nr].key;
 
            /* check if key already used */
index f782961d2a509f9e43ea67d7f729ad32eca3b89f..c37cbff15bc4f2f6174ade0c19d6d16be40e9015 100644 (file)
--- a/src/sdl.c
+++ b/src/sdl.c
@@ -35,9 +35,9 @@ inline void SDLCopyArea(SDL_Surface *src_surface, SDL_Surface *dst_surface,
   dst_rect.h = height;
 
   SDL_BlitSurface(src_surface, &src_rect, dst_surface, &dst_rect);
-#if 1
-  SDL_UpdateRect(dst_surface, dst_x, dst_y, width, height);
-#endif
+
+  if (dst_surface == window)
+    SDL_UpdateRect(dst_surface, dst_x, dst_y, width, height);
 }
 
 inline void SDLFillRectangle(SDL_Surface *surface, int x, int y,
index d6800fa9b700d20187572ef71952620ee0d14b08..0b39620d1b1946c20a72454a74f2290676c76389 100644 (file)
--- a/src/sdl.h
+++ b/src/sdl.h
@@ -96,8 +96,10 @@ typedef int                  Colormap;
 #define KEY_Meta_R             SDLK_RMETA
 #define KEY_Alt_L              SDLK_LALT
 #define KEY_Alt_R              SDLK_RALT
+#define KEY_Super_L            SDLK_LSUPER
+#define KEY_Super_R            SDLK_RSUPER
 #define KEY_Mode_switch                SDLK_MODE
-#define KEY_Multi_key          KEY_UNDEFINED           /* undefined */
+#define KEY_Multi_key          SDLK_RCTRL
 
 #define KEY_BackSpace          SDLK_BACKSPACE
 #define KEY_Delete             SDLK_DELETE
@@ -107,6 +109,7 @@ typedef int                 Colormap;
 #define KEY_End                        SDLK_END
 #define KEY_Page_Up            SDLK_PAGEUP
 #define KEY_Page_Down          SDLK_PAGEDOWN
+#define KEY_Menu               SDLK_MENU
 
 #define KEY_space              SDLK_SPACE
 #define KEY_exclam             SDLK_EXCLAIM
index d2cdbc724d0e9d781aa664bd7d03d8f60e199b4c..6db2f63329a54bab3a1575982463ac276abd13ec 100644 (file)
@@ -23,7 +23,7 @@ static struct SoundControl emptySoundControl =
   -1,0,0, FALSE,FALSE,FALSE,FALSE,FALSE, 0,0L,0L,NULL
 };
 
-#ifndef MSDOS
+#if !defined(MSDOS) && !defined(WIN32)
 static int stereo_volume[PSND_MAX_LEFT2RIGHT+1];
 static char premix_first_buffer[SND_BLOCKSIZE];
 #ifdef VOXWARE
@@ -32,21 +32,22 @@ static char premix_right_buffer[SND_BLOCKSIZE];
 static int premix_last_buffer[SND_BLOCKSIZE];
 #endif /* VOXWARE */
 static unsigned char playing_buffer[SND_BLOCKSIZE];
-#endif /* MSDOS */
+#endif /* !MSDOS && !WIN32 */
 
 /* forward declaration of internal functions */
 #ifdef VOXWARE
 static void SoundServer_InsertNewSound(struct SoundControl);
 #endif
-#ifndef VOXWARE
-#ifndef MSDOS
+
+#if !defined(VOXWARE) && !defined(MSDOS) && !defined(WIN32)
 static unsigned char linear_to_ulaw(int);
 static int ulaw_to_linear(unsigned char);
 #endif
-#endif
+
 #ifdef HPUX_AUDIO
 static void HPUX_Audio_Control();
 #endif
+
 #ifdef MSDOS
 static void SoundServer_InsertNewSound(struct SoundControl);
 static void SoundServer_StopSound(int);
@@ -56,7 +57,7 @@ static void SoundServer_StopAllSounds();
 void SoundServer()
 {
   int i;
-#ifndef MSDOS
+#if !defined(MSDOS) && !defined(WIN32)
   struct SoundControl snd_ctrl;
   fd_set sound_fdset;
 
@@ -67,7 +68,7 @@ void SoundServer()
     playlist[i] = emptySoundControl;
   playing_sounds = 0;
 
-#ifndef MSDOS
+#if !defined(MSDOS) && !defined(WIN32)
   stereo_volume[PSND_MAX_LEFT2RIGHT] = 0;
   for(i=0;i<PSND_MAX_LEFT2RIGHT;i++)
     stereo_volume[i] =
@@ -137,7 +138,11 @@ void SoundServer()
       /* Even if the stereo flag is used as being boolean, it must be
         defined as an integer, else 'ioctl()' will fail! */
       int stereo = TRUE;
+#if 0
       int sample_rate = 8000;
+#else
+      int sample_rate = 22050;
+#endif
 
       if (playing_sounds || (sound_device=open(sound_device_name,O_WRONLY))>=0)
       {
@@ -347,7 +352,9 @@ void SoundServer()
 #endif /* !VOXWARE */
 
   }
-#endif /* !MSDOS */
+
+#endif /* !MSDOS && !WIN32 */
+
 }
 
 #ifdef MSDOS
@@ -403,6 +410,7 @@ static void sound_handler(struct SoundControl snd_ctrl)
 }
 #endif /* MSDOS */
 
+#ifndef WIN32
 static void SoundServer_InsertNewSound(struct SoundControl snd_ctrl)
 {
   int i, k;
@@ -511,6 +519,7 @@ static void SoundServer_InsertNewSound(struct SoundControl snd_ctrl)
     }
   }
 }
+#endif /* !WIN32 */
 
 /*
 void SoundServer_FadeSound(int nr)
@@ -526,6 +535,7 @@ void SoundServer_FadeSound(int nr)
 }
 */
 
+#ifndef WIN32
 #ifdef MSDOS
 static void SoundServer_StopSound(int nr)
 {
@@ -570,6 +580,7 @@ static void SoundServer_StopAllSounds()
 #endif
 }
 #endif /* MSDOS */
+#endif /* !WIN32 */
 
 #ifdef HPUX_AUDIO
 static void HPUX_Audio_Control()
@@ -594,8 +605,8 @@ static void HPUX_Audio_Control()
 }
 #endif /* HPUX_AUDIO */
 
-#ifndef VOXWARE
-#ifndef MSDOS
+#if !defined(VOXWARE) && !defined(MSDOS) && !defined(WIN32)
+
 /* these two are stolen from "sox"... :) */
 
 /*
@@ -699,8 +710,7 @@ static int ulaw_to_linear(unsigned char ulawbyte)
 
   return(sample);
 }
-#endif /* !MSDOS */
-#endif /* !VOXWARE */
+#endif /* !VOXWARE && !MSDOS && !WIN32 */
 
 /*** THE STUFF ABOVE IS ONLY USED BY THE SOUND SERVER CHILD PROCESS ***/
 
index ac3375454475790b1ca0e7553fa9feba4fb545e5..cd713c97e1962c95cfe82d357c8230462b4e8445 100644 (file)
@@ -88,10 +88,6 @@ inline void FlushDisplay()
 {
 #ifndef USE_SDL_LIBRARY
   XFlush(display);
-#else
-#if 0
-  SDL_UpdateRect(window, 0, 0, 0, 0);
-#endif
 #endif
 }
 
@@ -162,11 +158,24 @@ inline void NextEvent(Event *event)
 inline Key GetEventKey(KeyEvent *event, boolean with_modifiers)
 {
 #ifdef USE_SDL_LIBRARY
+  /*
+  printf("unicode == '%d', sym == '%d', mod == '0x%04x'\n",
+        (int)event->keysym.unicode,
+        (int)event->keysym.sym,
+        (int)SDL_GetModState());
+  */
+
   if (with_modifiers && event->keysym.unicode != 0)
     return event->keysym.unicode;
   else
     return event->keysym.sym;
 #else
+  /*
+  printf("with modifiers == '0x%04x', without modifiers == '0x%04x'\n",
+        (int)XLookupKeysym(event, event->state),
+        (int)XLookupKeysym(event, 0));
+  */
+
   if (with_modifiers)
     return XLookupKeysym(event, event->state);
   else
index f778c71583ff1bedb21cafdb12419046518506ac..4007a14768bf80c060733e0df3259583709db12d 100644 (file)
@@ -416,7 +416,7 @@ static void HandleTapeButtons(struct GadgetInfo *gi)
       {
        TapeStartRecording();
 
-#ifndef MSDOS
+#if !defined(MSDOS) && !defined(WIN32)
        if (options.network)
          SendToServer_StartPlaying();
        else
index 559e06bfb8f3e036f83840f7e0e350a8af3a3de6..685323c8a45ac9497ec0748431db40dd0133812d 100644 (file)
@@ -1783,7 +1783,7 @@ boolean Request(char *text, unsigned int req_state)
   int mx, my, ty, result = -1;
   unsigned int old_door_state;
 
-#ifndef MSDOS
+#if !defined(MSDOS) && !defined(WIN32)
   /* pause network game while waiting for request to answer */
   if (options.network &&
       game_status == PLAYING &&
@@ -2007,7 +2007,7 @@ boolean Request(char *text, unsigned int req_state)
 
   RemapAllGadgets();
 
-#ifndef MSDOS
+#if !defined(MSDOS) && !defined(WIN32)
   /* continue network game after request */
   if (options.network &&
       game_status == PLAYING &&
index ae68e3437ed403088d7cf0acafa88e0b4b71710b..e0e32dbbc1234da4e5a1916ff3b297742dda119a 100644 (file)
--- a/src/x11.h
+++ b/src/x11.h
@@ -93,6 +93,8 @@ typedef XClientMessageEvent   ClientMessageEvent;
 #define KEY_Meta_R             XK_Meta_R
 #define KEY_Alt_L              XK_Alt_L
 #define KEY_Alt_R              XK_Alt_R
+#define KEY_Super_L            XK_Super_L
+#define KEY_Super_R            XK_Super_R
 #define KEY_Mode_switch                XK_Mode_switch
 #define KEY_Multi_key          XK_Multi_key
 
@@ -104,6 +106,7 @@ typedef XClientMessageEvent ClientMessageEvent;
 #define KEY_End                        XK_End
 #define KEY_Page_Up            XK_Page_Up
 #define KEY_Page_Down          XK_Page_Down
+#define KEY_Menu               XK_Menu
 
 #define KEY_space              XK_space
 #define KEY_exclam             XK_exclam