Mercurial > hg > dmlib
changeset 1321:6732a5ca1fae
Cleanup the dmsimple engine setup system a bit, move bits out of DMEngine
struct to local global variables in dmsimple.
author | Matti Hamalainen <ccr@tnsp.org> |
---|---|
date | Mon, 21 Aug 2017 15:35:26 +0300 |
parents | dd56f806c1a2 |
children | c2000337ac3f |
files | src/dmengine.h src/dmsimple.c |
diffstat | 2 files changed, 75 insertions(+), 64 deletions(-) [+] |
line wrap: on
line diff
--- a/src/dmengine.h Sun Aug 20 03:55:08 2017 +0300 +++ b/src/dmengine.h Mon Aug 21 15:35:26 2017 +0300 @@ -291,12 +291,6 @@ int (*demoRender)(struct DMEngineData *); void (*demoShutdown)(struct DMEngineData *); void (*demoQuit)(struct DMEngineData *); - - // Setup specifics - DMVector setupMenuPos, setupMenuDim, setupText1Pos, setupText2Pos, - setupMenuBarOffs, setupMenuBarDimAdj; - BOOL setupMenuCenter, setupTextCondensed; - char setupTextFullscreen[64], setupTextWindowed[64], setupTextPrefix[64], setupTextEnterToStart[64]; } DMEngineData;
--- a/src/dmsimple.c Sun Aug 20 03:55:08 2017 +0300 +++ b/src/dmsimple.c Mon Aug 21 15:35:26 2017 +0300 @@ -17,13 +17,28 @@ # include "setupmenubar.h" #endif -static const char *engineSetupDataName = "SetupData.txt"; -static const char *engineSetupImageName = "SetupImage.png"; -static const char *engineSetupMenuBarName = "SetupMenuBar.png"; -static const char *engineSetupFontName = "SetupFont.dmf"; +// Setup specifics +#define setupTextFieldLen 64 +static const char *setupDataName = "SetupData.txt"; +static const char *setupFontName = "SetupFont.dmf"; +static DMVector + setupMenuPos, setupMenuDim, setupText1Pos, setupText2Pos, + setupMenuBarOffs, setupMenuBarDimAdj; +static BOOL setupMenuCenter, setupTextCondensed; +static char + setupTextFullscreen[setupTextFieldLen], + setupTextWindowed[setupTextFieldLen], + setupTextPrefix[setupTextFieldLen], + setupTextEnterToStart[setupTextFieldLen], + setupImageName[setupTextFieldLen] = "SetupImage.png", + setupMenuBarName[setupTextFieldLen] = "SetupMenuBar.png"; + + +// Engine struct static DMEngineData engine; + static const DMOptArg optList[] = { { 0, '?', "help", "Show this help", OPT_NONE }, @@ -248,23 +263,25 @@ // XXX TODO FIXME: Needs better parsing, with size checks etc. char *str = buf+pos; if (sscanf(str, "menuPos %f %f", - &engine.setupMenuPos.x, &engine.setupMenuPos.y) != 2 && + &setupMenuPos.x, &setupMenuPos.y) != 2 && sscanf(str, "menuDim %f %f", - &engine.setupMenuDim.x, &engine.setupMenuDim.y) != 2 && + &setupMenuDim.x, &setupMenuDim.y) != 2 && sscanf(str, "text1Pos %f %f", - &engine.setupText1Pos.x, &engine.setupText1Pos.y) != 2 && + &setupText1Pos.x, &setupText1Pos.y) != 2 && sscanf(str, "text2Pos %f %f", - &engine.setupText2Pos.x, &engine.setupText2Pos.y) != 2 && + &setupText2Pos.x, &setupText2Pos.y) != 2 && sscanf(str, "menuBarOffs %f %f", - &engine.setupMenuBarOffs.x, &engine.setupMenuBarOffs.y) != 2 && + &setupMenuBarOffs.x, &setupMenuBarOffs.y) != 2 && sscanf(str, "menuBarDimAdj %f %f", - &engine.setupMenuBarDimAdj.x, &engine.setupMenuBarDimAdj.y) != 2 && - sscanf(str, "menuCenter %d", &engine.setupMenuCenter) != 1 && - sscanf(str, "textCondensed %d", &engine.setupTextCondensed) != 1 && - sscanf(str, "textFullscreen %s", engine.setupTextFullscreen) != 1 && - sscanf(str, "textWindowed %s", engine.setupTextWindowed) != 1 && - sscanf(str, "textPrefix %s", engine.setupTextPrefix) != 1 && - sscanf(str, "textEnterToStart %s", engine.setupTextEnterToStart) != 1 + &setupMenuBarDimAdj.x, &setupMenuBarDimAdj.y) != 2 && + sscanf(str, "menuCenter %d", &setupMenuCenter) != 1 && + sscanf(str, "textCondensed %d", &setupTextCondensed) != 1 && + sscanf(str, "textFullscreen %s", setupTextFullscreen) != 1 && + sscanf(str, "textWindowed %s", setupTextWindowed) != 1 && + sscanf(str, "textPrefix %s", setupTextPrefix) != 1 && + sscanf(str, "textEnterToStart %s", setupTextEnterToStart) != 1 && + sscanf(str, "setupImageName %s", setupImageName) != 1 && + sscanf(str, "setupMenuBarName %s", setupMenuBarName) != 1 ) { res = dmErrorDBG(DMERR_INVALID_DATA, @@ -333,35 +350,35 @@ goto out; // Get setup data - engine.setupMenuPos.x = 0.18750f; - engine.setupMenuPos.y = 0.41666f; - engine.setupMenuDim.x = 0.625f; - engine.setupMenuDim.y = 0.41666f; + setupMenuPos.x = 0.18750f; + setupMenuPos.y = 0.41666f; + setupMenuDim.x = 0.625f; + setupMenuDim.y = 0.41666f; - engine.setupMenuBarOffs.x = 0; - engine.setupMenuBarOffs.y = -0.0001; + setupMenuBarOffs.x = 0; + setupMenuBarOffs.y = -0.0001; - engine.setupMenuBarDimAdj.x = 0; - engine.setupMenuBarDimAdj.y = 0; + setupMenuBarDimAdj.x = 0; + setupMenuBarDimAdj.y = 0; - engine.setupText1Pos.x = 0.3f; - engine.setupText1Pos.y = 0.9f; + setupText1Pos.x = 0.3f; + setupText1Pos.y = 0.9f; - engine.setupText2Pos.x = 0.25f; - engine.setupText2Pos.y = 0.85f; + setupText2Pos.x = 0.25f; + setupText2Pos.y = 0.85f; - strcpy(engine.setupTextFullscreen , "FULLSCREEN"); - strcpy(engine.setupTextWindowed , " WINDOWED "); - strcpy(engine.setupTextEnterToStart , "ENTER TO START THE DEMO"); - strcpy(engine.setupTextPrefix , "USE LEFT/RIGHT ARROW TO TOGGLE : "); + strcpy(setupTextFullscreen , "FULLSCREEN"); + strcpy(setupTextWindowed , " WINDOWED "); + strcpy(setupTextEnterToStart , "ENTER TO START THE DEMO"); + strcpy(setupTextPrefix , "USE LEFT/RIGHT ARROW TO TOGGLE : "); - if (engineParseSetupConfig(engineSetupDataName) != DMERR_OK) + if (engineParseSetupConfig(setupDataName) != DMERR_OK) goto out; // Fetch and decompress setup image, try regular resources first - if ((result = dmf_open(engine.resources, engineSetupImageName, &file)) == DMERR_OK + if ((result = dmf_open(engine.resources, setupImageName, &file)) == DMERR_OK #ifdef DM_BUILT_IN_SETUP - || (result = dmf_create_memio(NULL, engineSetupImageName, engineSetupImage, sizeof(engineSetupImage), &file)) == DMERR_OK + || (result = dmf_create_memio(NULL, setupImageName, setupImage, sizeof(setupImage), &file)) == DMERR_OK #endif ) { @@ -369,9 +386,9 @@ dmf_close(file); } - if ((result = dmf_open(engine.resources, engineSetupMenuBarName, &file)) == DMERR_OK + if ((result = dmf_open(engine.resources, setupMenuBarName, &file)) == DMERR_OK #ifdef DM_BUILT_IN_SETUP - || (result = dmf_create_memio(NULL, engineSetupMenuBarName, engineSetupMenuBar, sizeof(engineSetupMenuBar), &file)) == DMERR_OK + || (result = dmf_create_memio(NULL, setupMenuBarName, setupMenuBar, sizeof(setupMenuBar), &file)) == DMERR_OK #endif ) { @@ -400,9 +417,9 @@ // Load up the bitmap font - if ((result = dmf_open(engine.resources, engineSetupFontName, &file)) == DMERR_OK + if ((result = dmf_open(engine.resources, setupFontName, &file)) == DMERR_OK #ifdef DM_BUILT_IN_SETUP - || (result = dmf_create_memio(NULL, engineSetupFontName, engineSetupFont, sizeof(engineSetupFont), &file)) == DMERR_OK + || (result = dmf_create_memio(NULL, setupFontName, setupFont, sizeof(setupFont), &file)) == DMERR_OK #endif ) { @@ -438,7 +455,7 @@ int menuOffset = 0, menuIndex = 0, menuEntryHeight = menuFont->height + 2, - menuHeight = vsY(engine.setupMenuDim) / menuEntryHeight; + menuHeight = vsY(setupMenuDim) / menuEntryHeight; menuState = 0; @@ -521,10 +538,10 @@ if (entry == menuOffset + menuIndex) { dmScaledBlitSurface32to32TransparentGA(menuBarImage, - vsX(engine.setupMenuPos) + vsX(engine.setupMenuBarOffs), - vsY(engine.setupMenuPos) + vsY(engine.setupMenuBarOffs) + (index * menuEntryHeight), - vsX(engine.setupMenuDim) + vsX(engine.setupMenuBarDimAdj), - menuEntryHeight + vsY(engine.setupMenuBarDimAdj), + vsX(setupMenuPos) + vsX(setupMenuBarOffs), + vsY(setupMenuPos) + vsY(setupMenuBarOffs) + (index * menuEntryHeight), + vsX(setupMenuDim) + vsX(setupMenuBarDimAdj), + menuEntryHeight + vsY(setupMenuBarDimAdj), engine.screen, 200 + sin(t * 10.0) * 50); } @@ -535,35 +552,35 @@ mode->aspect / 1000, mode->aspect % 1000); - DMFloat posX = engine.setupMenuCenter ? - 2.0f + (vsX(engine.setupMenuDim) - menuFont->width * strlen(menuStr)) / 2.0f : + DMFloat posX = setupMenuCenter ? + 2.0f + (vsX(setupMenuDim) - menuFont->width * strlen(menuStr)) / 2.0f : 2.0f; dmDrawBMTextConst( engine.screen, menuFont, - engine.setupTextCondensed, DMD_TRANSPARENT, - vsX(engine.setupMenuPos) + posX, - vsY(engine.setupMenuPos) + (index * menuEntryHeight), + setupTextCondensed, DMD_TRANSPARENT, + vsX(setupMenuPos) + posX, + vsY(setupMenuPos) + (index * menuEntryHeight), menuStr); } dmDrawBMTextConst( engine.screen, menuFont, - engine.setupTextCondensed, DMD_TRANSPARENT, - vsX(engine.setupText2Pos), - vsY(engine.setupText2Pos), - engine.setupTextEnterToStart); + setupTextCondensed, DMD_TRANSPARENT, + vsX(setupText2Pos), + vsY(setupText2Pos), + setupTextEnterToStart); snprintf(menuStr, sizeof(menuStr), "%s%s", - engine.setupTextPrefix, - menuFullScreen ? engine.setupTextFullscreen : engine.setupTextWindowed); + setupTextPrefix, + menuFullScreen ? setupTextFullscreen : setupTextWindowed); dmDrawBMTextConst( engine.screen, menuFont, - engine.setupTextCondensed, DMD_TRANSPARENT, - vsX(engine.setupText1Pos), - vsY(engine.setupText1Pos), + setupTextCondensed, DMD_TRANSPARENT, + vsX(setupText1Pos), + vsY(setupText1Pos), menuStr); // Flip screen