Subversion Repositories Games.Chess Giants

Rev

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

Rev 119 Rev 136
Line 276... Line 276...
276
            char_index++; // figure out where the next word starts
276
            char_index++; // figure out where the next word starts
277
 
277
 
278
         continue; // and proceed to the next data
278
         continue; // and proceed to the next data
279
      }
279
      }
280
 
280
 
281
      // else is it a game result ?
281
      // else is it a game end marker ?
282
      else if ((strncmp (&pgnfile_data[char_index], "1/2-1/2", 7) == 0)
282
      else if ((strncmp (&pgnfile_data[char_index], "1/2-1/2", 7) == 0)
283
               || (strncmp (&pgnfile_data[char_index], "1-0", 3) == 0)
283
               || (strncmp (&pgnfile_data[char_index], "1-0", 3) == 0)
284
               || (strncmp (&pgnfile_data[char_index], "0-1", 3) == 0)
284
               || (strncmp (&pgnfile_data[char_index], "0-1", 3) == 0)
285
               || (pgnfile_data[char_index] == '*'))
285
               || (pgnfile_data[char_index] == '*'))
286
      {
286
      {
Line 294... Line 294...
294
            new_move.source[1] = -1;
294
            new_move.source[1] = -1;
295
            new_move.target[0] = -1;
295
            new_move.target[0] = -1;
296
            new_move.target[1] = -1;
296
            new_move.target[1] = -1;
297
            new_move.promotion_type = 0;
297
            new_move.promotion_type = 0;
298
            pgn_comment[0] = 0; // reset comment
298
            pgn_comment[0] = 0; // reset comment
-
 
299
         }
-
 
300
 
-
 
301
         // has the game been closed ?
-
 
302
         if (strncmp (&pgnfile_data[char_index], "1/2-1/2", 7) == 0)
-
 
303
            board->game_state = STATE_DRAW_OTHER; // game closed on a draw (FIXME: identify variants)
-
 
304
         else if (strncmp (&pgnfile_data[char_index], "1-0", 7) == 0)
-
 
305
         {
-
 
306
            // see if it's a checkmate
-
 
307
            if (board->moves[board->move_count - 1].is_check && board->moves[board->move_count - 1].is_stalemate)
-
 
308
               board->game_state = STATE_WHITEWIN_CHECKMATE; // game was won by white on a checkmate (checkmate = check + stalemate)
-
 
309
            else
-
 
310
               board->game_state = STATE_WHITEWIN_RESIGNORFORFEIT; // game was won by white for another reason
-
 
311
         }
-
 
312
         else if (strncmp (&pgnfile_data[char_index], "0-1", 7) == 0)
-
 
313
         {
-
 
314
            // see if it's a checkmate
-
 
315
            if (board->moves[board->move_count - 1].is_check && board->moves[board->move_count - 1].is_stalemate)
-
 
316
               board->game_state = STATE_BLACKWIN_CHECKMATE; // game was won by black on a checkmate (checkmate = check + stalemate)
-
 
317
            else
-
 
318
               board->game_state = STATE_BLACKWIN_RESIGNORFORFEIT; // game was won by black for another reason
299
         }
319
         }
300
 
320
 
301
         break; // we've finished reading the game
321
         break; // we've finished reading the game
302
      }
322
      }
303
 
323