--- fps.cpp 20 Nov 2006 16:54:02 -0000 1.113 +++ fps.cpp 29 Jan 2007 20:43:44 -0000 @@ -492,22 +492,103 @@ void drawicon(float tx, float ty, int x, int y) { + float w = 8.0f; + int sx = 120, sy = 120; + settexture("data/items.png"); + + if (tx >= 384) + { + glEnable(GL_BLEND); + glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); + glColor4f(1.0,1.0,1.0,0.5); + w/=2.0; + sx*=1.6; + } + glBegin(GL_QUADS); - tx /= 384; + tx /= 512; ty /= 128; - int s = 120; - glTexCoord2f(tx, ty); glVertex2i(x, y); - glTexCoord2f(tx+1/6.0f, ty); glVertex2i(x+s, y); - glTexCoord2f(tx+1/6.0f, ty+1/2.0f); glVertex2i(x+s, y+s); - glTexCoord2f(tx, ty+1/2.0f); glVertex2i(x, y+s); + glTexCoord2f(tx, ty); glVertex2i(x, y); + glTexCoord2f(tx+1/w, ty); glVertex2i(x+sx, y); + glTexCoord2f(tx+1/w, ty+1/2.0f); glVertex2i(x+sx, y+sy); + glTexCoord2f(tx, ty+1/2.0f); glVertex2i(x, y+sy); glEnd(); + + glDisable(GL_BLEND); }; void gameplayhud(int w, int h) { + short hs = -32768; + short x = w*1800/h; + + if(!m_teammode) + { + loopv(players) if(players[i]) + if ((players[i] != player1) && (players[i]->frags > hs)) + hs = players[i]->frags; + } + else + { + if(m_capture) + { + loopv(cpc.scores) if(cpc.scores[i].total) + if ((!isteam(cpc.scores[i].team, player1->team)) && (cpc.scores[i].total > hs)) + hs = cpc.scores[i].total; + } + else + { + loopi(numdynents()) + { + int score = 0; + fpsent *o = (fpsent *)iterdynents(i); + + if(o && o->type!=ENT_AI && o->frags && (!isteam(o->team, player1->team))) + { + score = o->frags; + + loopi(numdynents()) + { + fpsent *oa = (fpsent *)iterdynents(i); + + if(oa && oa->type!=ENT_AI && oa->frags && (oa != o) && (isteam(o->team, oa->team))) + score += oa->frags; + } + + if (score > hs) + hs = score; + }; + } + }; + } + glLoadIdentity(); + glOrtho(0, x, 1800, 0, -1, 1); + + glColor3f(1.0,1.0,1.0); + + if (hs > -32768) + { + drawicon(384, hs > player1->frags ? 64 : 0, x-418, 1650); + drawicon(384, hs > player1->frags ? 0 : 64, x-225, 1650); + } + + drawicon(192, 0, 20, 1650); + if(player1->state!=CS_DEAD) + { + if(player1->armour) drawicon((float)(player1->armourtype*64), 0, 620, 1650); + int g = player1->gunselect; + int r = 64; + if(g==GUN_PISTOL) { g = 4; r = 0; }; + drawicon((float)(g*64), (float)r, 1220, 1650); + }; + if(m_capture) cpc.capturehud(w, h); + + glLoadIdentity(); glOrtho(0, w*900/h, 900, 0, -1, 1); + glEnable(GL_BLEND); + if(player1->state==CS_SPECTATOR) { draw_text("SPECTATOR", 10, 827); @@ -520,21 +601,43 @@ draw_textf("%d", 690, 822, player1->ammo[player1->gunselect]); }; - glLoadIdentity(); - glOrtho(0, w*1800/h, 1800, 0, -1, 1); - - glDisable(GL_BLEND); - - drawicon(192, 0, 20, 1650); - if(player1->state!=CS_DEAD) - { - if(player1->armour) drawicon((float)(player1->armourtype*64), 0, 620, 1650); - int g = player1->gunselect; - int r = 64; - if(g==GUN_PISTOL) { g = 4; r = 0; }; - drawicon((float)(g*64), (float)r, 1220, 1650); - }; - if(m_capture) cpc.capturehud(w, h); + if (hs > -32768) + { + string frags; + int pf = m_teammode ? 0 : player1->frags; + + if (m_teammode) + { + if(m_capture) + pf = cpc.findscore(player1->team).total; + else + { + loopi(numdynents()) + { + fpsent *o = (fpsent *)iterdynents(i); + + if(o && o->type!=ENT_AI && o->frags && (isteam(o->team, player1->team))) + { + pf = o->frags; + + loopi(numdynents()) + { + fpsent *oa = (fpsent *)iterdynents(i); + + if(oa && oa->type!=ENT_AI && oa->frags && (oa != o) && (isteam(o->team, oa->team))) + pf += oa->frags; + } + }; + } + + } + } + + s_sprintf(frags)("%d", pf); + draw_text(frags, (hs > pf ? (x-42)/2 : (x-234)/2) - text_width(frags), 822); + s_sprintf(frags)("%d", hs); + draw_text(frags, (hs > pf ? (x-234)/2 : (x-42)/2) - text_width(frags), 822); + } }; void newmap(int size)