rnd-19981019-1
[rocksndiamonds.git] / src / screens.c
index a4489ab32048405e751f341063fdc5cd251a21c8..37722a2468e215423cbd3b283ce6e689af6a31cb 100644 (file)
@@ -215,16 +215,16 @@ void HandleMainMenu(int mx, int my, int dx, int dy, int button)
       }
       else if (y==8)
       {
-       if (autorecord_on)
+       if (setup.autorecord_on)
          TapeStartRecording();
 
-       if (standalone)
+       if (options.network)
+         SendToServer_StartPlaying();
+       else
        {
          game_status = PLAYING;
          InitGame();
        }
-       else
-         SendToServer_StartPlaying();
       }
       else if (y==9)
       {
@@ -234,7 +234,7 @@ void HandleMainMenu(int mx, int my, int dx, int dy, int button)
       else if (y==10)
       {
        SavePlayerInfo(PLAYER_LEVEL);
-        if (Request("Do you really want to quit ?",REQ_ASK|REQ_STAY_CLOSED))
+        if (Request("Do you really want to quit ?", REQ_ASK | REQ_STAY_CLOSED))
          game_status = EXITGAME;
       }
 
@@ -1135,6 +1135,61 @@ void HandleSetupScreen(int mx, int my, int dx, int dy, int button)
     DoAnimation();
 }
 
+static int readJoystick_TEST()
+{
+  int result = -1;
+
+  InitAnimation();
+
+  while(result < 0)
+  {
+    DoAnimation();
+    Delay(10);
+
+    if (XPending(display))
+    {
+      XEvent event;
+
+      XNextEvent(display, &event);
+      switch(event.type)
+      {
+       case Expose:
+         HandleExposeEvent((XExposeEvent *) &event);
+         break;
+       case UnmapNotify:
+         SleepWhileUnmapped();
+         break;
+       case KeyPress:
+         switch(XLookupKeysym((XKeyEvent *)&event,
+                              ((XKeyEvent *)&event)->state))
+         {
+           case XK_Return:
+             result = 1;
+             break;
+           case XK_Escape:
+             result = 0;
+             break;
+         }
+         break;
+       case KeyRelease:
+         key_joystick_mapping = 0;
+         break;
+       case FocusIn:
+       case FocusOut:
+         HandleFocusEvent((XFocusChangeEvent *) &event);
+         break;
+        case ClientMessage:
+         HandleClientMessageEvent((XClientMessageEvent *) &event);
+         break;
+       default:
+         break;
+      }
+    }
+  }
+
+  StopAnimation();
+}
+
 void CalibrateJoystick()
 {
 #ifdef __FreeBSD__
@@ -1245,12 +1300,12 @@ void CalibrateJoystick()
   new_joystick_xmiddle = joy_ctrl.x;
   new_joystick_ymiddle = joy_ctrl.y;
 
-  joystick[joystick_nr].xleft = new_joystick_xleft;
-  joystick[joystick_nr].yupper = new_joystick_yupper;
-  joystick[joystick_nr].xright = new_joystick_xright;
-  joystick[joystick_nr].ylower = new_joystick_ylower;
-  joystick[joystick_nr].xmiddle = new_joystick_xmiddle;
-  joystick[joystick_nr].ymiddle = new_joystick_ymiddle;
+  joystick[setup.joystick_nr].xleft = new_joystick_xleft;
+  joystick[setup.joystick_nr].yupper = new_joystick_yupper;
+  joystick[setup.joystick_nr].xright = new_joystick_xright;
+  joystick[setup.joystick_nr].ylower = new_joystick_ylower;
+  joystick[setup.joystick_nr].xmiddle = new_joystick_xmiddle;
+  joystick[setup.joystick_nr].ymiddle = new_joystick_ymiddle;
 
   CheckJoystickData();
 
@@ -1345,24 +1400,27 @@ void HandleVideoButtons(int mx, int my, int button)
       }
       DrawCompleteVideoDisplay();
       break;
+
     case BUTTON_VIDEO_STOP:
       TapeStop();
       break;
+
     case BUTTON_VIDEO_PAUSE:
       TapeTogglePause();
       break;
+
     case BUTTON_VIDEO_REC:
       if (TAPE_IS_STOPPED(tape))
       {
        TapeStartRecording();
 
-       if (standalone)
+       if (options.network)
+         SendToServer_StartPlaying();
+       else
        {
          game_status = PLAYING;
          InitGame();
        }
-       else
-         SendToServer_StartPlaying();
       }
       else if (tape.pausing)
       {
@@ -1379,6 +1437,7 @@ void HandleVideoButtons(int mx, int my, int button)
          TapeTogglePause();
       }
       break;
+
     case BUTTON_VIDEO_PLAY:
       if (TAPE_IS_EMPTY(tape))
        break;
@@ -1387,13 +1446,8 @@ void HandleVideoButtons(int mx, int my, int button)
       {
        TapeStartPlaying();
 
-       if (standalone)
-       {
-         game_status = PLAYING;
-         InitGame();
-       }
-       else
-         SendToServer_StartPlaying();
+       game_status = PLAYING;
+       InitGame();
       }
       else if (tape.playing)
       {
@@ -1417,6 +1471,7 @@ void HandleVideoButtons(int mx, int my, int button)
        }
       }
       break;
+
     default:
       break;
   }
@@ -1432,16 +1487,16 @@ void HandleSoundButtons(int mx, int my, int button)
   switch(CheckSoundButtons(mx,my,button))
   {
     case BUTTON_SOUND_MUSIC:
-      if (sound_music_on)
+      if (setup.sound_music_on)
       { 
-       sound_music_on = FALSE;
+       setup.sound_music_on = FALSE;
        local_player->setup &= ~SETUP_SOUND_MUSIC;
        FadeSound(background_loop[level_nr % num_bg_loops]);
        DrawSoundDisplay(BUTTON_SOUND_MUSIC_OFF);
       }
       else if (sound_loops_allowed)
       { 
-       sound_on = sound_music_on = TRUE;
+       setup.sound_on = setup.sound_music_on = TRUE;
        local_player->setup |= (SETUP_SOUND | SETUP_SOUND_MUSIC);
        PlaySoundLoop(background_loop[level_nr % num_bg_loops]);
        DrawSoundDisplay(BUTTON_SOUND_MUSIC_ON);
@@ -1449,38 +1504,41 @@ void HandleSoundButtons(int mx, int my, int button)
       else
        DrawSoundDisplay(BUTTON_SOUND_MUSIC_OFF);
       break;
+
     case BUTTON_SOUND_LOOPS:
-      if (sound_loops_on)
+      if (setup.sound_loops_on)
       { 
-       sound_loops_on = FALSE;
+       setup.sound_loops_on = FALSE;
        local_player->setup &= ~SETUP_SOUND_LOOPS;
        DrawSoundDisplay(BUTTON_SOUND_LOOPS_OFF);
       }
       else if (sound_loops_allowed)
       { 
-       sound_on = sound_loops_on = TRUE;
+       setup.sound_on = setup.sound_loops_on = TRUE;
        local_player->setup |= (SETUP_SOUND | SETUP_SOUND_LOOPS);
        DrawSoundDisplay(BUTTON_SOUND_LOOPS_ON);
       }
       else
        DrawSoundDisplay(BUTTON_SOUND_LOOPS_OFF);
       break;
+
     case BUTTON_SOUND_SIMPLE:
-      if (sound_simple_on)
+      if (setup.sound_simple_on)
       { 
-       sound_simple_on = FALSE;
+       setup.sound_simple_on = FALSE;
        local_player->setup &= ~SETUP_SOUND;
        DrawSoundDisplay(BUTTON_SOUND_SIMPLE_OFF);
       }
       else if (sound_status==SOUND_AVAILABLE)
       { 
-       sound_on = sound_simple_on = TRUE;
+       setup.sound_on = setup.sound_simple_on = TRUE;
        local_player->setup |= SETUP_SOUND;
        DrawSoundDisplay(BUTTON_SOUND_SIMPLE_ON);
       }
       else
        DrawSoundDisplay(BUTTON_SOUND_SIMPLE_OFF);
       break;
+
     default:
       break;
   }
@@ -1507,46 +1565,67 @@ void HandleGameButtons(int mx, int my, int button)
       if (Request("Do you really want to quit the game ?",
                  REQ_ASK | REQ_STAY_CLOSED))
       { 
-       game_status = MAINMENU;
-       DrawMainMenu();
+       if (options.network)
+         SendToServer_StopPlaying();
+       else
+       {
+         game_status = MAINMENU;
+         DrawMainMenu();
+       }
       }
       else
        OpenDoor(DOOR_OPEN_1 | DOOR_COPY_BACK);
       break;
+
     case BUTTON_GAME_PAUSE:
+      if (options.network)
+      {
+       if (tape.pausing)
+         SendToServer_ContinuePlaying();
+       else
+         SendToServer_PausePlaying();
+      }
+      else
+       TapeTogglePause();
+
+      /*
       if (tape.pausing)
       {
-       if (standalone)
+       if (options.network)
+         SendToServer_ContinuePlaying();
+       else
        {
          tape.pausing = FALSE;
          DrawVideoDisplay(VIDEO_STATE_PAUSE_OFF,0);
        }
-       else
-         SendToServer_ContinuePlaying();
       }
       else
       {
-       if (standalone)
+       if (options.network)
+         SendToServer_PausePlaying();
+       else
        {
          tape.pausing = TRUE;
          DrawVideoDisplay(VIDEO_STATE_PAUSE_ON,0);
        }
-       else
-         SendToServer_PausePlaying();
       }
+      */
+
       break;
+
     case BUTTON_GAME_PLAY:
       if (tape.pausing)
       {
-       if (standalone)
+       if (options.network)
+         SendToServer_ContinuePlaying();
+       else
        {
          tape.pausing = FALSE;
          DrawVideoDisplay(VIDEO_STATE_PAUSE_OFF,0);
        }
-       else
-         SendToServer_ContinuePlaying();
       }
       break;
+
     default:
       break;
   }