mirror of
git://xwords.git.sourceforge.net/gitroot/xwords/xwords
synced 2025-02-06 20:45:54 +01:00
dup: fix to call informMove(); make strings localizable
Was relying incorrectly on showRobotScores, which is FALSE on linux by default.
This commit is contained in:
parent
7076501710
commit
6b41628fbf
6 changed files with 103 additions and 77 deletions
|
@ -92,32 +92,35 @@ public class DUtilCtxt {
|
|||
}
|
||||
}
|
||||
|
||||
static final int STRD_ROBOT_TRADED = 1;
|
||||
static final int STR_ROBOT_MOVED = 2;
|
||||
static final int STRS_VALUES_HEADER = 3;
|
||||
static final int STRD_REMAINING_TILES_ADD = 4;
|
||||
static final int STRD_UNUSED_TILES_SUB = 5;
|
||||
static final int STRS_REMOTE_MOVED = 6;
|
||||
static final int STRD_TIME_PENALTY_SUB = 7;
|
||||
static final int STR_PASS = 8;
|
||||
static final int STRS_MOVE_ACROSS = 9;
|
||||
static final int STRS_MOVE_DOWN = 10;
|
||||
static final int STRS_TRAY_AT_START = 11;
|
||||
static final int STRSS_TRADED_FOR = 12;
|
||||
static final int STR_PHONY_REJECTED = 13;
|
||||
static final int STRD_CUMULATIVE_SCORE = 14;
|
||||
static final int STRS_NEW_TILES = 15;
|
||||
static final int STR_COMMIT_CONFIRM = 16;
|
||||
static final int STR_SUBMIT_CONFIRM = 17;
|
||||
static final int STR_BONUS_ALL = 18;
|
||||
static final int STRD_TURN_SCORE = 19;
|
||||
static final int STRD_REMAINS_HEADER = 20;
|
||||
static final int STRD_REMAINS_EXPL = 21;
|
||||
static final int STRSD_RESIGNED = 22;
|
||||
static final int STRSD_WINNER = 23;
|
||||
static final int STRDSD_PLACER = 24;
|
||||
static final int STR_DUP_CLIENT_SENT = 25;
|
||||
static final int STRDD_DUP_HOST_RECEIVED = 26;
|
||||
private static final int STRD_ROBOT_TRADED = 1;
|
||||
private static final int STR_ROBOT_MOVED = 2;
|
||||
private static final int STRS_VALUES_HEADER = 3;
|
||||
private static final int STRD_REMAINING_TILES_ADD = 4;
|
||||
private static final int STRD_UNUSED_TILES_SUB = 5;
|
||||
private static final int STRS_REMOTE_MOVED = 6;
|
||||
private static final int STRD_TIME_PENALTY_SUB = 7;
|
||||
private static final int STR_PASS = 8;
|
||||
private static final int STRS_MOVE_ACROSS = 9;
|
||||
private static final int STRS_MOVE_DOWN = 10;
|
||||
private static final int STRS_TRAY_AT_START = 11;
|
||||
private static final int STRSS_TRADED_FOR = 12;
|
||||
private static final int STR_PHONY_REJECTED = 13;
|
||||
private static final int STRD_CUMULATIVE_SCORE = 14;
|
||||
private static final int STRS_NEW_TILES = 15;
|
||||
private static final int STR_COMMIT_CONFIRM = 16;
|
||||
private static final int STR_SUBMIT_CONFIRM = 17;
|
||||
private static final int STR_BONUS_ALL = 18;
|
||||
private static final int STRD_TURN_SCORE = 19;
|
||||
private static final int STRD_REMAINS_HEADER = 20;
|
||||
private static final int STRD_REMAINS_EXPL = 21;
|
||||
private static final int STRSD_RESIGNED = 22;
|
||||
private static final int STRSD_WINNER = 23;
|
||||
private static final int STRDSD_PLACER = 24;
|
||||
private static final int STR_DUP_CLIENT_SENT = 25;
|
||||
private static final int STRDD_DUP_HOST_RECEIVED = 26;
|
||||
private static final int STR_DUP_MOVED = 27;
|
||||
private static final int STRD_DUP_TRADED = 28;
|
||||
private static final int STRSD_DUP_ONESCORE = 29;
|
||||
|
||||
public String getUserString( int stringCode )
|
||||
{
|
||||
|
@ -194,7 +197,15 @@ public class DUtilCtxt {
|
|||
case STRDD_DUP_HOST_RECEIVED:
|
||||
id = R.string.dup_host_received_fmt;
|
||||
break;
|
||||
|
||||
case STR_DUP_MOVED:
|
||||
id = R.string.dup_moved;
|
||||
break;
|
||||
case STRD_DUP_TRADED:
|
||||
id = R.string.dup_traded_fmt;
|
||||
break;
|
||||
case STRSD_DUP_ONESCORE:
|
||||
id = R.string.dup_onescore_fmt;
|
||||
break;
|
||||
|
||||
default:
|
||||
Log.w( TAG, "no such stringCode: %d", stringCode );
|
||||
|
|
|
@ -2421,7 +2421,6 @@
|
|||
<!-- Checkbox in game config dialog -->
|
||||
<string name="duplicate_check">Duplicate mode</string>
|
||||
|
||||
<!-- New strings for "Duplicate" mode -->
|
||||
<!-- Tags duplicate-mode games in Games List, above thumbnail of board -->
|
||||
<string name="dup_tag">Dup</string>
|
||||
<!-- Mark game title; will produce something like "Kati vs. Eric (dup.)" -->
|
||||
|
@ -2489,6 +2488,10 @@
|
|||
<!-- Title for notification that another player un-paused a duplicate-mode game -->
|
||||
<string name="game_unpaused_title">Game un-paused</string>
|
||||
|
||||
<string name="dup_moved">Duplicate turn complete. Scores:\n</string>
|
||||
<string name="dup_traded_fmt">No moves made; traded %1$d tiles</string>
|
||||
<string name="dup_onescore_fmt">%1$s: %2$d points\n</string>
|
||||
|
||||
<!-- Title of pause confirm/message edit dialog -->
|
||||
<string name="pause_title">Game pause</string>
|
||||
<!-- Title of unpause confirm/message edit dialog -->
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* Keep these in sync with the constants in UtilCtxt.java */
|
||||
/* Keep these in sync with the constants in DUtilCtxt.java */
|
||||
|
||||
|
||||
#ifndef _LOCALIZEDSTRINCLUDES_H_
|
||||
|
@ -30,6 +30,9 @@
|
|||
# define STRDSD_PLACER 24
|
||||
# define STR_DUP_CLIENT_SENT 25
|
||||
# define STRDD_DUP_HOST_RECEIVED 26
|
||||
# define STR_DUP_MOVED 27
|
||||
# define STRD_DUP_TRADED 28
|
||||
# define STRSD_DUP_ONESCORE 29
|
||||
|
||||
# define N_AND_USER_STRINGS 26
|
||||
# define N_AND_USER_STRINGS 29
|
||||
#endif
|
||||
|
|
|
@ -899,59 +899,58 @@ bitsPerTile( ServerCtxt* server )
|
|||
static void
|
||||
dupe_setupShowTrade( ServerCtxt* server, XP_U16 nTiles )
|
||||
{
|
||||
if ( server->nv.showRobotScores ) {
|
||||
XP_ASSERT( !server->nv.prevMoveStream );
|
||||
XP_ASSERT( inDuplicateMode(server) );
|
||||
XP_ASSERT( !server->nv.prevMoveStream );
|
||||
|
||||
XWStreamCtxt* stream = mkServerStream( server );
|
||||
XP_UCHAR buf[128];
|
||||
const XP_UCHAR* fmt = dutil_getUserString( server->vol.dutil, STRD_DUP_TRADED );
|
||||
XP_SNPRINTF( buf, VSIZE(buf), fmt, nTiles );
|
||||
|
||||
XP_UCHAR buf[64];
|
||||
XP_SNPRINTF( buf, VSIZE(buf), "No moves made; traded %d tiles", nTiles );
|
||||
stream_catString( stream, buf );
|
||||
XWStreamCtxt* stream = mkServerStream( server );
|
||||
stream_catString( stream, buf );
|
||||
|
||||
server->nv.prevMoveStream = stream;
|
||||
server->vol.showPrevMove = XP_TRUE;
|
||||
}
|
||||
server->nv.prevMoveStream = stream;
|
||||
server->vol.showPrevMove = XP_TRUE;
|
||||
}
|
||||
|
||||
static void
|
||||
dupe_setupShowMove( ServerCtxt* server, XP_U16* scores )
|
||||
{
|
||||
if ( server->nv.showRobotScores ) {
|
||||
XP_ASSERT( !server->nv.prevMoveStream );
|
||||
XP_ASSERT( inDuplicateMode(server) );
|
||||
XP_ASSERT( !server->nv.prevMoveStream ); /* firing */
|
||||
|
||||
const CurGameInfo* gi = server->vol.gi;
|
||||
const XP_U16 nPlayers = gi->nPlayers;
|
||||
const CurGameInfo* gi = server->vol.gi;
|
||||
const XP_U16 nPlayers = gi->nPlayers;
|
||||
|
||||
XWStreamCtxt* stream = mkServerStream( server );
|
||||
XWStreamCtxt* stream = mkServerStream( server );
|
||||
|
||||
XP_U16 lastMax = 0x7FFF;
|
||||
for ( XP_U16 nDone = 0; nDone < nPlayers; ) {
|
||||
XP_U16 lastMax = 0x7FFF;
|
||||
for ( XP_U16 nDone = 0; nDone < nPlayers; ) {
|
||||
|
||||
/* Find the largest score we haven't already done */
|
||||
XP_U16 thisMax = 0;
|
||||
for ( XP_U16 ii = 0; ii < nPlayers; ++ii ) {
|
||||
XP_U16 score = scores[ii];
|
||||
if ( score < lastMax && score > thisMax ) {
|
||||
thisMax = score;
|
||||
}
|
||||
/* Find the largest score we haven't already done */
|
||||
XP_U16 thisMax = 0;
|
||||
for ( XP_U16 ii = 0; ii < nPlayers; ++ii ) {
|
||||
XP_U16 score = scores[ii];
|
||||
if ( score < lastMax && score > thisMax ) {
|
||||
thisMax = score;
|
||||
}
|
||||
|
||||
/* Process everybody with that score */
|
||||
for ( XP_U16 ii = 0; ii < nPlayers; ++ii ) {
|
||||
if ( scores[ii] == thisMax ) {
|
||||
++nDone;
|
||||
XP_UCHAR buf[64];
|
||||
XP_SNPRINTF( buf, VSIZE(buf), "%s: %d points\n",
|
||||
gi->players[ii].name, scores[ii] );
|
||||
stream_catString( stream, buf );
|
||||
}
|
||||
}
|
||||
lastMax = thisMax;
|
||||
}
|
||||
|
||||
server->nv.prevMoveStream = stream;
|
||||
server->vol.showPrevMove = XP_TRUE;
|
||||
/* Process everybody with that score */
|
||||
const XP_UCHAR* fmt = dutil_getUserString( server->vol.dutil, STRSD_DUP_ONESCORE );
|
||||
for ( XP_U16 ii = 0; ii < nPlayers; ++ii ) {
|
||||
if ( scores[ii] == thisMax ) {
|
||||
++nDone;
|
||||
XP_UCHAR buf[128];
|
||||
XP_SNPRINTF( buf, VSIZE(buf), fmt, gi->players[ii].name, scores[ii] );
|
||||
stream_catString( stream, buf );
|
||||
}
|
||||
}
|
||||
lastMax = thisMax;
|
||||
}
|
||||
|
||||
server->nv.prevMoveStream = stream;
|
||||
server->vol.showPrevMove = XP_TRUE;
|
||||
}
|
||||
|
||||
static void
|
||||
|
@ -1339,7 +1338,7 @@ makeRobotMove( ServerCtxt* server )
|
|||
(server_countTilesInPool( server ) >= MAX_TRAY_TILES));
|
||||
|
||||
server->vol.showPrevMove = XP_TRUE;
|
||||
if ( server->nv.showRobotScores ) {
|
||||
if ( inDuplicateMode(server) || server->nv.showRobotScores ) {
|
||||
stream = mkServerStream( server );
|
||||
}
|
||||
|
||||
|
@ -1450,11 +1449,11 @@ postponeRobotMove( ServerCtxt* server )
|
|||
static void
|
||||
showPrevScore( ServerCtxt* server )
|
||||
{
|
||||
if ( server->nv.showRobotScores ) { /* this can be changed between turns */
|
||||
/* showRobotScores can be changed between turns */
|
||||
if ( inDuplicateMode( server ) || server->nv.showRobotScores ) {
|
||||
XW_UtilCtxt* util = server->vol.util;
|
||||
XW_DUtilCtxt* dutil = server->vol.dutil;
|
||||
XWStreamCtxt* stream;
|
||||
const XP_UCHAR* str;
|
||||
XP_UCHAR buf[128];
|
||||
CurGameInfo* gi = server->vol.gi;
|
||||
XP_U16 nPlayers = gi->nPlayers;
|
||||
|
@ -1464,13 +1463,15 @@ showPrevScore( ServerCtxt* server )
|
|||
prevTurn = (server->nv.currentTurn + nPlayers - 1) % nPlayers;
|
||||
lp = &gi->players[prevTurn];
|
||||
|
||||
XP_U16 stringCode;
|
||||
if ( inDuplicateMode( server ) ) {
|
||||
str = "Duplicate turn complete. Scores:\n";
|
||||
stringCode = STR_DUP_MOVED;
|
||||
} else if ( LP_IS_LOCAL(lp) ) {
|
||||
str = dutil_getUserString( dutil, STR_ROBOT_MOVED );
|
||||
stringCode = STR_ROBOT_MOVED;
|
||||
} else {
|
||||
str = dutil_getUserString( dutil, STRS_REMOTE_MOVED );
|
||||
stringCode = STRS_REMOTE_MOVED;
|
||||
}
|
||||
const XP_UCHAR* str = dutil_getUserString( dutil, stringCode );
|
||||
XP_SNPRINTF( buf, sizeof(buf), str, lp->name );
|
||||
str = buf;
|
||||
|
||||
|
@ -2549,7 +2550,7 @@ nextTurn( ServerCtxt* server, XP_S16 nxtTurn )
|
|||
|
||||
if ( server->vol.showPrevMove ) {
|
||||
server->vol.showPrevMove = XP_FALSE;
|
||||
if ( server->nv.showRobotScores ) {
|
||||
if ( inDuplicateMode(server) || server->nv.showRobotScores ) {
|
||||
server->nv.stateAfterShow = server->nv.gameState;
|
||||
SETSTATE( server, XWSTATE_NEED_SHOWSCORE );
|
||||
moreToDo = XP_TRUE;
|
||||
|
@ -2769,7 +2770,7 @@ static XWStreamCtxt*
|
|||
makeTradeReportIf( ServerCtxt* server, const TrayTileSet* tradedTiles )
|
||||
{
|
||||
XWStreamCtxt* stream = NULL;
|
||||
if ( server->nv.showRobotScores ) {
|
||||
if ( inDuplicateMode(server) || server->nv.showRobotScores ) {
|
||||
XP_UCHAR tradeBuf[64];
|
||||
const XP_UCHAR* tradeStr =
|
||||
dutil_getUserQuantityString( server->vol.dutil, STRD_ROBOT_TRADED,
|
||||
|
@ -2786,7 +2787,7 @@ static XWStreamCtxt*
|
|||
makeMoveReportIf( ServerCtxt* server, XWStreamCtxt** wordsStream )
|
||||
{
|
||||
XWStreamCtxt* stream = NULL;
|
||||
if ( server->nv.showRobotScores ) {
|
||||
if ( inDuplicateMode(server) || server->nv.showRobotScores ) {
|
||||
ModelCtxt* model = server->vol.model;
|
||||
stream = mkServerStream( server );
|
||||
*wordsStream = mkServerStream( server );
|
||||
|
|
|
@ -60,6 +60,9 @@ enum {
|
|||
|
||||
STR_DUP_CLIENT_SENT,
|
||||
STRDD_DUP_HOST_RECEIVED,
|
||||
STR_DUP_MOVED,
|
||||
STRD_DUP_TRADED,
|
||||
STRSD_DUP_ONESCORE,
|
||||
|
||||
STR_LAST
|
||||
};
|
||||
|
|
|
@ -176,7 +176,6 @@ linux_dutil_getUserString( XW_DUtilCtxt* XP_UNUSED(uc), XP_U16 code )
|
|||
return (XP_UCHAR*)"The robot \"%s\" moved:\n";
|
||||
case STRS_REMOTE_MOVED:
|
||||
return (XP_UCHAR*)"Remote player \"%s\" moved:\n";
|
||||
|
||||
#ifndef XWFEATURE_STANDALONE_ONLY
|
||||
case STR_LOCALPLAYERS:
|
||||
return (XP_UCHAR*)"Local players";
|
||||
|
@ -200,11 +199,17 @@ linux_dutil_getUserString( XW_DUtilCtxt* XP_UNUSED(uc), XP_U16 code )
|
|||
return "[Winner] %s: %d";
|
||||
case STRDSD_PLACER:
|
||||
return "[#%d] %s: %d";
|
||||
case STR_DUP_MOVED:
|
||||
return (XP_UCHAR*)"Duplicate turn complete. Scores:\n";
|
||||
case STR_DUP_CLIENT_SENT:
|
||||
return "This device has sent its moves to the host. When all players "
|
||||
"have sent their moves it will be your turn again.";
|
||||
case STRDD_DUP_HOST_RECEIVED:
|
||||
return "%d of %d players have reported their moves.";
|
||||
case STRD_DUP_TRADED:
|
||||
return "No moves made; traded %d tiles";
|
||||
case STRSD_DUP_ONESCORE:
|
||||
return "%s: %d points\n";
|
||||
|
||||
default:
|
||||
XP_LOGF( "%s(code=%d)", __func__, code );
|
||||
|
|
Loading…
Add table
Reference in a new issue