fix to compile, and in gtk case to work, when COMMON_LAYOUT defined

This commit is contained in:
Eric House 2013-11-03 12:15:53 -08:00
parent 5a65bca12a
commit 184ac28ebc
3 changed files with 52 additions and 30 deletions

View file

@ -1635,8 +1635,12 @@ passKeyToBoard( CursesAppGlobals* globals, char ch )
static void
positionSizeStuff( CursesAppGlobals* globals, int width, int height )
{
XP_U16 cellWidth, cellHt, scoreLeft, scoreWidth;
BoardCtxt* board = globals->cGlobals.game.board;
#ifdef COMMON_LAYOUT
XP_USE( width );
XP_USE( height );
#else
XP_U16 cellWidth, cellHt, scoreLeft, scoreWidth;
int remWidth = width;
int nRows = globals->cGlobals.gi->boardSize;
@ -1680,7 +1684,7 @@ positionSizeStuff( CursesAppGlobals* globals, int width, int height )
/* no divider -- yet */
/* board_setTrayVisible( globals.board, XP_TRUE, XP_FALSE ); */
#endif
board_invalAll( board );
} /* positionSizeStuff */

View file

@ -598,7 +598,29 @@ static gboolean
configure_event( GtkWidget* widget, GdkEventConfigure* XP_UNUSED(event),
GtkGameGlobals* globals )
{
short bdWidth, bdHeight;
if ( globals->draw == NULL ) {
createOrLoadObjects( globals );
}
CommonGlobals* cGlobals = &globals->cGlobals;
BoardCtxt* board = cGlobals->game.board;
short bdWidth = widget->allocation.width - (GTK_RIGHT_MARGIN
+ GTK_BOARD_LEFT_MARGIN);
short bdHeight = widget->allocation.height - (GTK_TOP_MARGIN + GTK_BOTTOM_MARGIN)
- GTK_MIN_TRAY_SCALEV - GTK_BOTTOM_MARGIN;
#ifdef COMMON_LAYOUT
XP_ASSERT( !cGlobals->params->verticalScore ); /* not supported */
XP_Rect rect = { .left = GTK_BOARD_LEFT, .top = GTK_HOR_SCORE_TOP,
.width = bdWidth, .height = bdHeight
};
BoardDims dims;
board_figureLayout( board, cGlobals->gi, 16, 16, XP_FALSE, &rect, &dims );
board_applyLayout( board, &dims );
#else
short timerLeft, timerTop;
gint hscale, vscale;
gint trayTop;
@ -607,48 +629,39 @@ configure_event( GtkWidget* widget, GdkEventConfigure* XP_UNUSED(event),
gint nCols;
gint nRows;
if ( globals->draw == NULL ) {
createOrLoadObjects( globals );
}
nCols = globals->cGlobals.gi->boardSize;
nCols = cGlobals->gi->boardSize;
nRows = nCols;
bdWidth = widget->allocation.width - (GTK_RIGHT_MARGIN
+ GTK_BOARD_LEFT_MARGIN);
if ( globals->cGlobals.params->verticalScore ) {
if ( cGlobals->params->verticalScore ) {
bdWidth -= GTK_VERT_SCORE_WIDTH;
}
bdHeight = widget->allocation.height - (GTK_TOP_MARGIN + GTK_BOTTOM_MARGIN)
- GTK_MIN_TRAY_SCALEV - GTK_BOTTOM_MARGIN;
hscale = bdWidth / nCols;
if ( 0 != globals->cGlobals.params->nHidden ) {
if ( 0 != cGlobals->params->nHidden ) {
vscale = hscale;
} else {
vscale = (bdHeight / (nCols + GTK_TRAY_HT_ROWS)); /* makd tray height
3x cell height */
}
if ( !globals->cGlobals.params->verticalScore ) {
if ( !cGlobals->params->verticalScore ) {
boardTop += GTK_HOR_SCORE_HEIGHT;
}
trayTop = boardTop + (vscale * nRows);
/* move tray up if part of board's meant to be hidden */
trayTop -= vscale * globals->cGlobals.params->nHidden;
board_setPos( globals->cGlobals.game.board, GTK_BOARD_LEFT, boardTop,
trayTop -= vscale * cGlobals->params->nHidden;
board_setPos( board, GTK_BOARD_LEFT, boardTop,
hscale * nCols, vscale * nRows, hscale * 4, XP_FALSE );
/* board_setScale( globals->cGlobals.game.board, hscale, vscale ); */
globals->gridOn = XP_TRUE;
/* board_setScale( board, hscale, vscale ); */
if ( !!globals->cGlobals.game.comms ) {
if ( !!cGlobals->game.comms ) {
netStatWidth = GTK_NETSTAT_WIDTH;
}
timerTop = GTK_TIMER_TOP;
if ( globals->cGlobals.params->verticalScore ) {
if ( cGlobals->params->verticalScore ) {
timerLeft = GTK_BOARD_LEFT + (hscale*nCols) + 1;
board_setScoreboardLoc( globals->cGlobals.game.board,
board_setScoreboardLoc( board,
timerLeft,
GTK_VERT_SCORE_TOP,
GTK_VERT_SCORE_WIDTH,
@ -658,7 +671,7 @@ configure_event( GtkWidget* widget, GdkEventConfigure* XP_UNUSED(event),
} else {
timerLeft = GTK_BOARD_LEFT + (hscale*nCols)
- GTK_TIMER_WIDTH - netStatWidth;
board_setScoreboardLoc( globals->cGlobals.game.board,
board_setScoreboardLoc( board,
GTK_BOARD_LEFT, GTK_HOR_SCORE_TOP,
timerLeft-GTK_BOARD_LEFT,
GTK_HOR_SCORE_HEIGHT,
@ -667,24 +680,26 @@ configure_event( GtkWidget* widget, GdkEventConfigure* XP_UNUSED(event),
}
/* Still pending: do this for the vertical score case */
if ( globals->cGlobals.game.comms ) {
if ( cGlobals->game.comms ) {
globals->netStatLeft = timerLeft + GTK_TIMER_WIDTH;
globals->netStatTop = 0;
}
board_setTimerLoc( globals->cGlobals.game.board, timerLeft, timerTop,
board_setTimerLoc( board, timerLeft, timerTop,
GTK_TIMER_WIDTH, GTK_HOR_SCORE_HEIGHT );
board_setTrayLoc( globals->cGlobals.game.board, GTK_TRAY_LEFT, trayTop,
board_setTrayLoc( board, GTK_TRAY_LEFT, trayTop,
hscale * nCols, vscale * GTK_TRAY_HT_ROWS + 10,
GTK_DIVIDER_WIDTH );
setCtrlsForTray( globals );
#endif
globals->gridOn = XP_TRUE;
board_invalAll( globals->cGlobals.game.board );
setCtrlsForTray( globals );
board_invalAll( board );
XP_Bool inOut[2];
board_zoom( globals->cGlobals.game.board, 0, inOut );
board_zoom( board, 0, inOut );
setZoomButtons( globals, inOut );
return TRUE;

View file

@ -989,7 +989,10 @@ send_or_close( CommonGlobals* cGlobals, const XP_U8* buf, size_t len )
cGlobals->socket = -1;
/* delete all pending packets since the socket's bad */
g_slist_free_full( cGlobals->packetQueue, free_elem_proc );
for ( GSList* iter = cGlobals->packetQueue; !!iter; iter = iter->next ) {
free_elem_proc( iter->data );
}
g_slist_free( cGlobals->packetQueue );
cGlobals->packetQueue = NULL;
}
LOG_RETURNF( "%d", success );