Rev 186 | Rev 193 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
| Rev 186 | Rev 192 | ||
|---|---|---|---|
| Line 140... | Line 140... | ||
| 140 | engineprogram_t *program; |
140 | engineprogram_t *program; |
| 141 | wchar_t line_buffer[1024]; |
141 | wchar_t line_buffer[1024]; |
| 142 | wchar_t *line_pointer; |
142 | wchar_t *line_pointer; |
| 143 | wchar_t *move_string; |
143 | wchar_t *move_string; |
| 144 | int64_t exit_code; |
144 | int64_t exit_code; |
| - | 145 | int engine_index; |
|
| 145 | int char_index; |
146 | int char_index; |
| 146 | int length; |
147 | int length; |
| 147 | boardmove_t move; |
148 | boardmove_t move; |
| 148 | player_t *current_player; |
149 | player_t *current_player; |
| 149 | player_t *opposite_player; |
150 | player_t *opposite_player; |
| Line 169... | Line 170... | ||
| 169 | Audio_PlaySoundAtCenter (opposite_player->type == PLAYER_HUMAN ? SOUNDTYPE_VICTORY : SOUNDTYPE_DEFEAT); |
170 | Audio_PlaySoundAtCenter (opposite_player->type == PLAYER_HUMAN ? SOUNDTYPE_VICTORY : SOUNDTYPE_DEFEAT); |
| 170 | 171 | ||
| 171 | // display a crash notification dialog box |
172 | // display a crash notification dialog box |
| 172 | if (MessageBox (hMainWnd, LOCALIZE (L"Error_EngineCrashed"), LOCALIZE (L"ImportantMessage"), MB_ICONWARNING | MB_YESNO) == IDYES) |
173 | if (MessageBox (hMainWnd, LOCALIZE (L"Error_EngineCrashed"), LOCALIZE (L"ImportantMessage"), MB_ICONWARNING | MB_YESNO) == IDYES) |
| 173 | { |
174 | { |
| 174 | sprintf_s ((char *) line_buffer, sizeof (line_buffer), "engine disappeared unexpectedly (exit code %lld)", exit_code); |
175 | sprintf_s ((char *) line_buffer, sizeof (line_buffer), "engine disappeared unexpectedly (exit code %lld / 0x%llx)", exit_code, exit_code); |
| 175 | if (Debug_SendLogToAuthor ((char *) line_buffer, true)) |
176 | if (Debug_SendLogToAuthor ((char *) line_buffer, true)) |
| 176 | MessageBox (hMainWnd, LOCALIZE (L"MessageSent"), PROGRAM_NAME, MB_ICONINFORMATION | MB_OK); // send the game engine history to the author |
177 | MessageBox (hMainWnd, LOCALIZE (L"MessageSent"), PROGRAM_NAME, MB_ICONINFORMATION | MB_OK); // send the game engine history to the author |
| 177 | else |
178 | else |
| 178 | MessageBox (hMainWnd, LOCALIZE (L"NoInternetConnection"), LOCALIZE (L"FatalError"), MB_ICONWARNING | MB_OK); // and display an error message if failed |
179 | MessageBox (hMainWnd, LOCALIZE (L"NoInternetConnection"), LOCALIZE (L"FatalError"), MB_ICONWARNING | MB_OK); // and display an error message if failed |
| 179 | } |
180 | } |
| Line 181... | Line 182... | ||
| 181 | // and display the game over dialog box |
182 | // and display the game over dialog box |
| 182 | the_board.game_state = (opposite_player->color == COLOR_BLACK ? STATE_WHITEWIN_RESIGNORFORFEIT : STATE_BLACKWIN_RESIGNORFORFEIT); |
183 | the_board.game_state = (opposite_player->color == COLOR_BLACK ? STATE_WHITEWIN_RESIGNORFORFEIT : STATE_BLACKWIN_RESIGNORFORFEIT); |
| 183 | DialogBox_EndGame (); |
184 | DialogBox_EndGame (); |
| 184 | 185 | ||
| 185 | do_update = true; // remember to update the 3D scene |
186 | do_update = true; // remember to update the 3D scene |
| - | 187 | ||
| - | 188 | // no matter what the cause was, remember this engine crashed and select the next one in list for the next game |
|
| - | 189 | options.engine.programs[options.engine.selected_program].already_crashed = true; // remember this engine crashed |
|
| - | 190 | for (engine_index = (options.engine.selected_program + 1) % options.engine.program_count; engine_index != options.engine.selected_program; engine_index = (engine_index + 1) % options.engine.program_count) |
|
| - | 191 | if (!options.engine.programs[engine_index].already_crashed) |
|
| - | 192 | { |
|
| - | 193 | options.engine.selected_program = engine_index; // select the first next engine in list that hasn't crashed yet |
|
| - | 194 | break; // and stop searching |
|
| - | 195 | } |
|
| 186 | } |
196 | } |
| 187 | 197 | ||
| 188 | // read from pipe (non-blocking) |
198 | // read from pipe (non-blocking) |
| 189 | PlayerEngine_Recv (player); |
199 | PlayerEngine_Recv (player); |
| 190 | 200 | ||