fix assertion failure that happened when I changed whether remote

scores were shown mid-game.  If the value's not as expected just don't
show the score.
This commit is contained in:
Andy2 2011-02-18 17:43:01 -08:00
parent da6d7da350
commit d2fda267e5

View file

@ -809,48 +809,47 @@ postponeRobotMove( ServerCtxt* server )
static void static void
showPrevScore( ServerCtxt* server ) showPrevScore( ServerCtxt* server )
{ {
XW_UtilCtxt* util = server->vol.util; if ( server->nv.showRobotScores ) { /* this can be changed between turns */
XWStreamCtxt* stream; XW_UtilCtxt* util = server->vol.util;
const XP_UCHAR* str; XWStreamCtxt* stream;
CurGameInfo* gi = server->vol.gi; const XP_UCHAR* str;
XP_U16 nPlayers = gi->nPlayers; CurGameInfo* gi = server->vol.gi;
XP_U16 prevTurn; XP_U16 nPlayers = gi->nPlayers;
XP_U16 strCode; XP_U16 prevTurn;
LocalPlayer* lp; XP_U16 strCode;
LocalPlayer* lp;
XP_ASSERT( server->nv.showRobotScores ); prevTurn = (server->nv.currentTurn + nPlayers - 1) % nPlayers;
lp = &gi->players[prevTurn];
prevTurn = (server->nv.currentTurn + nPlayers - 1) % nPlayers; if ( LP_IS_LOCAL(lp) ) {
lp = &gi->players[prevTurn]; XP_ASSERT( LP_IS_ROBOT(lp) );
strCode = STR_ROBOT_MOVED;
} else {
strCode = STR_REMOTE_MOVED;
}
if ( LP_IS_LOCAL(lp) ) { stream = mkServerStream( server );
XP_ASSERT( LP_IS_ROBOT(lp) );
strCode = STR_ROBOT_MOVED; str = util_getUserString( util, strCode );
} else { stream_catString( stream, str );
strCode = STR_REMOTE_MOVED;
if ( !!server->nv.prevMoveStream ) {
XWStreamCtxt* prevStream = server->nv.prevMoveStream;
XP_U16 len = stream_getSize( prevStream );
XP_UCHAR* buf = XP_MALLOC( server->mpool, len );
stream_getBytes( prevStream, buf, len );
stream_destroy( prevStream );
server->nv.prevMoveStream = NULL;
stream_putBytes( stream, buf, len );
XP_FREE( server->mpool, buf );
}
(void)util_userQuery( util, QUERY_ROBOT_MOVE, stream );
stream_destroy( stream );
} }
stream = mkServerStream( server );
str = util_getUserString( util, strCode );
stream_catString( stream, str );
if ( !!server->nv.prevMoveStream ) {
XWStreamCtxt* prevStream = server->nv.prevMoveStream;
XP_U16 len = stream_getSize( prevStream );
XP_UCHAR* buf = XP_MALLOC( server->mpool, len );
stream_getBytes( prevStream, buf, len );
stream_destroy( prevStream );
server->nv.prevMoveStream = NULL;
stream_putBytes( stream, buf, len );
XP_FREE( server->mpool, buf );
}
(void)util_userQuery( util, QUERY_ROBOT_MOVE, stream );
stream_destroy( stream );
SETSTATE( server, server->vol.stateAfterShow ); SETSTATE( server, server->vol.stateAfterShow );
} /* showPrevScore */ } /* showPrevScore */