Subversion Repositories Games.Chess Giants

Rev

Rev 21 | Rev 25 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 21 Rev 24
Line 40... Line 40...
40
   int column;
40
   int column;
41
   int index_line;
41
   int index_line;
42
   int index_column;
42
   int index_column;
43
   int part_index;
43
   int part_index;
44
   int part_color;
44
   int part_color;
-
 
45
   int viewer_index;
45
 
46
 
46
   // filter out the commonly used message values
47
   // filter out the commonly used message values
47
   wParam_hiword = HIWORD (wParam);
48
   wParam_hiword = HIWORD (wParam);
48
   wParam_loword = LOWORD (wParam);
49
   wParam_loword = LOWORD (wParam);
49
 
50
 
Line 211... Line 212...
211
      }
212
      }
212
 
213
 
213
      // chessboard menu, top view
214
      // chessboard menu, top view
214
      else if (wParam_loword == MENUID_CHESSBOARD_TOPVIEW)
215
      else if (wParam_loword == MENUID_CHESSBOARD_TOPVIEW)
215
      {
216
      {
-
 
217
         // cycle through both players and change their view angles EXCEPT the opponent if he's human
-
 
218
         for (viewer_index = 0; viewer_index < 2; viewer_index++)
-
 
219
            if ((the_board.players[viewer_index].type == PLAYER_COMPUTER)
-
 
220
                || (the_board.players[viewer_index].type == PLAYER_INTERNET)
-
 
221
                || (viewer_index == current_viewer))
-
 
222
            {
216
         the_board.players[current_viewer].view_pitch = 89.0f;
223
               the_board.players[viewer_index].view_pitch = 89.0f;
217
         the_board.players[current_viewer].view_yaw = (current_viewer == COLOR_BLACK ? 90.0f : -90.0f);
224
               the_board.players[viewer_index].view_yaw = (current_viewer == COLOR_BLACK ? 90.0f : -90.0f);
218
         the_board.players[current_viewer].view_distance = 58.0f;
225
               the_board.players[viewer_index].view_distance = 58.0f;
-
 
226
            }
219
      }
227
      }
220
 
228
 
221
      // chessboard menu, default view
229
      // chessboard menu, default view
222
      else if (wParam_loword == MENUID_CHESSBOARD_DEFAULTVIEW)
230
      else if (wParam_loword == MENUID_CHESSBOARD_DEFAULTVIEW)
223
      {
231
      {
-
 
232
         // cycle through both players and change their view angles EXCEPT the opponent if he's human
-
 
233
         for (viewer_index = 0; viewer_index < 2; viewer_index++)
-
 
234
            if ((the_board.players[viewer_index].type == PLAYER_COMPUTER)
-
 
235
                || (the_board.players[viewer_index].type == PLAYER_INTERNET)
-
 
236
                || (viewer_index == current_viewer))
-
 
237
            {
224
         the_board.players[current_viewer].view_pitch = 55.0f;
238
               the_board.players[viewer_index].view_pitch = 55.0f;
225
         the_board.players[current_viewer].view_yaw = (current_viewer == COLOR_BLACK ? 90.0f : -90.0f);
239
               the_board.players[viewer_index].view_yaw = (current_viewer == COLOR_BLACK ? 90.0f : -90.0f);
226
         the_board.players[current_viewer].view_distance = 70.0f;
240
               the_board.players[viewer_index].view_distance = 70.0f;
-
 
241
            }
227
      }
242
      }
228
 
243
 
229
      // chessboard menu, reset view
244
      // chessboard menu, reset view
230
      else if (wParam_loword == MENUID_CHESSBOARD_RESETVIEW)
245
      else if (wParam_loword == MENUID_CHESSBOARD_RESETVIEW)
231
      {
246
      {
-
 
247
         // cycle through both players and change their view angles EXCEPT the opponent if he's human
-
 
248
         for (viewer_index = 0; viewer_index < 2; viewer_index++)
-
 
249
            if ((the_board.players[viewer_index].type == PLAYER_COMPUTER)
-
 
250
                || (the_board.players[viewer_index].type == PLAYER_INTERNET)
-
 
251
                || (viewer_index == current_viewer))
-
 
252
            {
232
         the_board.players[current_viewer].view_pitch = the_board.players[current_viewer].custom_pitch;
253
               the_board.players[viewer_index].view_pitch = the_board.players[current_viewer].custom_pitch;
233
         the_board.players[current_viewer].view_yaw = the_board.players[current_viewer].custom_yaw;
254
               the_board.players[viewer_index].view_yaw = the_board.players[current_viewer].custom_yaw;
234
         the_board.players[current_viewer].view_distance = the_board.players[current_viewer].custom_distance;
255
               the_board.players[viewer_index].view_distance = the_board.players[current_viewer].custom_distance;
-
 
256
            }
235
      }
257
      }
236
 
258
 
237
      // chessboard menu, zoom in
259
      // chessboard menu, zoom in
238
      else if (wParam_loword == MENUID_CHESSBOARD_ZOOMIN)
260
      else if (wParam_loword == MENUID_CHESSBOARD_ZOOMIN)
239
      {
261
      {
Line 362... Line 384...
362
      {
384
      {
363
         prevgui_x = GET_X_LPARAM (lParam); // remember mouse coordinates
385
         prevgui_x = GET_X_LPARAM (lParam); // remember mouse coordinates
364
         prevgui_y = GET_Y_LPARAM (lParam);
386
         prevgui_y = GET_Y_LPARAM (lParam);
365
 
387
 
366
         // if we click something, stop moving the table immediately
388
         // if we click something, stop moving the table immediately
-
 
389
 
-
 
390
         // cycle through both players and change their view angles EXCEPT the opponent if he's human
-
 
391
         for (viewer_index = 0; viewer_index < 2; viewer_index++)
-
 
392
            if ((the_board.players[viewer_index].type == PLAYER_COMPUTER)
-
 
393
                || (the_board.players[viewer_index].type == PLAYER_INTERNET)
-
 
394
                || (viewer_index == current_viewer))
-
 
395
            {
367
         the_board.players[current_viewer].view_pitch = current_pitch;
396
               the_board.players[viewer_index].view_pitch = current_pitch;
368
         the_board.players[current_viewer].view_yaw = current_yaw;
397
               the_board.players[viewer_index].view_yaw = current_yaw;
-
 
398
            }
369
 
399
 
370
         rbutton_pushed = true; // remember button is clicked
400
         rbutton_pushed = true; // remember button is clicked
371
      }
401
      }
372
 
402
 
373
      // call the default window message processing function to keep things going
403
      // call the default window message processing function to keep things going
Line 665... Line 695...
665
 
695
 
666
      prevgui_x = GET_X_LPARAM (lParam); // remember mouse coordinates
696
      prevgui_x = GET_X_LPARAM (lParam); // remember mouse coordinates
667
      prevgui_y = GET_Y_LPARAM (lParam);
697
      prevgui_y = GET_Y_LPARAM (lParam);
668
 
698
 
669
      // if we click something, stop moving the table immediately
699
      // if we click something, stop moving the table immediately
-
 
700
 
-
 
701
      // cycle through both players and change their view angles EXCEPT the opponent if he's human
-
 
702
      for (viewer_index = 0; viewer_index < 2; viewer_index++)
-
 
703
         if ((the_board.players[viewer_index].type == PLAYER_COMPUTER)
-
 
704
               || (the_board.players[viewer_index].type == PLAYER_INTERNET)
-
 
705
               || (viewer_index == current_viewer))
-
 
706
         {
670
      the_board.players[current_viewer].view_pitch = current_pitch;
707
            the_board.players[viewer_index].view_pitch = current_pitch;
671
      the_board.players[current_viewer].view_yaw = current_yaw;
708
            the_board.players[viewer_index].view_yaw = current_yaw;
-
 
709
         }
672
 
710
 
673
      rbutton_pushed = true; // remember button is clicked
711
      rbutton_pushed = true; // remember button is clicked
674
 
712
 
675
      // call the default window message processing function to keep things going
713
      // call the default window message processing function to keep things going
676
      return (DefWindowProc (hWnd, message, wParam, lParam));
714
      return (DefWindowProc (hWnd, message, wParam, lParam));
Line 773... Line 811...
773
      opposite_player = Player_GetOpposite ();
811
      opposite_player = Player_GetOpposite ();
774
 
812
 
775
      // if right button was clicked, compute new pitch and yaw
813
      // if right button was clicked, compute new pitch and yaw
776
      if (rbutton_pushed)
814
      if (rbutton_pushed)
777
      {
815
      {
-
 
816
         // cycle through both players and change their view angles EXCEPT the opponent if he's human
-
 
817
         for (viewer_index = 0; viewer_index < 2; viewer_index++)
-
 
818
            if ((the_board.players[viewer_index].type == PLAYER_COMPUTER)
-
 
819
                || (the_board.players[viewer_index].type == PLAYER_INTERNET)
-
 
820
                || (viewer_index == current_viewer))
-
 
821
            {
778
         the_board.players[current_viewer].view_pitch += (gui_y - prevgui_y) * 0.3f;
822
               the_board.players[viewer_index].view_pitch += (gui_y - prevgui_y) * 0.3f;
779
         if (the_board.players[current_viewer].view_pitch < 10.0f)
823
               if (the_board.players[viewer_index].view_pitch < 10.0f)
780
            the_board.players[current_viewer].view_pitch = 10.0f; // wrap angles around so that they
824
                  the_board.players[viewer_index].view_pitch = 10.0f; // wrap angles around so that they
781
         if (the_board.players[current_viewer].view_pitch > 89.0f)
825
               if (the_board.players[viewer_index].view_pitch > 89.0f)
782
            the_board.players[current_viewer].view_pitch = 89.0f; // stay in the [10, 89] bounds
826
                  the_board.players[viewer_index].view_pitch = 89.0f; // stay in the [10, 89] bounds
783
 
827
 
784
         the_board.players[current_viewer].view_yaw += (gui_x - prevgui_x) * 0.3f;
828
               the_board.players[viewer_index].view_yaw += (gui_x - prevgui_x) * 0.3f;
785
         the_board.players[current_viewer].view_yaw = WrapAngle (the_board.players[current_viewer].view_yaw);
829
               the_board.players[viewer_index].view_yaw = WrapAngle (the_board.players[viewer_index].view_yaw);
786
 
830
 
787
         // save these as the new custom angles
831
               // save these as the new custom angles
788
         the_board.players[current_viewer].custom_pitch = the_board.players[current_viewer].view_pitch;
832
               the_board.players[viewer_index].custom_pitch = the_board.players[viewer_index].view_pitch;
789
         the_board.players[current_viewer].custom_yaw = the_board.players[current_viewer].view_yaw;
833
               the_board.players[viewer_index].custom_yaw = the_board.players[viewer_index].view_yaw;
790
 
834
 
791
         // when moving the table around, jump to ideal angles immediately
835
               // when moving the table around, jump to ideal angles immediately
792
         current_pitch = the_board.players[current_viewer].view_pitch;
836
               current_pitch = the_board.players[viewer_index].view_pitch;
793
         current_yaw = the_board.players[current_viewer].view_yaw;
837
               current_yaw = the_board.players[viewer_index].view_yaw;
-
 
838
            }
794
 
839
 
795
         the_scene.update = true; // button was clicked, update the 3D scene
840
         the_scene.update = true; // button was clicked, update the 3D scene
796
      }
841
      }
797
 
842
 
798
      // else it's just the mouse wandering around ; have we the right to select something ?
843
      // else it's just the mouse wandering around ; have we the right to select something ?