New hud for spiderbot and racer
authortzork <tzork@f962a42d-fe04-0410-a3ab-8c8b0445ebaa>
Sun, 28 Feb 2010 12:09:16 +0000 (12:09 +0000)
committertzork <tzork@f962a42d-fe04-0410-a3ab-8c8b0445ebaa>
Sun, 28 Feb 2010 12:09:16 +0000 (12:09 +0000)
git-svn-id: svn://svn.icculus.org/nexuiz/trunk@8682 f962a42d-fe04-0410-a3ab-8c8b0445ebaa

12 files changed:
data/gfx/spiderbot/rocket_ico.tga [deleted file]
data/gfx/spiderbot/target.tga [deleted file]
data/gfx/vehicles/hud_bg.tga [new file with mode: 0644]
data/gfx/vehicles/sbot.tga [new file with mode: 0644]
data/gfx/vehicles/sbot_mguns.tga [new file with mode: 0644]
data/gfx/vehicles/sbot_rpods.tga [new file with mode: 0644]
data/gfx/vehicles/shiled.tga [new file with mode: 0644]
data/gfx/vehicles/waki.tga [new file with mode: 0644]
data/gfx/vehicles/waki_e.tga [new file with mode: 0644]
data/gfx/vehicles/waki_guns.tga [new file with mode: 0644]
data/gfx/vehicles/waki_rockets.tga [new file with mode: 0644]
data/qcsrc/client/View.qc

diff --git a/data/gfx/spiderbot/rocket_ico.tga b/data/gfx/spiderbot/rocket_ico.tga
deleted file mode 100644 (file)
index ca427b4..0000000
Binary files a/data/gfx/spiderbot/rocket_ico.tga and /dev/null differ
diff --git a/data/gfx/spiderbot/target.tga b/data/gfx/spiderbot/target.tga
deleted file mode 100644 (file)
index 27b6de4..0000000
Binary files a/data/gfx/spiderbot/target.tga and /dev/null differ
diff --git a/data/gfx/vehicles/hud_bg.tga b/data/gfx/vehicles/hud_bg.tga
new file mode 100644 (file)
index 0000000..a2ba3b3
Binary files /dev/null and b/data/gfx/vehicles/hud_bg.tga differ
diff --git a/data/gfx/vehicles/sbot.tga b/data/gfx/vehicles/sbot.tga
new file mode 100644 (file)
index 0000000..706c87e
Binary files /dev/null and b/data/gfx/vehicles/sbot.tga differ
diff --git a/data/gfx/vehicles/sbot_mguns.tga b/data/gfx/vehicles/sbot_mguns.tga
new file mode 100644 (file)
index 0000000..a6816f9
Binary files /dev/null and b/data/gfx/vehicles/sbot_mguns.tga differ
diff --git a/data/gfx/vehicles/sbot_rpods.tga b/data/gfx/vehicles/sbot_rpods.tga
new file mode 100644 (file)
index 0000000..2170960
Binary files /dev/null and b/data/gfx/vehicles/sbot_rpods.tga differ
diff --git a/data/gfx/vehicles/shiled.tga b/data/gfx/vehicles/shiled.tga
new file mode 100644 (file)
index 0000000..bd728e2
Binary files /dev/null and b/data/gfx/vehicles/shiled.tga differ
diff --git a/data/gfx/vehicles/waki.tga b/data/gfx/vehicles/waki.tga
new file mode 100644 (file)
index 0000000..10089d2
Binary files /dev/null and b/data/gfx/vehicles/waki.tga differ
diff --git a/data/gfx/vehicles/waki_e.tga b/data/gfx/vehicles/waki_e.tga
new file mode 100644 (file)
index 0000000..0de1b6a
Binary files /dev/null and b/data/gfx/vehicles/waki_e.tga differ
diff --git a/data/gfx/vehicles/waki_guns.tga b/data/gfx/vehicles/waki_guns.tga
new file mode 100644 (file)
index 0000000..2b0705e
Binary files /dev/null and b/data/gfx/vehicles/waki_guns.tga differ
diff --git a/data/gfx/vehicles/waki_rockets.tga b/data/gfx/vehicles/waki_rockets.tga
new file mode 100644 (file)
index 0000000..538243c
Binary files /dev/null and b/data/gfx/vehicles/waki_rockets.tga differ
index f404cec..9c3bdec 100644 (file)
@@ -1,5 +1,5 @@
-#define spider_rocket_icon "gfx/spiderbot/rocket_ico.tga"
-#define spider_rocket_targ "gfx/spiderbot/target.tga"
+#define spider_rocket_icon "gfx/vehicles/rocket_ico.tga"
+#define spider_rocket_targ "gfx/vehicles/target.tga"
 #define SPIDER_CROSS "textures/spiderbot/cross.tga"
 #define rkt_size 32
 #define rld_size_x 256
@@ -184,13 +184,13 @@ vector GetCurrentFov(float fov)
                setsensitivityscale(pow(current_viewzoom, 1 - zoomsensitivity));
        else
                setsensitivityscale(1);
-               
+
        velocityzoom = bound(0, drawframetime / max(0.000000001, cvar_or("cl_velocityzoomtime", 0.3)), 1);
        avgspeed = avgspeed * (1 - velocityzoom) + (vlen(pmove_vel) / 1000) * velocityzoom;
        velocityzoom = exp(float2range11(avgspeed * -cvar_or("cl_velocityzoom", 0) / 1) * 1);
-       
+
        //print(ftos(avgspeed), " avgspeed, ", ftos(cvar_or("cl_velocityzoom", 0)), " cvar, ", ftos(velocityzoom), " return\n"); // for debugging
-       
+
        float frustumx, frustumy, fovx, fovy;
        frustumy = tan(fov * M_PI / 360.0) * 0.75 * current_viewzoom * velocityzoom;
        frustumx = frustumy * vid_width / vid_height / vid_pixelheight;
@@ -340,7 +340,7 @@ float Sbar_WouldDrawScoreboard ();
 float view_set;
 float camera_mode;
 string NextFrameCommand;
-void CSQC_spider_HUD();
+void CSQC_SPIDER_HUD();
 void CSQC_UpdateView(float w, float h)
 {
        entity e;
@@ -585,7 +585,7 @@ void CSQC_UpdateView(float w, float h)
        hud = getstati(STAT_HUD);
        if(hud == HUD_SPIDERBOT)
        {
-               CSQC_spider_HUD();
+               CSQC_SPIDER_HUD();
        }
        else if(hud == HUD_WAKIZASHI)
         CSQC_WAKIZASHI_HUD();
@@ -839,22 +839,71 @@ void CSQC_UpdateView(float w, float h)
 }
 
 void Sbar_Draw();
-void CSQC_spider_HUD()
-{
-       float rockets,reload,heat,hp,shield,i;
-       vector p,pp;
+#define spider_h "gfx/vehicles/hud_bg.tga"
+#define spider_b "gfx/vehicles/sbot.tga"
+#define spider_r "gfx/vehicles/sbot_rpods.tga"
+#define spider_g "gfx/vehicles/sbot_mguns.tga"
+#define spider_s "gfx/vehicles/shiled.tga"
+
+#define spider_a1 "gfx/hud/sb_rocket.tga"
+#define spider_a2 "gfx/sb_bullets.tga"
 
-    p = drawgetimagesize(SPIDER_CROSS);
-    p_x *= cvar_or("cl_vehicle_spiderbot_cross_size", 1);
-    p_y *= cvar_or("cl_vehicle_spiderbot_cross_size", 1);
-    drawpic('0.5 0 0' * (vid_conwidth - p_x) + '0 0.5 0' * (vid_conheight - p_y), SPIDER_CROSS, p, '1 1 1', cvar_or("cl_vehicle_spiderbot_cross_alpha",0.6), DRAWFLAG_NORMAL);
+void CSQC_SPIDER_HUD()
+{
+       float rockets, reload, heat, hp, shield, i;
+       vector picsize, hudloc;
 
+    // Fetch health & ammo stats
     hp      = bound(0,getstatf(STAT_VEHICLESTAT_HEALTH), 1);
        shield  = bound(0,getstatf(STAT_VEHICLESTAT_SHIELD), 1);
        heat    = min(getstatf(STAT_VEHICLESTAT_RELOAD1), 1);
        rockets =     getstati(STAT_VEHICLESTAT_AMMO2);
        reload  = min(getstatf(STAT_VEHICLESTAT_RELOAD2), 1);
 
+    // Draw the crosshairs
+    picsize = drawgetimagesize(SPIDER_CROSS);
+    picsize_x *= cvar_or("cl_vehicle_spiderbot_cross_size", 1);
+    picsize_y *= cvar_or("cl_vehicle_spiderbot_cross_size", 1);
+    drawpic('0.5 0 0' * (vid_conwidth - picsize_x) + '0 0.5 0' * (vid_conheight - picsize_y), SPIDER_CROSS, picsize, '1 1 1', cvar_or("cl_vehicle_spiderbot_cross_alpha",0.6), DRAWFLAG_NORMAL);
+
+    hudloc_y =  4;
+    hudloc_x = 4;
+
+    picsize = drawgetimagesize(spider_h) * 0.5;
+    drawpic(hudloc, spider_h, picsize, '1 1 1', 1, DRAWFLAG_NORMAL);
+
+    picsize = drawgetimagesize(spider_a2) * 0.5;
+    drawpic(hudloc + '120 96  0', spider_a2, picsize, '1 1 1', 1, DRAWFLAG_NORMAL);
+
+
+    drawstring(hudloc + '145 19  0', strcat(ftos(rint(hp * 100)), "%"),'15 15 0','0 1 0', 1, DRAWFLAG_NORMAL);
+    drawstring(hudloc + '175 34  0', strcat(ftos(rint(shield * 100)), "%"),'15 15 0','0 0 1', 1, DRAWFLAG_NORMAL);
+
+    drawstring(hudloc + '136 102  0', strcat(ftos(100 - rint(heat * 100)), "%"),'14 14 0','1 1 0', 1, DRAWFLAG_NORMAL);
+
+    picsize = drawgetimagesize(spider_a1) * 0.85;
+    if(rockets == 9)
+    {
+        drawpic(hudloc + '132 54  0', spider_a1, picsize, '-1 -1 -1', 1, DRAWFLAG_NORMAL);
+        drawstring(hudloc + '179 69 0', strcat(ftos(rint(reload * 100)), "%"),'14 14 0','1 1 0', 1, DRAWFLAG_NORMAL);
+    }
+    else
+    {
+        drawpic(hudloc + '132 54  0', spider_a1, picsize, '1 1 1', 1, DRAWFLAG_NORMAL);
+        drawstring(hudloc + '179 69  0', strcat(ftos(9 - rockets), "/8"),'14 14 0','1 1 0', 1, DRAWFLAG_NORMAL);
+    }
+
+    picsize = drawgetimagesize(spider_b) * 0.5;
+    hudloc_y = 10.5;
+    hudloc_x = 10.5;
+
+    drawpic(hudloc, spider_s, picsize, '1 1 1', shield, DRAWFLAG_NORMAL);
+    drawpic(hudloc, spider_b, picsize, '0 1 0' * hp + '1 0 0' * (1 - hp), 1, DRAWFLAG_NORMAL);
+    drawpic(hudloc, spider_r, picsize, '1 1 1' * reload + '1 0 0' * (1 - reload), 1, DRAWFLAG_NORMAL);
+    drawpic(hudloc, spider_g, picsize, '1 1 1' * (1 - heat) + '1 0 0' *  heat, 1, DRAWFLAG_NORMAL);
+
+
+       /*
        // Draw health bar
        p = '0.5 0 0' * (vid_conwidth - (rkt_size * 8));
        p = p + '0 1 0' * vid_conheight - '0 32 0';
@@ -872,6 +921,7 @@ void CSQC_spider_HUD()
        p_x += 256 * (1-heat);
        drawfill(p, '256 0 0' * heat  + '0 2 0' , '1 0 0', 0.5, DRAWFLAG_NORMAL);
 
+
        // Draw rocket icons for loaded/empty tubes.
        pp = '0.5 0 0' * (vid_conwidth - (rkt_size * 8));
        pp += '0 1 0' * vid_conheight - '0 64 0';
@@ -897,6 +947,7 @@ void CSQC_spider_HUD()
                                drawpic(p, spider_rocket_icon, '1 1 0' * rkt_size, '0 1 0' * reload, 0.75, DRAWFLAG_NORMAL);
                }
        }
+       */
 
        if (sb_showscores)
        {
@@ -906,17 +957,26 @@ void CSQC_spider_HUD()
 
 }
 
+#define waki_h "gfx/vehicles/hud_bg.tga"
+#define waki_b "gfx/vehicles/waki.tga"
+#define waki_e "gfx/vehicles/waki_e.tga"
+#define waki_g "gfx/vehicles/waki_guns.tga"
+#define waki_r "gfx/vehicles/waki_rockets.tga"
+#define waki_s "gfx/vehicles/shiled.tga"
+
+#define waki_a1 "gfx/hud/sb_rocket.tga"
+#define waki_a2 "gfx/sb_cells.tga"
+
 void CSQC_WAKIZASHI_HUD()
 {
        // 0--1 floats. 1 = 100%, 0.6 = 50%.
        float health, shield, energy, rockets;
+       vector picsize, hudloc;
 
-       vector p;
-
-    p = drawgetimagesize(SPIDER_CROSS);
-    p_x *= cvar_or("cl_vehicle_spiderbot_cross_size", 1);
-    p_y *= cvar_or("cl_vehicle_spiderbot_cross_size", 1);
-    drawpic('0.5 0 0' * (vid_conwidth - p_x) + '0 0.5 0' * (vid_conheight - p_y), SPIDER_CROSS, p, '1 1 1', cvar_or("cl_vehicle_spiderbot_cross_alpha",0.6), DRAWFLAG_NORMAL);
+    picsize = drawgetimagesize(SPIDER_CROSS);
+    picsize_x *= cvar_or("cl_vehicle_spiderbot_cross_size", 1);
+    picsize_y *= cvar_or("cl_vehicle_spiderbot_cross_size", 1);
+    drawpic('0.5 0 0' * (vid_conwidth - picsize_x) + '0 0.5 0' * (vid_conheight - picsize_y), SPIDER_CROSS, picsize, '1 1 1', cvar_or("cl_vehicle_spiderbot_cross_alpha",0.6), DRAWFLAG_NORMAL);
 
 /*
 const float STAT_VEHICLESTAT_HEALTH  = 60;
@@ -932,7 +992,46 @@ const float STAT_VEHICLESTAT_RELOAD2 = 66;
        energy  = min(getstatf(STAT_VEHICLESTAT_ENERGY),  1);
        rockets = bound(0,getstatf(STAT_VEHICLESTAT_RELOAD1), 1);
 
+    hudloc_y =  4;
+    hudloc_x = 4;
+
+    picsize = drawgetimagesize(waki_h) * 0.5;
+    drawpic(hudloc, waki_h, picsize, '1 1 1', 1, DRAWFLAG_NORMAL);
+
+    picsize = drawgetimagesize(waki_a2) * 0.7;
+    drawpic(hudloc + '116 92  0', waki_a2, picsize, '1 1 1', 1, DRAWFLAG_NORMAL);
+
+
+    drawstring(hudloc + '145 19  0', strcat(ftos(rint(health * 100)), "%"),'15 15 0','0 1 0', 1, DRAWFLAG_NORMAL);
+    drawstring(hudloc + '175 34  0', strcat(ftos(rint(shield * 100)), "%"),'15 15 0','0 0 1', 1, DRAWFLAG_NORMAL);
+
+    drawstring(hudloc + '136 102  0', strcat(ftos(rint(energy * 100)), "%"),'14 14 0','1 1 1', 1, DRAWFLAG_NORMAL);
+
+    picsize = drawgetimagesize(waki_a1) * 0.75;
+    if(rockets == 1)
+    {
+        drawpic(hudloc + '140 55  0', waki_a1, picsize, '1 1 1', 1, DRAWFLAG_NORMAL);
+        drawpic(hudloc + '144 59  0', waki_a1, picsize, '1 1 1', 1, DRAWFLAG_NORMAL);
+    }
+    else
+    {
+        drawpic(hudloc + '140 55  0', waki_a1, picsize, '-1 -1 -1', 1, DRAWFLAG_NORMAL);
+        drawpic(hudloc + '144 59  0', waki_a1, picsize, '-1 -1 -1', 1, DRAWFLAG_NORMAL);
+        drawstring(hudloc + '165 69 0', strcat(ftos(rint(rockets * 100)), "%"),'14 14 0','1 1 0', 1, DRAWFLAG_NORMAL);
+    }
+
+    picsize = drawgetimagesize(waki_b) * 0.5;
+    hudloc_y = 10.5;
+    hudloc_x = 10.5;
+
+    drawpic(hudloc, waki_s, picsize, '1 1 1', shield, DRAWFLAG_NORMAL);
+    drawpic(hudloc, waki_b, picsize, '0 1 0' * health + '1 0 0' * (1 - health), 1, DRAWFLAG_NORMAL);
+    drawpic(hudloc, waki_r, picsize, '1 1 1' * rockets + '1 0 0' * (1 - rockets), 1, DRAWFLAG_NORMAL);
+    drawpic(hudloc, waki_e, picsize, '1 1 1' * energy + '1 0 0' *  (1 - energy), 1, DRAWFLAG_NORMAL);
 
+
+
+       /*
        p = '0.5 0 0' * (vid_conwidth - (rkt_size * 8));
        p = p + '0 1 0' * vid_conheight - '0 32 0';
 
@@ -955,22 +1054,9 @@ const float STAT_VEHICLESTAT_RELOAD2 = 66;
        // Draw rockets bar
        p_y += 12;
        drawfill(p, '256 0 0' * rockets + '0 4 0' , '1 0 0', 0.75, DRAWFLAG_NORMAL);
+       */
 
 
-       /*
-       // Draw energy bar
-       p = '0.5 0 0' * (vid_conwidth - 256);
-       p = p + '0 1 0' * vid_conheight - '0 34  0';
-       drawfill(p, '256 0 0' * (1 - energy) + '0 2 0' ,'0 0 1', 0.5, DRAWFLAG_NORMAL);
-       p_x += 256 * (1 - energy);
-       drawfill(p, '256 0 0' * energy  + '0 2 0' , '1 0 0', 0.5, DRAWFLAG_NORMAL);
-
-       // Draw rockets bar
-       p_y += 8;
-       drawfill(p, '256 0 0' * rockets + '0 8 0' , '1 0 0', 0.75, DRAWFLAG_NORMAL);
-       p_x += 256 * health;
-       drawfill(p, '256 0 0' * (1 - rockets) + '0 8 0' , '0 0 0', 0.75, DRAWFLAG_NORMAL);
-    */
 
 
        if (sb_showscores)
@@ -996,7 +1082,7 @@ void CSQC_common_hud(void)
                        break;
 
                case HUD_SPIDERBOT:
-                       CSQC_spider_HUD();
+                       CSQC_SPIDER_HUD();
                        break;
 
                case HUD_WAKIZASHI: