Rev 130 | Rev 140 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
| Rev 130 | Rev 136 | ||
|---|---|---|---|
| Line 42... | Line 42... | ||
| 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 | int viewer_index; |
| 46 | RECT rect; |
46 | RECT rect; |
| - | 47 | POINT point; |
|
| 47 | 48 | ||
| 48 | // filter out the commonly used message values |
49 | // filter out the commonly used message values |
| 49 | wParam_hiword = HIWORD (wParam); |
50 | wParam_hiword = HIWORD (wParam); |
| 50 | wParam_loword = LOWORD (wParam); |
51 | wParam_loword = LOWORD (wParam); |
| 51 | 52 | ||
| Line 110... | Line 111... | ||
| 110 | 111 | ||
| 111 | // game menu, new game |
112 | // game menu, new game |
| 112 | if (wParam_loword == MENUID_GAME_NEWGAME) |
113 | if (wParam_loword == MENUID_GAME_NEWGAME) |
| 113 | { |
114 | { |
| 114 | if ((the_board.game_state == STATE_PLAYING) && (the_board.move_count > 1)) |
115 | if ((the_board.game_state == STATE_PLAYING) && (the_board.move_count > 1)) |
| 115 | DialogBox_Resign (); // if a game is playing, ask to resign first |
116 | DialogBox_Resign (RESIGNTYPE_NEWGAME); // if a game is playing, ask to resign first |
| 116 | else |
117 | else |
| 117 | DialogBox_NewGame (); // game not started yet, show the new game dialog box |
118 | DialogBox_NewGame (); // game not started yet, show the new game dialog box |
| 118 | } |
119 | } |
| 119 | 120 | ||
| 120 | // game menu, setup start position |
121 | // game menu, setup start position |
| 121 | else if (wParam_loword == MENUID_GAME_SETUPPOSITION) |
122 | else if (wParam_loword == MENUID_GAME_SETUPPOSITION) |
| - | 123 | Board_EnterSetupPosition (&the_board); // enter setup position mode |
|
| - | 124 | ||
| - | 125 | // game menu, load game |
|
| - | 126 | else if (wParam_loword == MENUID_GAME_LOAD) |
|
| 122 | { |
127 | { |
| 123 | if ((the_board.game_state == STATE_PLAYING) && (the_board.move_count > 1)) |
128 | if ((the_board.game_state == STATE_PLAYING) && (the_board.move_count > 1)) |
| 124 | DialogBox_Resign (); // if a game is playing, ask to resign first |
129 | DialogBox_Resign (RESIGNTYPE_LOADGAME); // if a game is playing, ask to resign first |
| 125 | else |
130 | else |
| 126 | { |
- | |
| 127 | current_move = &the_board.moves[0]; // quick access to start move |
- | |
| 128 | memset (¤t_move->slots, 0, sizeof (current_move->slots)); // erase all slots |
- | |
| 129 | - | ||
| 130 | the_board.game_state = STATE_SETUPPOSITION; // game not started yet, enter board setup mode |
- | |
| 131 |
|
131 | DialogBox_Load (); // fire up the load dialog box |
| 132 | - | ||
| 133 | // display the "please choose start position" phrase in the middle of the screen |
- | |
| 134 | Scene_SetText (&the_scene.gui.central_text, 50.0f, 50.0f, -1, ALIGN_CENTER, ALIGN_CENTER, ALIGN_CENTER, centermsg_fontindex, RGBA_TO_RGBACOLOR (255, 255, 255, 191), |
- | |
| 135 | 999999.0f, true, LOCALIZE (L"SetupMode")); |
- | |
| 136 | the_scene.gui.partspick_selectedpart = ' '; // no selected part yet |
- | |
| 137 | the_scene.update = true; // and update the 3D scene |
- | |
| 138 | } |
- | |
| 139 | } |
132 | } |
| 140 | - | ||
| 141 | // game menu, load game |
- | |
| 142 | else if (wParam_loword == MENUID_GAME_LOAD) |
- | |
| 143 | DialogBox_Load (); // fire up the load dialog box |
- | |
| 144 | 133 | ||
| 145 | // game menu, save game |
134 | // game menu, save game |
| 146 | else if (wParam_loword == MENUID_GAME_SAVE) |
135 | else if (wParam_loword == MENUID_GAME_SAVE) |
| 147 | { |
136 | { |
| 148 | if (save_pathname[0] != 0) |
137 | if (save_pathname[0] != 0) |
| Line 167... | Line 156... | ||
| 167 | the_board.reevaluate = true; // evaluate board again |
156 | the_board.reevaluate = true; // evaluate board again |
| 168 | } |
157 | } |
| 169 | 158 | ||
| 170 | // game menu, resign |
159 | // game menu, resign |
| 171 | else if (wParam_loword == MENUID_GAME_RESIGN) |
160 | else if (wParam_loword == MENUID_GAME_RESIGN) |
| 172 | DialogBox_Resign (); // if a game has started, ask for confirmation |
161 | DialogBox_Resign (RESIGNTYPE_UNDEFINED); // if a game has started, ask for confirmation |
| 173 | 162 | ||
| 174 | // game menu, statistics (stats are only available in online mode) |
163 | // game menu, statistics (stats are only available in online mode) |
| 175 | else if (wParam_loword == MENUID_GAME_STATISTICS) |
164 | else if (wParam_loword == MENUID_GAME_STATISTICS) |
| 176 | { |
165 | { |
| 177 | local_player = Player_FindByType (PLAYER_HUMAN); |
166 | local_player = Player_FindByType (PLAYER_HUMAN); |
| Line 189... | Line 178... | ||
| 189 | if ((the_board.game_state == STATE_PLAYING) && ((the_board.move_count > 1) || (remote_player != NULL))) |
178 | if ((the_board.game_state == STATE_PLAYING) && ((the_board.move_count > 1) || (remote_player != NULL))) |
| 190 | DialogBox_Quit (); // if a game has started OR if we are online against somebody, ask for confirmation |
179 | DialogBox_Quit (); // if a game has started OR if we are online against somebody, ask for confirmation |
| 191 | else |
180 | else |
| 192 | is_dialogbox_quit_validated = true; // if game hasn't started yet, quit without question |
181 | is_dialogbox_quit_validated = true; // if game hasn't started yet, quit without question |
| 193 | } |
182 | } |
| 194 | - | ||
| 195 | // chessboard menu, suggest move |
- | |
| 196 | else if (wParam_loword == MENUID_CHESSBOARD_SUGGESTMOVE) |
- | |
| 197 | the_board.players[current_viewer].wants_hint = true; // remember this player wants a hint |
- | |
| 198 | 183 | ||
| 199 | // chessboard menu, cancel last move |
184 | // chessboard menu, cancel last move |
| 200 | else if (wParam_loword == |
185 | else if (wParam_loword == MENUID_MOVE_CANCELLASTMOVE) |
| 201 | the_board.players[current_viewer].wants_cancel = true; // remember this player wants to cancel his last move |
186 | the_board.players[current_viewer].wants_cancel = true; // remember this player wants to cancel his last move |
| - | 187 | ||
| - | 188 | // chessboard menu, suggest move |
|
| - | 189 | else if (wParam_loword == MENUID_MOVE_SUGGESTMOVE) |
|
| - | 190 | the_board.players[current_viewer].wants_hint = true; // remember this player wants a hint |
|
| 202 | 191 | ||
| 203 | // chessboard menu, comment move |
192 | // chessboard menu, comment move |
| 204 | else if (wParam_loword == |
193 | else if (wParam_loword == MENUID_MOVE_COMMENTMOVE) |
| 205 | DialogBox_Comment (); // fire up the comment dialog box |
194 | DialogBox_Comment (); // fire up the comment dialog box |
| 206 | 195 | ||
| 207 | // chessboard menu, go to move |
196 | // chessboard menu, go to move |
| 208 | else if (wParam_loword == |
197 | else if (wParam_loword == MENUID_MOVE_GOTOMOVE) |
| 209 | DialogBox_GoToMove (); // fire up the go to move dialog box |
198 | DialogBox_GoToMove (); // fire up the go to move dialog box |
| 210 | 199 | ||
| 211 | // chessboard menu, swap sides |
200 | // chessboard menu, swap sides |
| 212 | else if (wParam_loword == MENUID_CHESSBOARD_SWAPSIDES) |
201 | else if (wParam_loword == MENUID_CHESSBOARD_SWAPSIDES) |
| 213 | the_board.want_playerswap = true; // remember board sides are to be swapped |
202 | the_board.want_playerswap = true; // remember board sides are to be swapped |
| Line 541... | Line 530... | ||
| 541 | } |
530 | } |
| 542 | } |
531 | } |
| 543 | 532 | ||
| 544 | // if we are not allowed to select anything, don't even try |
533 | // if we are not allowed to select anything, don't even try |
| 545 | if (is_paused || (current_player->type != PLAYER_HUMAN) || (the_board.viewed_move != the_board.move_count - 1) |
534 | if (is_paused || (current_player->type != PLAYER_HUMAN) || (the_board.viewed_move != the_board.move_count - 1) |
| - | 535 | || ((the_board.game_state != STATE_SETUPPOSITION) && (the_board.game_state != STATE_PLAYING)) |
|
| 546 | || ((remote_player != NULL) && !remote_player->is_in_game)) |
536 | || ((remote_player != NULL) && !remote_player->is_in_game)) |
| 547 | { |
537 | { |
| 548 | the_scene.update = true; // update the 3D scene |
538 | the_scene.update = true; // update the 3D scene |
| 549 | 539 | ||
| 550 | // call the default window message processing function to keep things going |
540 | // call the default window message processing function to keep things going |
| Line 921... | Line 911... | ||
| 921 | // do they differ from last time ? |
911 | // do they differ from last time ? |
| 922 | if ((the_board.hovered_position[0] != prev_hovered_position[0]) || (the_board.hovered_position[1] != prev_hovered_position[1])) |
912 | if ((the_board.hovered_position[0] != prev_hovered_position[0]) || (the_board.hovered_position[1] != prev_hovered_position[1])) |
| 923 | the_scene.update = true; // if so, update scene |
913 | the_scene.update = true; // if so, update scene |
| 924 | } |
914 | } |
| 925 | 915 | ||
| 926 | // has the user the right to leave a |
916 | // has the user the right to leave a comment AND is there no comment yet ? |
| 927 | if ((the_board.game_state >= STATE_PLAYING) && (the_board.viewed_move > 0) |
917 | if ((the_board.game_state >= STATE_PLAYING) && (the_board.viewed_move > 0) |
| 928 | && ((the_board.moves[the_board.viewed_move].comment == NULL) || (the_board.moves[the_board.viewed_move].comment[0] == 0))) |
918 | && ((the_board.moves[the_board.viewed_move].comment == NULL) || (the_board.moves[the_board.viewed_move].comment[0] == 0))) |
| 929 | { |
919 | { |
| 930 | // is the mouse above the comments zone ? if so, display a dimmed hint text |
920 | // is the mouse above the comments zone ? if so, display a dimmed hint text |
| 931 | if (Render_IsMouseInBox (gui_x, gui_y, 30.0f, 0.0f, 40.0f, 10.0f)) |
921 | if (Render_IsMouseInBox (gui_x, gui_y, 30.0f, 0.0f, 40.0f, 10.0f)) |
| Line 965... | Line 955... | ||
| 965 | // are we in board closeup mode OR are we online AND do we NOT have the right to select anything ? |
955 | // are we in board closeup mode OR are we online AND do we NOT have the right to select anything ? |
| 966 | if (((current_distance == CLOSEUP_VIEW_DISTANCE) && (current_pitch == CLOSEUP_VIEW_PITCH)) |
956 | if (((current_distance == CLOSEUP_VIEW_DISTANCE) && (current_pitch == CLOSEUP_VIEW_PITCH)) |
| 967 | || ((remote_player != NULL) && !remote_player->is_in_game)) |
957 | || ((remote_player != NULL) && !remote_player->is_in_game)) |
| 968 | return (DefWindowProc (hWnd, message, wParam, lParam)); // if so, call the default window message processing function to keep things going |
958 | return (DefWindowProc (hWnd, message, wParam, lParam)); // if so, call the default window message processing function to keep things going |
| 969 | 959 | ||
| - | 960 | // get mouse coordinates (strangely enough, the WM_MOUSEWHEEL message outputs ABSOLUTE coordinates, and we need to convert them...) |
|
| - | 961 | point.x = GET_X_LPARAM (lParam); |
|
| - | 962 | point.y = GET_Y_LPARAM (lParam); |
|
| 970 |
|
963 | ScreenToClient (hWnd, &point); |
| - | 964 | gui_x = point.x; |
|
| - | 965 | gui_y = point.y; |
|
| - | 966 | ||
| - | 967 | // is a game history displayed and are we (roughly) hovering this area ? |
|
| - | 968 | if (the_scene.gui.history_text.is_displayed && Render_IsMouseInBox (gui_x, gui_y, 90.0f, 10.0f, 10.0f, 40.0f)) |
|
| - | 969 | { |
|
| - | 970 | // we want to scroll through the game history rather than zooming in/out. Scroll up or scroll down ? |
|
| - | 971 | if ((GET_WHEEL_DELTA_WPARAM (wParam) > 0) && (the_scene.gui.larrow.state != 0)) |
|
| - | 972 | SendMessage (hWnd, WM_COMMAND, MENUID_CHESSBOARD_PREVIOUSMOVE, NULL); // send a "previous move" event |
|
| - | 973 | else if ((GET_WHEEL_DELTA_WPARAM (wParam) < 0) && (the_scene.gui.rarrow.state != 0)) |
|
| - | 974 | SendMessage (hWnd, WM_COMMAND, MENUID_CHESSBOARD_NEXTMOVE, NULL); // send a "next move" event |
|
| - | 975 | ||
| - | 976 | return (DefWindowProc (hWnd, message, wParam, lParam)); // and call the default window message processing function to keep things going |
|
| - | 977 | } |
|
| - | 978 | ||
| - | 979 | // we want to zoom in/out of the scene. Scroll up or scroll down ? |
|
| 971 | if (GET_WHEEL_DELTA_WPARAM (wParam) > 0) |
980 | if (GET_WHEEL_DELTA_WPARAM (wParam) > 0) |
| 972 | the_board.players[current_viewer].view_distance = max (MIN_VIEW_DISTANCE, the_board.players[current_viewer].view_distance - 2.0f); |
981 | the_board.players[current_viewer].view_distance = max (MIN_VIEW_DISTANCE, the_board.players[current_viewer].view_distance - 2.0f); |
| 973 | else if (GET_WHEEL_DELTA_WPARAM (wParam) < 0) |
982 | else if (GET_WHEEL_DELTA_WPARAM (wParam) < 0) |
| 974 | the_board.players[current_viewer].view_distance = min (MAX_VIEW_DISTANCE, the_board.players[current_viewer].view_distance + 2.0f); |
983 | the_board.players[current_viewer].view_distance = min (MAX_VIEW_DISTANCE, the_board.players[current_viewer].view_distance + 2.0f); |
| 975 | 984 | ||