mirror of
git://xwords.git.sourceforge.net/gitroot/xwords/xwords
synced 2025-02-05 20:45:49 +01:00
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:
parent
da6d7da350
commit
d2fda267e5
1 changed files with 37 additions and 38 deletions
|
@ -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 */
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue