changeset 756:4dda14ff8e1a

Add some configurable texts to setup screen.
author Matti Hamalainen <ccr@tnsp.org>
date Sun, 05 May 2013 06:38:34 +0300
parents 614df17de975
children dd59a650a318
files dmengine.h dmsimple.c
diffstat 2 files changed, 32 insertions(+), 19 deletions(-) [+]
line wrap: on
line diff
--- a/dmengine.h	Sun May 05 03:38:49 2013 +0300
+++ b/dmengine.h	Sun May 05 06:38:34 2013 +0300
@@ -278,6 +278,7 @@
     // Setup specifics
     DMVector setupMenuPos, setupMenuDim, setupText1Pos;
     BOOL setupMenuCenter, setupTextCondensed;
+    char setupTextFullscreen[64], setupTextWindowed[64], setupTextPrefix[64];
 } DMEngineData;
 
 
--- a/dmsimple.c	Sun May 05 03:38:49 2013 +0300
+++ b/dmsimple.c	Sun May 05 06:38:34 2013 +0300
@@ -275,14 +275,19 @@
         if (buf[pos] == 0 || buf[pos] == '#')
             continue;
 
-        if (sscanf(buf+pos, "menuPos %f %f",
+        char *str = buf+pos;
+        if (sscanf(str, "menuPos %f %f",
             &engine.setupMenuPos.x, &engine.setupMenuPos.y) != 2 &&
-            sscanf(buf+pos, "menuDim %f %f",
+            sscanf(str, "menuDim %f %f",
             &engine.setupMenuDim.x, &engine.setupMenuDim.y) != 2 &&
-            sscanf(buf+pos, "text1Pos %f %f",
+            sscanf(str, "text1Pos %f %f",
             &engine.setupText1Pos.x, &engine.setupText1Pos.y) != 2 &&
-            sscanf(buf+pos, "menuCenter %d", &engine.setupMenuCenter) != 1 &&
-            sscanf(buf+pos, "textCondensed %d", &engine.setupTextCondensed) != 1)
+            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
+            )
         {
             dmError("Syntax error in configuration:\n%s\n", buf);
             res = DMERR_INVALID_DATA;
@@ -347,16 +352,20 @@
         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;
+
+    engine.setupText1Pos.x = 0.3f;
+    engine.setupText1Pos.y = 0.7f;
+
+    strcpy(engine.setupTextFullscreen , "FULLSCREEN");
+    strcpy(engine.setupTextWindowed   , " WINDOWED ");
+    strcpy(engine.setupTextPrefix     , "USE LEFT/RIGHT ARROW TO TOGGLE : ");
+
     if (engineParseSetupConfig(engineSetupDataName) != DMERR_OK)
-    {
-        engine.setupMenuPos.x = 0.18750f;
-        engine.setupMenuPos.y = 0.41666f;
-        engine.setupMenuDim.x = 0.625f;
-        engine.setupMenuDim.y = 0.41666f;
-        
-        engine.setupText1Pos.x = 0.3f;
-        engine.setupText1Pos.y = 0.7f;
-    }
+        goto out;
 
     // Fetch and decompress setup image, try regular resources first
     if ((result = dmf_open(engine.resources, engineSetupImageName, &file)) == DMERR_OK ||
@@ -421,7 +430,7 @@
 
 
     // Enter the main loop of the menu
-    char menuStr[64];
+    char menuStr[256];
     int menuOffset = 0,
         menuIndex = 0,
         menuEntryHeight = menuFont->height + 2,
@@ -517,7 +526,7 @@
             }
 
             snprintf(menuStr, sizeof(menuStr),
-                "%4d X %4d  [%d:%d]",
+                "%4d X %-4d  - %d:%d",
                 mode->w, mode->h,
                 mode->aspect / 1000,
                 mode->aspect % 1000);
@@ -534,14 +543,17 @@
                 menuStr);
         }
         
+        snprintf(menuStr, sizeof(menuStr),
+            "%s%s",
+            engine.setupTextPrefix,
+            menuFullScreen ? engine.setupTextFullscreen : engine.setupTextWindowed);
+
         dmDrawBMTextConst(
             engine.screen, menuFont,
             engine.setupTextCondensed, DMD_TRANSPARENT,
             vsX(engine.setupText1Pos),
             vsY(engine.setupText1Pos),
-            menuFullScreen ?
-            "FULLSCREEN" :
-            " WINDOWED ");
+            menuStr);
 
         // Flip screen
         if (SDL_MUSTLOCK(engine.screen) != 0)