Mercurial > hg > dmlib
changeset 608:9620208f7ff4
More work on setup.
author | Matti Hamalainen <ccr@tnsp.org> |
---|---|
date | Fri, 12 Apr 2013 11:33:56 +0300 |
parents | 360b1ad83ed9 |
children | 877dba1b8a1f |
files | dmsimple.c |
diffstat | 1 files changed, 24 insertions(+), 8 deletions(-) [+] |
line wrap: on
line diff
--- a/dmsimple.c Fri Apr 12 11:21:37 2013 +0300 +++ b/dmsimple.c Fri Apr 12 11:33:56 2013 +0300 @@ -5,8 +5,10 @@ #include "dmimage.h" #include "setupfont.h" #include "setupimage.h" +#include "setupmenubar.h" static const char *engineSetupImageName = "SetupImage.png"; +static const char *engineSetupMenuBarName = "SetupMenuBar.png"; static const char *engineSetupFontName = "SetupFont.dmf"; static DMEngineData engine; @@ -172,7 +174,7 @@ { DMBitmapFont *menuFont = NULL; DMResource *file = NULL; - SDL_Surface *menuBgImage = NULL; + SDL_Surface *menuBgImage = NULL, *menuBarImage = NULL; int result, menuState = -1, nmenuList, menuChoice = 0; DMScaledBlitFunc menuBgBlit; char menuStr[64]; @@ -192,9 +194,16 @@ menuBgImage = dmLoadImage(file); dmf_close(file); - if (menuBgImage == NULL) + file = dmf_open(engine.resources, engineSetupMenuBarName); + if (file == NULL) + file = dmf_create_memio(NULL, engineSetupMenuBarName, engineSetupMenuBar, sizeof(engineSetupMenuBar)); + + menuBarImage = dmLoadImage(file); + dmf_close(file); + + if (menuBgImage == NULL || menuBarImage == NULL) { - dmError("Could not instantiate setup screen image, %d: %s\n", + dmError("Could not instantiate setup screen images, %d: %s\n", result, dmErrorStr(result)); goto out; } @@ -230,6 +239,7 @@ menuHeight = DM_VSETUP_MENU_HEIGHT / menuEntryHeight; // Enter the main loop of the menu + engine.startTime = SDL_GetTicks(); menuState = 0; while (!menuState) { @@ -270,6 +280,7 @@ } // Draw frame + engine.frameTime = SDL_GetTicks(); if (SDL_MUSTLOCK(engine.screen) != 0 && SDL_LockSurface(engine.screen) != 0) { dmError("Can't lock surface.\n"); @@ -281,19 +292,20 @@ menuBgBlit(menuBgImage, 0, 0, engine.screen->w, engine.screen->h, engine.screen); // XXX/TODO: Some hardcoded bits here ... + float t = engineGetTimeDT(&engine); int entry; nmenuList = 5; - dmFillRect(engine.screen, + dmScaledBlitSurface32to32TransparentGA(menuBarImage, DM_VSETUP_MENU_XC, DM_VSETUP_MENU_YC + (menuChoice * menuEntryHeight), - DM_VSETUP_MENU_XC + DM_VSETUP_MENU_WIDTH, - DM_VSETUP_MENU_YC + (menuChoice * menuEntryHeight) + menuEntryHeight + 2, - dmMapRGBA(engine.screen, 255, 255, 255, 100)); + DM_VSETUP_MENU_WIDTH, menuEntryHeight + 2, + engine.screen, + 200 + sin(t * 10.0) * 50); for (entry = 0; entry < nmenuList && entry < menuHeight; entry++) { - snprintf(menuStr, sizeof(menuStr), "SUPERMEGA %d", menuHeight); + snprintf(menuStr, sizeof(menuStr), "%4d X %4d", 640 * (entry + 1), 480 * (entry + 1)); dmDrawBMTextConst( engine.screen, menuFont, DMD_TRANSPARENT, DM_VSETUP_MENU_XC + 2, @@ -311,6 +323,10 @@ } out: + SDL_FreeSurface(menuBgImage); + SDL_FreeSurface(menuBarImage); + dmFreeBitmapFont(menuFont); + return menuState; }