]> git.mxchange.org Git - quix0rs-blobwars.git/blobdiff - src/info.cpp
Don't link pak tool with SDL.
[quix0rs-blobwars.git] / src / info.cpp
index 73be58dfcf3af0dffe479bf2e880d83a62b18d7e..12813a1aa860d7601d2744434b8933d57aade5e9 100644 (file)
@@ -1,5 +1,5 @@
 /*
-Copyright (C) 2004 Parallel Realities
+Copyright (C) 2004-2011 Parallel Realities
 
 This program is free software; you can redistribute it and/or
 modify it under the terms of the GNU General Public License
@@ -51,6 +51,10 @@ void doTimeRemaining()
 
 void doStatusBar()
 {
+       static Graphics::SurfaceCache healthCache;
+       static Graphics::SurfaceCache oxygenCache;
+       static Graphics::SurfaceCache jetpackCache;
+
        graphics.setFontSize(0);
        graphics.setFontColor(0xff, 0xff, 0xff, 0x00, 0x00, 0x00);
 
@@ -58,7 +62,7 @@ void doStatusBar()
 
        graphics.blit(graphics.infoBar, 0, 0, graphics.screen, false);
 
-       graphics.drawString(_("Health"), 50, 5, TXT_RIGHT, graphics.screen);
+       graphics.drawString(_("Health"), 50, 5, TXT_RIGHT, graphics.screen, healthCache);
 
        for (int i = 0 ; i < MAX_HEALTH ; i++)
        {
@@ -75,7 +79,7 @@ void doStatusBar()
 
        if ((!game.hasAquaLung) && (!engine.cheatExtras))
        {
-               graphics.drawString(_("Oxygen"), 305, 5, TXT_RIGHT, graphics.screen);
+               graphics.drawString(_("Oxygen"), 305, 5, TXT_RIGHT, graphics.screen, oxygenCache);
 
                for (int i = 0 ; i < 7 ; i++)
                {
@@ -92,7 +96,7 @@ void doStatusBar()
        }
        else if ((game.hasJetPack) || (engine.cheatExtras))
        {
-               graphics.drawString(_("Jetpack"), 305, 5, TXT_RIGHT, graphics.screen);
+               graphics.drawString(_("Jetpack"), 305, 5, TXT_RIGHT, graphics.screen, jetpackCache);
 
                for (int i = 0 ; i < 7 ; i++)
                {
@@ -131,8 +135,9 @@ void doStatusBar()
                                        break;
                        }
        
+                       static Graphics::SurfaceCache cache;
                        graphics.blit(graphics.infoBar, 0, 455, graphics.screen, false);
-                       graphics.drawString(_(engine.message), 320, 466, true, graphics.screen);
+                       graphics.drawString(_(engine.message), 320, 466, true, graphics.screen, cache);
                        
                        engine.messageTime--;
                        if (engine.messageTime == -1)
@@ -150,7 +155,8 @@ void doStatusBar()
                {
                        graphics.blit(graphics.infoBar, 0, 455, graphics.screen, false);
                        
-                       graphics.drawString(_(map.mainBossPart->name), 255, 460, TXT_RIGHT, graphics.screen);
+                       static Graphics::SurfaceCache cache;
+                       graphics.drawString(_(map.mainBossPart->name), 255, 460, TXT_RIGHT, graphics.screen, cache);
                        graphics.drawRect(265 - 1, 463 - 1, 200 + 2, 10 + 2, graphics.white, graphics.screen);
                        graphics.drawRect(265, 463, 200, 10, graphics.black, graphics.screen);
                        
@@ -161,8 +167,9 @@ void doStatusBar()
                }
        }
 
+       static Graphics::SurfaceCache weaponCache;
        snprintf(string, sizeof string, "%s %s", _("Weapon:"), _(player.currentWeapon->name));
-       graphics.drawString(string, 630, 5, TXT_RIGHT, graphics.screen);
+       graphics.drawString(string, 630, 5, TXT_RIGHT, graphics.screen, weaponCache);
        
        if (game.skill == 3)
        {
@@ -185,13 +192,15 @@ void doStatusBar()
                                        }
                                }
                        }
-                       graphics.drawString(string, 320, 35, TXT_CENTERED, graphics.screen);
+                       static Graphics::SurfaceCache cache;
+                       graphics.drawString(string, 320, 35, TXT_CENTERED, graphics.screen, cache);
                }
                else
                {
+                       static Graphics::SurfaceCache cache;
                        graphics.setFontColor(0xff, 0x00, 0x00, 0x00, 0x00, 0x00);
                        graphics.setFontSize(3);
-                       graphics.drawString(_("Mission Failed! Time Up!"), 320, 220, TXT_CENTERED, graphics.screen);
+                       graphics.drawString(_("Mission Failed! Time Up!"), 320, 220, TXT_CENTERED, graphics.screen, cache);
                        graphics.setFontSize(0);
                        game.canContinue = 0;
                }
@@ -241,7 +250,7 @@ void doPauseInfo()
 
        // Do the objectives list
        Objective *objective = (Objective*)map.objectiveList.getHead();
-       char message[100];
+       char message[256];
 
        y += 60;
 
@@ -337,32 +346,67 @@ void doMusicInfo(unsigned int ticks)
        }
 
        graphics.setFontSize(0);
-       graphics.setFontColor(0xff, 0xff, 0xff, 0x00, 0x00, 0x00);
+       graphics.setFontColor(0xff, 0xff, 0xff, 0x40, 0x40, 0x40);
+
+       SDL_Surface *text;
 
        const int x = 620;
        int y = 420;
 
-       graphics.drawString(audio.songtitle, x, y, TXT_RIGHT, graphics.screen);
-       y -= 16;
+       static int w = 0;
+       static int h = 0;
+
+       if(w && h)
+               graphics.drawRect(x - w - 5, y - h - 5, w + 10, h + 10, graphics.darkGrey, graphics.screen);
+
+       w = h = 0;
+
+       text = graphics.getString(audio.songtitle, true);
+       y -= text->h;
+       h = text->h;
+       w = text->w;
+
+       graphics.blit(text, x - text->w, y, graphics.screen, false);
+       SDL_FreeSurface(text);
 
        if(audio.songalbum[0])
        {
-               graphics.setFontColor(0x80, 0xc0, 0xff, 0x00, 0x00, 0x00);
-               graphics.drawString(audio.songalbum, x, y, TXT_RIGHT, graphics.screen);
-               y -= 16;
+               graphics.setFontColor(0x80, 0xc0, 0xff, 0x40, 0x40, 0x40);
+               
+               text = graphics.getString(audio.songalbum, true);
+               y -= text->h + 4;
+               h += text->h + 4;
+               if(text->w > w)
+                       w = text->w;
+
+               graphics.blit(text, x - text->w, y, graphics.screen, false);
+               SDL_FreeSurface(text);
        }
 
        if(audio.songartist[0])
        {
-               graphics.setFontColor(0xff, 0xc0, 0x80, 0x00, 0x00, 0x00);
-               graphics.drawString(audio.songartist, x, y, TXT_RIGHT, graphics.screen);
-               y -= 16;
+               graphics.setFontColor(0xff, 0xc0, 0x80, 0x40, 0x40, 0x40);
+
+               text = graphics.getString(audio.songartist, true);
+               y -= text->h + 4;
+               h += text->h + 4;
+               if(text->w > w)
+                       w = text->w;
+
+               graphics.blit(text, x - text->w, y, graphics.screen, false);
+               SDL_FreeSurface(text);
        }
 
        if(audio.songlicense >= 0)
        {
                SDL_Surface *icon = graphics.license[audio.songlicense];
-               graphics.blit(icon, x - icon->w, y - icon->h, graphics.screen, false);
+
+               y -= icon->h + 8;
+               h += icon->h + 8;
+               if(icon->w > w)
+                       w = icon->w;
+
+               graphics.blit(icon, x - icon->w, y, graphics.screen, false);
        }
 }