Mercurial > hg > demos > krapula
changeset 9:ca2daec08204
Improve loading progress bar.
author | Matti Hamalainen <ccr@tnsp.org> |
---|---|
date | Sat, 29 Sep 2012 06:02:53 +0300 |
parents | b3d6670c4324 |
children | db2e214a30eb |
files | krapula.c |
diffstat | 1 files changed, 14 insertions(+), 6 deletions(-) [+] |
line wrap: on
line diff
--- a/krapula.c Sat Sep 29 05:31:17 2012 +0300 +++ b/krapula.c Sat Sep 29 06:02:53 2012 +0300 @@ -687,24 +687,32 @@ err = dmres_preload(TRUE, &loaded, &total); while ((err = dmres_preload(FALSE, &loaded, &total)) == DMERR_PROGRESS) { + // Show a nice progress bar while loading if (total > 0 && (loaded % 2) == 0) { + int dx = 60, + dh = 20, + dw = engine.screen->w - (2 * dx), + dy = (engine.screen->h - dh) / 2; + if (SDL_MUSTLOCK(engine.screen) != 0 && SDL_LockSurface(engine.screen) != 0) { dmError("Can't lock surface.\n"); goto error_exit; } + // Draw the progress bar dmClearSurface(engine.screen, dmMapRGBA(engine.screen, 0,0,0,0)); - - dmFillRect(engine.screen, 50, 220, 550, 240, dmMapRGB(engine.screen, 255,255,255)); - dmFillRect(engine.screen, 51, 221, 549, 239, dmMapRGB(engine.screen, 0,0,0)); + dmFillRect(engine.screen, dx, dy, dx+dw, dy+dh, dmMapRGB(engine.screen, 255,255,255)); + dmFillRect(engine.screen, dx+1, dy+1, dx+dw-1, dy+dh-1, dmMapRGB(engine.screen, 0,0,0)); if (total > 0) { - dmFillRect(engine.screen, 53, 223, - 53 + (547 - 53) * (float) loaded / (float) total, - 237, dmMapRGB(engine.screen, 200,200,200)); + dmFillRect(engine.screen, + dx+3, dy+3, + dx + 3 + ((dw - 3) * loaded) / total, + dy + dh - 3, + dmMapRGB(engine.screen, 200,200,200)); } // Flip screen