mirror of
git://xwords.git.sourceforge.net/gitroot/xwords/xwords
synced 2025-02-06 20:45:54 +01:00
refactor so game init is repeatable (untested)
This commit is contained in:
parent
ec9570ab81
commit
15ae9da08b
1 changed files with 61 additions and 45 deletions
|
@ -43,30 +43,16 @@ EM_JS(void, call_alert, (const char* str), {
|
||||||
static Globals* sGlobals;
|
static Globals* sGlobals;
|
||||||
|
|
||||||
static void
|
static void
|
||||||
initGlobals( Globals* globals )
|
initDeviceGlobals( Globals* globals )
|
||||||
{
|
{
|
||||||
globals->cp.showBoardArrow = XP_TRUE;
|
globals->cp.showBoardArrow = XP_TRUE;
|
||||||
globals->cp.allowPeek = XP_TRUE;
|
globals->cp.allowPeek = XP_TRUE;
|
||||||
// globals->cp.showRobotScores = XP_TRUE;
|
// globals->cp.showRobotScores = XP_TRUE;
|
||||||
globals->cp.sortNewTiles = XP_TRUE;
|
globals->cp.sortNewTiles = XP_TRUE;
|
||||||
|
|
||||||
globals->gi.serverRole = SERVER_STANDALONE;
|
|
||||||
globals->gi.phoniesAction = PHONIES_WARN;
|
|
||||||
|
|
||||||
globals->gi.nPlayers = 2;
|
|
||||||
globals->gi.boardSize = 15;
|
|
||||||
globals->gi.dictName = "myDict";
|
|
||||||
globals->gi.players[0].name = "You";
|
|
||||||
globals->gi.players[0].isLocal = XP_TRUE;
|
|
||||||
globals->gi.players[1].name = "Robot";
|
|
||||||
globals->gi.players[1].isLocal = XP_TRUE;
|
|
||||||
globals->gi.players[1].robotIQ = 99;
|
|
||||||
|
|
||||||
globals->mpool = mpool_make( "wasm" );
|
globals->mpool = mpool_make( "wasm" );
|
||||||
globals->vtMgr = make_vtablemgr( globals->mpool );
|
globals->vtMgr = make_vtablemgr( globals->mpool );
|
||||||
globals->dutil = wasm_dutil_make( globals->mpool, globals->vtMgr, globals );
|
globals->dutil = wasm_dutil_make( globals->mpool, globals->vtMgr, globals );
|
||||||
globals->util = wasm_util_make( globals->mpool, &globals->gi,
|
|
||||||
globals->dutil, globals );
|
|
||||||
globals->dict = wasm_load_dict( globals->mpool );
|
globals->dict = wasm_load_dict( globals->mpool );
|
||||||
|
|
||||||
globals->draw = wasm_draw_make( MPPARM(globals->mpool)
|
globals->draw = wasm_draw_make( MPPARM(globals->mpool)
|
||||||
|
@ -74,25 +60,47 @@ initGlobals( Globals* globals )
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
makeAndDraw( Globals* globals )
|
makeAndDraw( Globals* globals, bool p0robot, bool p1robot )
|
||||||
{
|
{
|
||||||
|
if ( !!globals->util ) {
|
||||||
|
game_dispose( &globals->game, NULL );
|
||||||
|
wasm_util_destroy( globals->util );
|
||||||
|
globals->util = NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
globals->gi.serverRole = SERVER_STANDALONE;
|
||||||
|
globals->gi.phoniesAction = PHONIES_WARN;
|
||||||
|
|
||||||
|
globals->gi.nPlayers = 2;
|
||||||
|
globals->gi.boardSize = 15;
|
||||||
|
globals->gi.dictName = "myDict";
|
||||||
|
globals->gi.players[0].name = "Player 1";
|
||||||
|
globals->gi.players[0].isLocal = XP_TRUE;
|
||||||
|
if ( p0robot ) {
|
||||||
|
globals->gi.players[0].robotIQ = 99;
|
||||||
|
}
|
||||||
|
globals->gi.players[1].name = "Player 2";
|
||||||
|
globals->gi.players[1].isLocal = XP_TRUE;
|
||||||
|
if ( p1robot ) {
|
||||||
|
globals->gi.players[1].robotIQ = 99;
|
||||||
|
}
|
||||||
|
|
||||||
|
globals->util = wasm_util_make( globals->mpool, &globals->gi,
|
||||||
|
globals->dutil, globals );
|
||||||
|
|
||||||
XP_LOGFF( "calling game_makeNewGame()" );
|
XP_LOGFF( "calling game_makeNewGame()" );
|
||||||
game_makeNewGame( MPPARM(globals->mpool) NULL,
|
game_makeNewGame( MPPARM(globals->mpool) NULL,
|
||||||
&globals->game, &globals->gi,
|
&globals->game, &globals->gi,
|
||||||
globals->util, globals->draw,
|
globals->util, globals->draw,
|
||||||
&globals->cp, &globals->procs );
|
&globals->cp, &globals->procs );
|
||||||
|
|
||||||
XP_LOGFF( "calling board_figureLayout()" );
|
|
||||||
BoardDims dims;
|
BoardDims dims;
|
||||||
board_figureLayout( globals->game.board, NULL, &globals->gi,
|
board_figureLayout( globals->game.board, NULL, &globals->gi,
|
||||||
WASM_BOARD_LEFT, WASM_HOR_SCORE_TOP, BDWIDTH, BDHEIGHT,
|
WASM_BOARD_LEFT, WASM_HOR_SCORE_TOP, BDWIDTH, BDHEIGHT,
|
||||||
110, 150, 200, BDWIDTH-25, 16, 16, XP_FALSE, &dims );
|
110, 150, 200, BDWIDTH-25, 16, 16, XP_FALSE, &dims );
|
||||||
XP_LOGFF( "calling board_applyLayout()" );
|
|
||||||
board_applyLayout( globals->game.board, NULL, &dims );
|
board_applyLayout( globals->game.board, NULL, &dims );
|
||||||
XP_LOGFF( "calling board_draw()" );
|
|
||||||
|
|
||||||
model_setDictionary( globals->game.model, NULL, globals->dict );
|
model_setDictionary( globals->game.model, NULL, globals->dict );
|
||||||
// model_setSquareBonuses( globals->game.model, XWBonusType* bonuses, XP_U16 nBonuses )
|
|
||||||
|
|
||||||
(void)server_do( globals->game.server, NULL ); /* assign tiles, etc. */
|
(void)server_do( globals->game.server, NULL ); /* assign tiles, etc. */
|
||||||
board_draw( globals->game.board, NULL );
|
board_draw( globals->game.board, NULL );
|
||||||
|
@ -256,43 +264,51 @@ button( const char* msg )
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef NAKED_MODE
|
static Globals*
|
||||||
void mainf()
|
initOnce()
|
||||||
#else
|
|
||||||
int main( int argc, char** argv )
|
|
||||||
#endif
|
|
||||||
{
|
{
|
||||||
LOG_FUNC();
|
Globals* globals = calloc(1, sizeof(*globals));
|
||||||
Globals globals = {0};
|
sGlobals = globals;
|
||||||
sGlobals = &globals;
|
|
||||||
SDL_Init( SDL_INIT_EVENTS );
|
SDL_Init( SDL_INIT_EVENTS );
|
||||||
TTF_Init();
|
TTF_Init();
|
||||||
int foo = SDL_SWSURFACE;
|
|
||||||
|
|
||||||
// Do I want SDL_CreateWindow() plus something else?
|
|
||||||
|
|
||||||
|
|
||||||
SDL_CreateWindowAndRenderer( WINDOW_WIDTH, WINDOW_HEIGHT, 0,
|
SDL_CreateWindowAndRenderer( WINDOW_WIDTH, WINDOW_HEIGHT, 0,
|
||||||
&globals.window, &globals.renderer );
|
&globals->window, &globals->renderer );
|
||||||
|
|
||||||
/**
|
/* whip the canvas to background */
|
||||||
* Set up a white background
|
SDL_SetRenderDrawColor( globals->renderer, 155, 155, 155, 255 );
|
||||||
*/
|
SDL_RenderClear( globals->renderer );
|
||||||
SDL_SetRenderDrawColor(globals.renderer, 255, 255, 50, 50);
|
|
||||||
SDL_RenderClear(globals.renderer);
|
|
||||||
|
|
||||||
initGlobals( &globals );
|
initDeviceGlobals( globals );
|
||||||
makeAndDraw( &globals );
|
|
||||||
|
return globals;
|
||||||
|
}
|
||||||
|
|
||||||
|
#ifdef NAKED_MODE
|
||||||
|
void
|
||||||
|
mainf()
|
||||||
|
{
|
||||||
|
LOG_FUNC();
|
||||||
|
Globals* globals = initOnce();
|
||||||
|
emscripten_set_main_loop_arg( looper, globals, -1, 1 );
|
||||||
|
}
|
||||||
|
#else
|
||||||
|
int
|
||||||
|
main( int argc, char** argv )
|
||||||
|
{
|
||||||
|
LOG_FUNC();
|
||||||
|
Globals* globals = initOnce();
|
||||||
|
makeAndDraw( globals, false, true );
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Show what is in the renderer
|
* Show what is in the renderer
|
||||||
*/
|
*/
|
||||||
wasm_draw_render( globals.draw, globals.renderer );
|
/* wasm_draw_render( globals.draw, globals.renderer ); */
|
||||||
SDL_RenderPresent( globals.renderer );
|
/* SDL_RenderPresent( globals.renderer ); */
|
||||||
|
|
||||||
emscripten_set_main_loop_arg( looper, &globals, -1, 1 );
|
emscripten_set_main_loop_arg( looper, globals, -1, 1 );
|
||||||
|
|
||||||
#ifndef NAKED_MODE
|
|
||||||
return 0;
|
return 0;
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
Loading…
Add table
Reference in a new issue