mirror of
git://xwords.git.sourceforge.net/gitroot/xwords/xwords
synced 2025-01-18 22:26:30 +01:00
snapshot: tile dragging works, timers don't
This commit is contained in:
parent
9b4328d6dc
commit
1d87c3facd
2 changed files with 38 additions and 16 deletions
|
@ -30,8 +30,8 @@
|
||||||
|
|
||||||
#define WINDOW_WIDTH 400
|
#define WINDOW_WIDTH 400
|
||||||
#define WINDOW_HEIGHT 600
|
#define WINDOW_HEIGHT 600
|
||||||
#define BDWIDTH 330
|
#define BDWIDTH 400
|
||||||
#define BDHEIGHT 330
|
#define BDHEIGHT 400
|
||||||
|
|
||||||
static void
|
static void
|
||||||
initGlobals( Globals* globals )
|
initGlobals( Globals* globals )
|
||||||
|
@ -115,12 +115,12 @@ void
|
||||||
main_set_timer( Globals* globals, XWTimerReason why, XP_U16 when,
|
main_set_timer( Globals* globals, XWTimerReason why, XP_U16 when,
|
||||||
XWTimerProc proc, void* closure )
|
XWTimerProc proc, void* closure )
|
||||||
{
|
{
|
||||||
TimerState* timer = &globals->timers[why];
|
/* TimerState* timer = &globals->timers[why]; */
|
||||||
timer->proc = proc;
|
/* timer->proc = proc; */
|
||||||
timer->closure = closure;
|
/* timer->closure = closure; */
|
||||||
|
|
||||||
time_t now = getCurMS();
|
/* time_t now = getCurMS(); */
|
||||||
timer->when = now + (1000 * when);
|
/* timer->when = now + (1000 * when); */
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
@ -128,21 +128,26 @@ checkForEvent( Globals* globals )
|
||||||
{
|
{
|
||||||
XP_Bool handled;
|
XP_Bool handled;
|
||||||
XP_Bool draw = XP_FALSE;
|
XP_Bool draw = XP_FALSE;
|
||||||
|
BoardCtxt* board = globals->game.board;
|
||||||
|
|
||||||
SDL_Event event;
|
SDL_Event event;
|
||||||
if ( SDL_PollEvent(&event) ) {
|
if ( SDL_PollEvent(&event) ) {
|
||||||
switch ( event.type ) {
|
switch ( event.type ) {
|
||||||
case SDL_MOUSEBUTTONDOWN:
|
case SDL_MOUSEBUTTONDOWN:
|
||||||
draw = event.button.button == SDL_BUTTON_LEFT
|
draw = event.button.button == SDL_BUTTON_LEFT
|
||||||
&& board_handlePenDown( globals->game.board, NULL,
|
&& board_handlePenDown( board, NULL,
|
||||||
event.button.x, event.button.y,
|
event.button.x, event.button.y,
|
||||||
&handled );
|
&handled );
|
||||||
break;
|
break;
|
||||||
case SDL_MOUSEBUTTONUP:
|
case SDL_MOUSEBUTTONUP:
|
||||||
draw = event.button.button == SDL_BUTTON_LEFT
|
draw = event.button.button == SDL_BUTTON_LEFT
|
||||||
&& board_handlePenUp( globals->game.board, NULL,
|
&& board_handlePenUp( board, NULL,
|
||||||
event.button.x, event.button.y );
|
event.button.x, event.button.y );
|
||||||
break;
|
break;
|
||||||
// SDL_MouseButtonEvent
|
case SDL_MOUSEMOTION:
|
||||||
|
draw = board_handlePenMove( board, NULL,
|
||||||
|
event.motion.x, event.motion.y );
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
|
@ -84,7 +84,7 @@ frameRect( WasmDrawCtx* wdctx, const XP_Rect* rect )
|
||||||
{
|
{
|
||||||
SDL_Rect sdlr;
|
SDL_Rect sdlr;
|
||||||
rectXPToSDL( &sdlr, rect );
|
rectXPToSDL( &sdlr, rect );
|
||||||
// SDL_SetRenderDrawColor( wdctx->renderer, COLOR_BLACK, 255 );
|
SDL_SetRenderDrawColor( wdctx->renderer, COLOR_BLACK, 255 );
|
||||||
SDL_RenderDrawRect( wdctx->renderer, &sdlr );
|
SDL_RenderDrawRect( wdctx->renderer, &sdlr );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -118,7 +118,8 @@ textInRect( WasmDrawCtx* wdctx, const XP_UCHAR* text, const XP_Rect* rect,
|
||||||
SDL_QueryTexture( texture, NULL, NULL, &width, &height );
|
SDL_QueryTexture( texture, NULL, NULL, &width, &height );
|
||||||
XP_LOGFF( "have w: %d; h: %d; got w: %d; h: %d",
|
XP_LOGFF( "have w: %d; h: %d; got w: %d; h: %d",
|
||||||
tmpR.width, tmpR.height, width, height );
|
tmpR.width, tmpR.height, width, height );
|
||||||
tmpR.width = width;
|
tmpR.width = XP_MIN( width, tmpR.width );
|
||||||
|
tmpR.height = XP_MIN( height, tmpR.height );
|
||||||
|
|
||||||
SDL_Rect sdlr;
|
SDL_Rect sdlr;
|
||||||
rectXPToSDL( &sdlr, &tmpR );
|
rectXPToSDL( &sdlr, &tmpR );
|
||||||
|
@ -127,13 +128,27 @@ textInRect( WasmDrawCtx* wdctx, const XP_UCHAR* text, const XP_Rect* rect,
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
drawTile( WasmDrawCtx* wdctx, const XP_UCHAR* face, XP_U16 val,
|
drawTile( WasmDrawCtx* wdctx, const XP_UCHAR* face, int val,
|
||||||
int owner, const XP_Rect* rect )
|
int owner, const XP_Rect* rect )
|
||||||
{
|
{
|
||||||
clearRect( wdctx, rect );
|
clearRect( wdctx, rect );
|
||||||
// setPlayerColor( wdctx, owner );
|
|
||||||
frameRect( wdctx, rect );
|
frameRect( wdctx, rect );
|
||||||
textInRect( wdctx, face, rect, &sPlayerColors[owner] );
|
|
||||||
|
XP_Rect tmp = *rect;
|
||||||
|
tmp.width = 3 * tmp.width / 4;
|
||||||
|
tmp.height = 3 * tmp.height / 4;
|
||||||
|
textInRect( wdctx, face, &tmp, &sPlayerColors[owner] );
|
||||||
|
|
||||||
|
if ( 0 <= val ) {
|
||||||
|
XP_Rect tmp = *rect;
|
||||||
|
tmp.width = tmp.width / 4;
|
||||||
|
tmp.left += tmp.width * 3;
|
||||||
|
tmp.height = tmp.height / 4;
|
||||||
|
tmp.top += tmp.height * 3;
|
||||||
|
XP_UCHAR buf[4];
|
||||||
|
XP_SNPRINTF( buf, VSIZE(buf), "%d", val );
|
||||||
|
textInRect( wdctx, buf, &tmp, &sPlayerColors[owner] );
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
@ -256,7 +271,9 @@ wasm_draw_score_drawPlayer( DrawCtx* dctx, XWEnv xwe,
|
||||||
{
|
{
|
||||||
XP_LOGFF( "(playerNum: %d)", dsi->playerNum );
|
XP_LOGFF( "(playerNum: %d)", dsi->playerNum );
|
||||||
WasmDrawCtx* wdctx = (WasmDrawCtx*)dctx;
|
WasmDrawCtx* wdctx = (WasmDrawCtx*)dctx;
|
||||||
textInRect( wdctx, dsi->name, rInner, &sPlayerColors[dsi->playerNum] );
|
XP_UCHAR buf[32];
|
||||||
|
XP_SNPRINTF( buf, VSIZE(buf), "%s: %d", dsi->name, dsi->totalScore );
|
||||||
|
textInRect( wdctx, buf, rInner, &sPlayerColors[dsi->playerNum] );
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
|
Loading…
Reference in a new issue