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