void CResourceBar::Draw(void) { if (disabled) { return; } const CTeam* myTeam = gs->Team(gu->myTeam); GLfloat x1,y1,x2,y2,x; glDisable(GL_TEXTURE_2D); glEnable(GL_BLEND); glDisable(GL_ALPHA_TEST); glBegin(GL_QUADS); // Box glColor4f(0.2f,0.2f,0.2f,guiAlpha); glVertex2f(box.x1, box.y1); glVertex2f(box.x1, box.y2); glVertex2f(box.x2, box.y2); glVertex2f(box.x2, box.y1); //layout metal in box GLfloat metalx = box.x1+.01f; GLfloat metaly = box.y1+.004f; GLfloat metalbarx1 = metalx+.08f; GLfloat metalbarx2 = box.x1+(box.x2-box.x1)/2.0f-.03f; // metal layout GLfloat metalbarlen = metalbarx2-metalbarx1; x1 = metalbarx1; y1 = metaly+.014f; x2 = metalbarx2; y2 = metaly+.020f; x = (1.0f * myTeam->metal / myTeam->metalStorage) * metalbarlen; //metal draw glColor4f(0.8f,0.8f,0.8f,0.2f); glVertex2f(x1, y1); glVertex2f(x1, y2); glVertex2f(x2, y2); glVertex2f(x2, y1); glColor4f(1.0f,1.0f,1.0f,1.0f); glVertex2f(x1, y1); glVertex2f(x1, y2); glVertex2f(x1+x, y2); glVertex2f(x1+x, y1); x = myTeam->metalShare*metalbarlen; glColor4f(0.9f,0.2f,0.2f,0.7f); glVertex2f(x1+x+0.003f, y1-0.003f); glVertex2f(x1+x+0.003f, y2+0.003f); glVertex2f(x1+x-0.003f, y2+0.003f); glVertex2f(x1+x-0.003f, y1-0.003f); // Energy //layout energy in box GLfloat energyx = box.x1 + 0.4f; GLfloat energyy = box.y1 + 0.004f; GLfloat energybarx1 = energyx + 0.08f; GLfloat energybarx2 = box.x2 - 0.03f; //energy layout GLfloat energybarlen = energybarx2-energybarx1; x1 = energybarx1; y1 = energyy + 0.014f; x2 = energybarx2; y2 = energyy + 0.020f; x = (1.0f * myTeam->energy / myTeam->energyStorage) * energybarlen; //energy draw glColor4f(0.8f,0.8f,0.2f,0.2f); glVertex2f(x1, y1); glVertex2f(x1, y2); glVertex2f(x2, y2); glVertex2f(x2, y1); glColor4f(1.0f,1.0f,0.2f,1.0f); glVertex2f(x1, y1); glVertex2f(x1, y2); glVertex2f(x1+x, y2); glVertex2f(x1+x, y1); x=myTeam->energyShare*energybarlen; glColor4f(0.9f,0.2f,0.2f,0.7f); glVertex2f(x1+x+0.003f, y1-0.003f); glVertex2f(x1+x+0.003f, y2+0.003f); glVertex2f(x1+x-0.003f, y2+0.003f); glVertex2f(x1+x-0.003f, y1-0.003f); glEnd(); // draw labels glEnable(GL_TEXTURE_2D); glColor4f(1,1,1,0.8f); const float headerFontScale = 1.2f, labelsFontScale = 1.0f; smallFont->glPrintAt(metalx - 0.004f, metaly, headerFontScale, "Metal"); smallFont->glPrintAt(metalbarx2 - 0.01f, metaly - 0.005f, labelsFontScale, FloatToSmallString(myTeam->metalStorage).c_str()); smallFont->glPrintAt(metalbarx1 + metalbarlen / 2.0f, metaly - 0.005f, labelsFontScale, FloatToSmallString(myTeam->metal).c_str()); glColor4f(1.0f, 0.4f, 0.4f, 1.0f); // Expenses smallFont->glFormatAt(metalx + 0.044f, metaly - 0.005f, labelsFontScale, "-%s(-%s)", FloatToSmallString(fabs(myTeam->prevMetalPull)).c_str(), FloatToSmallString(fabs(myTeam->metalSent)).c_str()); glColor4f(0.6f, 1.0f, 0.6f, 0.95f); // Income smallFont->glFormatAt(metalx + 0.044f, metaly + 0.008f, labelsFontScale, "+%s", FloatToSmallString(myTeam->prevMetalIncome).c_str()); // FloatToSmallString(myTeam->metalReceived).c_str()); glColor4f(1,1,0.4f,0.8f); smallFont->glPrintAt(energyx - 0.018f, energyy, headerFontScale, "Energy"); glColor4f(1,1,1,0.8f); smallFont->glPrintAt(energybarx2 - 0.01f, energyy - 0.005f, labelsFontScale, FloatToSmallString(myTeam->energyStorage).c_str()); smallFont->glPrintAt(energybarx1 + energybarlen / 2.0f, energyy - 0.005f, labelsFontScale, FloatToSmallString(myTeam->energy).c_str()); glColor4f(1.0f,.4f,.4f,1.0f); // Expenses smallFont->glFormatAt(energyx + 0.044f, energyy - 0.005f, labelsFontScale, "-%s(-%s)", FloatToSmallString(fabs(myTeam->prevEnergyPull)).c_str(), FloatToSmallString(fabs(myTeam->energySent)).c_str()); glColor4f(.6f,1.0f,.6f,.95f); // Income smallFont->glFormatAt(energyx + 0.044f, energyy + 0.008f, labelsFontScale, "+%s", FloatToSmallString(myTeam->prevEnergyIncome).c_str()); // FloatToSmallString(myTeam->energyReceived).c_str()); glDisable(GL_TEXTURE_2D); glLoadIdentity(); }
void CResourceBar::Draw(void) { float mx=float(mouse->lastx)/gu->screenx; float my=(gu->screeny-float(mouse->lasty))/gu->screeny; GLfloat x1,y1,x2,y2,x; // Box glDisable(GL_TEXTURE_2D); glEnable(GL_BLEND); glDisable(GL_ALPHA_TEST); glColor4f(0.2f,0.2f,0.2f,0.4f); glBegin(GL_QUADS); glVertex2f(box.x1, box.y1); glVertex2f(box.x1, box.y2); glVertex2f(box.x2, box.y2); glVertex2f(box.x2, box.y1); glVertex2f(box.x1, box.y1); glEnd(); //layout metal in box GLfloat metalx = box.x1+.01f; GLfloat metaly = box.y1+.002; GLfloat metalbarx1 = metalx+.08f; GLfloat metalbarx2 = box.x1+(box.x2-box.x1)/2.0-.03f; //metal layout GLfloat metalbarlen = metalbarx2-metalbarx1; x1=metalbarx1; y1=metaly+.014f; x2=metalbarx2; y2=metaly+.020f; x=(1.0*gs->Team(gu->myTeam)->metal/gs->Team(gu->myTeam)->metalStorage)*metalbarlen; glEnable(GL_TEXTURE_2D); glColor4f(1,1,1,0.8f); font->glPrintAt(metalx,metaly+.005f,0.7f,""); glDisable(GL_TEXTURE_2D); //metal draw glColor4f(0.8f,0.8f,0.8f,0.2f); glBegin(GL_QUADS); glVertex2f(x1, y1); glVertex2f(x1, y2); glVertex2f(x2, y2); glVertex2f(x2, y1); glEnd(); glColor4f(1.0f,1.0f,1.0f,1.0f); glBegin(GL_QUADS); glVertex2f(x1, y1); glVertex2f(x1, y2); glVertex2f(x1+x, y2); glVertex2f(x1+x, y1); glEnd(); x=gs->Team(gu->myTeam)->metalShare*metalbarlen; glColor4f(0.9f,0.2f,0.2f,0.7f); glBegin(GL_QUADS); glVertex2f(x1+x+0.003, y1-0.003); glVertex2f(x1+x+0.003, y2+0.003); glVertex2f(x1+x-0.003, y2+0.003); glVertex2f(x1+x-0.003, y1-0.003); glEnd(); glEnable(GL_TEXTURE_2D); glColor4f(1,1,1,0.8f); font->glPrintAt(metalx-0.004,metaly+.005f,0.7f,"Metal"); font->glPrintAt(metalbarx2-.01f,metaly,0.5,"%s",FloatToSmallString(gs->Team(gu->myTeam)->metalStorage).c_str()); font->glPrintAt(metalbarx1+metalbarlen/2.0,metaly/*+.02f*/,0.5,"%s",FloatToSmallString(gs->Team(gu->myTeam)->metal).c_str()); glColor4f(1.0f,.4f,.4f,1.0f); // Expenses font->glPrintAt(metalx+.044f,metaly-0.002f,0.5,"-%s(-%s)",FloatToSmallString(fabs(gs->Team(gu->myTeam)->oldMetalExpense)).c_str(),FloatToSmallString(fabs(gs->Team(gu->myTeam)->oldMetalUpkeep)).c_str()); glColor4f(.6f,1.0f,.6f,.95f); // Income font->glPrintAt(metalx+.044f,metaly+.01f,0.5,"+%s",FloatToSmallString(gs->Team(gu->myTeam)->oldMetalIncome).c_str()); // Energy glDisable(GL_TEXTURE_2D); //layout energy in box GLfloat energyx = box.x1+0.37f; GLfloat energyy = box.y1+0.002; GLfloat energybarx1 = energyx+.08f; GLfloat energybarx2 = box.x2-0.03f; //energy layout GLfloat energybarlen = energybarx2-energybarx1; x1=energybarx1; y1=energyy+.014f; x2=energybarx2; y2=energyy+.020f; x=(1.0*gs->Team(gu->myTeam)->energy/gs->Team(gu->myTeam)->energyStorage)*energybarlen; glEnable(GL_TEXTURE_2D); glColor4f(1,1,1,0.8f); font->glPrintAt(energyx,energyy+.005f,0.7f,""); glDisable(GL_TEXTURE_2D); //energy draw glColor4f(0.8f,0.8f,0.2f,0.2f); glBegin(GL_QUADS); glVertex2f(x1, y1); glVertex2f(x1, y2); glVertex2f(x2, y2); glVertex2f(x2, y1); glEnd(); glColor4f(1.0f,1.0f,0.2f,1.0f); glBegin(GL_QUADS); glVertex2f(x1, y1); glVertex2f(x1, y2); glVertex2f(x1+x, y2); glVertex2f(x1+x, y1); glEnd(); x=gs->Team(gu->myTeam)->energyShare*energybarlen; glColor4f(0.9f,0.2f,0.2f,0.7f); glBegin(GL_QUADS); glVertex2f(x1+x+0.003, y1-0.003); glVertex2f(x1+x+0.003, y2+0.003); glVertex2f(x1+x-0.003, y2+0.003); glVertex2f(x1+x-0.003, y1-0.003); glEnd(); glEnable(GL_TEXTURE_2D); glColor4f(1,1,0.4,0.8f); font->glPrintAt(energyx-0.018,energyy+.005f,0.7f,"Energy"); glColor4f(1,1,1,0.8f); font->glPrintAt(energybarx2-.01f,energyy,0.5,"%s",FloatToSmallString(gs->Team(gu->myTeam)->energyStorage).c_str()); font->glPrintAt(energybarx1+energybarlen/2.0,energyy/*+.02f*/,0.5,"%s",FloatToSmallString(gs->Team(gu->myTeam)->energy).c_str()); glColor4f(1.0f,.4f,.4f,1.0f); // Expenses font->glPrintAt(energyx+.044f,energyy-0.002f,0.5,"-%s(-%s)",FloatToSmallString(fabs(gs->Team(gu->myTeam)->oldEnergyExpense)).c_str(),FloatToSmallString(fabs(gs->Team(gu->myTeam)->oldEnergyUpkeep)).c_str()); glColor4f(.6f,1.0f,.6f,.95f); // Income font->glPrintAt(energyx+.044f,energyy+.01f,0.5,"+%s",FloatToSmallString(gs->Team(gu->myTeam)->oldEnergyIncome).c_str()); glDisable(GL_TEXTURE_2D); glLoadIdentity(); }
void CEndGameBox::Draw() { if (disabled) { return; } float mx=MouseX(mouse->lastx); float my=MouseY(mouse->lasty); glDisable(GL_TEXTURE_2D); glEnable(GL_BLEND); glDisable(GL_ALPHA_TEST); // Large Box glColor4f(0.2f,0.2f,0.2f,guiAlpha); DrawBox(box); glColor4f(0.2f,0.2f,0.7f,guiAlpha); if(dispMode==0){ DrawBox(box+playerBox); } else if(dispMode==1){ DrawBox(box+sumBox); } else { DrawBox(box+difBox); } if(InBox(mx,my,box+exitBox)){ glColor4f(0.7f,0.2f,0.2f,guiAlpha); DrawBox(box+exitBox); } if(InBox(mx,my,box+playerBox)){ glColor4f(0.7f,0.2f,0.2f,guiAlpha); DrawBox(box+playerBox); } if(InBox(mx,my,box+sumBox)){ glColor4f(0.7f,0.2f,0.2f,guiAlpha); DrawBox(box+sumBox); } if(InBox(mx,my,box+difBox)){ glColor4f(0.7f,0.2f,0.2f,guiAlpha); DrawBox(box+difBox); } glEnable(GL_TEXTURE_2D); glColor4f(1,1,1,0.8f); font->glPrintAt(box.x1+exitBox.x1+0.025f,box.y1+exitBox.y1+0.005f,1,"Exit"); font->glPrintAt(box.x1+playerBox.x1+0.015f,box.y1+playerBox.y1+0.005f,0.7f,"Player stats"); font->glPrintAt(box.x1+sumBox.x1+0.015f,box.y1+sumBox.y1+0.005f,0.7f,"Team stats"); font->glPrintAt(box.x1+difBox.x1+0.015f,box.y1+difBox.y1+0.005f,0.7f,"Team delta stats"); if(gs->Team(gu->myTeam)->isDead){ font->glPrintAt(box.x1+0.25f,box.y1+0.65f,1,"You lost the game"); } else { font->glPrintAt(box.x1+0.25f,box.y1+0.65f,1,"You won the game"); } if(dispMode==0){ float xpos=0.01f; string headers[]={"Name","MC/m","MP/m","KP/m","Cmds/m","ACS"}; for(int a=0;a<6;++a){ font->glPrintAt(box.x1+xpos,box.y1+0.55f,0.8f,headers[a].c_str()); xpos+=0.1f; } float ypos=0.5f; for(int a=0;a<gs->activePlayers;++a){ if(gs->players[a]->currentStats->mousePixels==0) continue; char values[6][100]; sprintf(values[0],"%s", gs->players[a]->playerName.c_str()); sprintf(values[1],"%i",(int)(gs->players[a]->currentStats->mouseClicks*60/game->totalGameTime)); sprintf(values[2],"%i",(int)(gs->players[a]->currentStats->mousePixels*60/game->totalGameTime)); sprintf(values[3],"%i",(int)(gs->players[a]->currentStats->keyPresses*60/game->totalGameTime)); sprintf(values[4],"%i",(int)(gs->players[a]->currentStats->numCommands*60/game->totalGameTime)); sprintf(values[5],"%i",(int) ( gs->players[a]->currentStats->numCommands != 0 ) ? ( gs->players[a]->currentStats->unitCommands/gs->players[a]->currentStats->numCommands) : ( 0 )); float xpos=0.01f; for(int a=0;a<6;++a){ font->glPrintAt(box.x1+xpos,box.y1+ypos,0.8f,values[a]); xpos+=0.1f; } ypos-=0.02f; } } else { if(stats.empty()) FillTeamStats(); glBindTexture(GL_TEXTURE_2D, graphTex); CVertexArray* va=GetVertexArray(); va->Initialize(); va->AddVertexT(float3(box.x1+0.15f, box.y1+0.08f, 0),0,0); va->AddVertexT(float3(box.x1+0.69f, box.y1+0.08f, 0),4,0); va->AddVertexT(float3(box.x1+0.69f, box.y1+0.62f, 0),4,4); va->AddVertexT(float3(box.x1+0.15f, box.y1+0.62f, 0),0,4); va->DrawArrayT(GL_QUADS); if(mx>box.x1+0.01f && mx<box.x1+0.12f && my<box.y1+0.57f && my>box.y1+0.571f-stats.size()*0.02f){ int sel=(int)floor(-(my-box.y1-0.57f)*50); glColor4f(0.7f,0.2f,0.2f,guiAlpha); glDisable(GL_TEXTURE_2D); CVertexArray* va=GetVertexArray(); va->Initialize(); va->AddVertex0(float3(box.x1+0.01f, box.y1+0.55f-sel*0.02f , 0)); va->AddVertex0(float3(box.x1+0.01f, box.y1+0.55f-sel*0.02f+0.02f , 0)); va->AddVertex0(float3(box.x1+0.12f, box.y1+0.55f-sel*0.02f+0.02f , 0)); va->AddVertex0(float3(box.x1+0.12f, box.y1+0.55f-sel*0.02f , 0)); va->DrawArray0(GL_QUADS); glEnable(GL_TEXTURE_2D); glColor4f(1,1,1,0.8f); } float ypos=0.55f; for(int a=0;a<stats.size();++a){ font->glPrintAt(box.x1+0.01f,box.y1+ypos,0.8f,stats[a].name.c_str()); ypos-=0.02f; } float maxy=1; if(dispMode==1) maxy=std::max(stats[stat1].max,stat2!=-1?stats[stat2].max:0); else maxy=std::max(stats[stat1].maxdif,stat2!=-1?stats[stat2].maxdif:0)/CTeam::statsPeriod; int numPoints=stats[0].values[0].size(); float scalex=0.54f/max(1.0f,numPoints-1.0f); float scaley=0.54f/maxy; for (int a = 0; a < 5; ++a) { font->glPrintAt(box.x1 + 0.12f, box.y1 + 0.07f + (a * 0.135f), 0.8f, "%s", FloatToSmallString(maxy * 0.25f * a).c_str()); font->glPrintAt(box.x1 + 0.135f + (a * 0.135f), box.y1 + 0.057f, 0.8f, "%i:%2i", int(a * 0.25f * numPoints * CTeam::statsPeriod / 60), int(a * 0.25f * (numPoints - 1) * CTeam::statsPeriod) % 60); } font->glPrintAt(box.x1+0.55f,box.y1+0.65f,0.8f,"%s",stats[stat1].name.c_str()); font->glPrintAt(box.x1+0.55f,box.y1+0.63f,0.8f,"%s",stat2!=-1?stats[stat2].name.c_str():""); glDisable(GL_TEXTURE_2D); glBegin(GL_LINES); glVertex3f(box.x1+0.50f,box.y1+0.66f,0); glVertex3f(box.x1+0.55f,box.y1+0.66f,0); glEnd(); glLineStipple(3,0x5555); glEnable(GL_LINE_STIPPLE); glBegin(GL_LINES); glVertex3f(box.x1+0.50f,box.y1+0.64f,0); glVertex3f(box.x1+0.55f,box.y1+0.64f,0); glEnd(); glDisable(GL_LINE_STIPPLE); for(int team=0; team<gs->activeTeams; team++){ if (gs->Team(team)->gaia) continue; glColor4ubv(gs->Team(team)->color); glBegin(GL_LINE_STRIP); for(int a=0;a<numPoints;++a){ float value=0; if(dispMode==1) value=stats[stat1].values[team][a]; else if(a>0) value=(stats[stat1].values[team][a]-stats[stat1].values[team][a-1])/CTeam::statsPeriod; glVertex3f(box.x1+0.15f+a*scalex,box.y1+0.08f+value*scaley,0); } glEnd(); if (stat2!=-1) { glLineStipple(3,0x5555); glEnable(GL_LINE_STIPPLE); glBegin(GL_LINE_STRIP); for(int a=0;a<numPoints;++a){ float value=0; if(dispMode==1) value=stats[stat2].values[team][a]; else if(a>0) value=(stats[stat2].values[team][a]-stats[stat2].values[team][a-1])/CTeam::statsPeriod; glVertex3f(box.x1+0.15f+a*scalex,box.y1+0.08f+value*scaley,0); } glEnd(); glDisable(GL_LINE_STIPPLE); } } } }
void CResourceBar::Draw() { if (!enabled) { return; } const CTeam* myTeam = teamHandler->Team(gu->myTeam); GLfloat x1, y1, x2, y2, x; glDisable(GL_TEXTURE_2D); glEnable(GL_BLEND); glDisable(GL_ALPHA_TEST); glBegin(GL_QUADS); // Box glColor4f(0.2f,0.2f,0.2f,guiAlpha); glVertex2f(box.x1, box.y1); glVertex2f(box.x1, box.y2); glVertex2f(box.x2, box.y2); glVertex2f(box.x2, box.y1); //layout metal in box GLfloat metalx = box.x1 + .01f; GLfloat metaly = box.y1 + .004f; GLfloat metalbarx1 = metalx + .08f; GLfloat metalbarx2 = box.x1 + (box.x2 - box.x1) / 2.0f - .03f; // metal layout GLfloat metalbarlen = metalbarx2-metalbarx1; x1 = metalbarx1; y1 = metaly + .014f; x2 = metalbarx2; y2 = metaly + .020f; x = (1.0f * myTeam->metal / myTeam->metalStorage) * metalbarlen; //metal draw glColor4f(0.8f, 0.8f, 0.8f, 0.2f); glVertex2f(x1, y1); glVertex2f(x1, y2); glVertex2f(x2, y2); glVertex2f(x2, y1); glColor4f(1.0f, 1.0f, 1.0f, 1.0f); glVertex2f(x1, y1); glVertex2f(x1, y2); glVertex2f(x1 + x, y2); glVertex2f(x1 + x, y1); x = myTeam->metalShare*metalbarlen; glColor4f(0.9f, 0.2f, 0.2f, 0.7f); glVertex2f(x1 + x + 0.003f, y1 - 0.003f); glVertex2f(x1 + x + 0.003f, y2 + 0.003f); glVertex2f(x1 + x - 0.003f, y2 + 0.003f); glVertex2f(x1 + x - 0.003f, y1 - 0.003f); // Energy //layout energy in box GLfloat energyx = box.x1 + 0.4f; GLfloat energyy = box.y1 + 0.004f; GLfloat energybarx1 = energyx + 0.08f; GLfloat energybarx2 = box.x2 - 0.03f; //energy layout GLfloat energybarlen = energybarx2 - energybarx1; x1 = energybarx1; y1 = energyy + 0.014f; x2 = energybarx2; y2 = energyy + 0.020f; x = (1.0f * myTeam->energy / myTeam->energyStorage) * energybarlen; //energy draw glColor4f(0.8f, 0.8f, 0.2f, 0.2f); glVertex2f(x1, y1); glVertex2f(x1, y2); glVertex2f(x2, y2); glVertex2f(x2, y1); glColor4f(1.0f, 1.0f, 0.2f, 1.0f); glVertex2f(x1, y1); glVertex2f(x1, y2); glVertex2f(x1 + x, y2); glVertex2f(x1 + x, y1); x=myTeam->energyShare*energybarlen; glColor4f(0.9f, 0.2f, 0.2f, 0.7f); glVertex2f(x1 + x + 0.003f, y1 - 0.003f); glVertex2f(x1 + x + 0.003f, y2 + 0.003f); glVertex2f(x1 + x - 0.003f, y2 + 0.003f); glVertex2f(x1 + x - 0.003f, y1 - 0.003f); glEnd(); smallFont->Begin(); const float headerFontSize = (box.y2 - box.y1) * 0.7 * globalRendering->viewSizeY; const float labelsFontSize = (box.y2 - box.y1) * 0.5 * globalRendering->viewSizeY; const int fontOptions = (guihandler && guihandler->GetOutlineFonts()) ? FONT_OUTLINE | FONT_NORM : FONT_NORM; smallFont->SetTextColor(0.8f, 0.8f, 1, 0.8f); smallFont->glPrint(metalx - 0.004f, (box.y1 + box.y2) * 0.5, headerFontSize, FONT_VCENTER | fontOptions, "Metal"); smallFont->SetTextColor(1, 1, 0.4f, 0.8f); smallFont->glPrint(energyx - 0.018f, (box.y1 + box.y2) * 0.5, headerFontSize, FONT_VCENTER | fontOptions, "Energy"); smallFont->SetTextColor(1.0f, 0.3f, 0.3f, 1.0f); // Expenses smallFont->glFormat(metalx + 0.044f, box.y1, labelsFontSize, FONT_DESCENDER | fontOptions, "-%s(-%s)", FloatToSmallString(fabs(myTeam->prevMetalPull)).c_str(), FloatToSmallString(fabs(myTeam->metalSent)).c_str()); smallFont->glFormat(energyx + 0.044f, box.y1, labelsFontSize, FONT_DESCENDER | fontOptions, "-%s(-%s)", FloatToSmallString(fabs(myTeam->prevEnergyPull)).c_str(), FloatToSmallString(fabs(myTeam->energySent)).c_str()); smallFont->SetTextColor(0.4f, 1.0f, 0.4f, 0.95f); // Income smallFont->glFormat(metalx + 0.044f, box.y2-2*globalRendering->pixelY, labelsFontSize, FONT_ASCENDER | fontOptions, "+%s", FloatToSmallString(myTeam->prevMetalIncome).c_str()); // FloatToSmallString(myTeam->metalReceived).c_str()); smallFont->glFormat(energyx + 0.044f, box.y2-2*globalRendering->pixelY, labelsFontSize, FONT_ASCENDER | fontOptions, "+%s", FloatToSmallString(myTeam->prevEnergyIncome).c_str()); // FloatToSmallString(myTeam->energyReceived).c_str()); smallFont->SetTextColor(1, 1, 1, 0.8f); smallFont->glPrint(energybarx2 - 0.01f, energyy - 0.005f, labelsFontSize, fontOptions, FloatToSmallString(myTeam->energyStorage)); smallFont->glPrint(energybarx1 + energybarlen / 2.0f, energyy - 0.005f, labelsFontSize, fontOptions, FloatToSmallString(myTeam->energy)); smallFont->glPrint(metalbarx2 - 0.01f, metaly - 0.005f, labelsFontSize, fontOptions, FloatToSmallString(myTeam->metalStorage)); smallFont->glPrint(metalbarx1 + metalbarlen / 2.0f, metaly - 0.005f, labelsFontSize, fontOptions, FloatToSmallString(myTeam->metal)); smallFont->End(); }
void CResourceBar::Draw(void) { const float mx=float(mouse->lastx - gu->screenxPos) / gu->screenx; const float my=(gu->screeny - float(mouse->lasty)) / gu->screeny; const CTeam* myTeam = gs->Team(gu->myTeam); GLfloat x1,y1,x2,y2,x; // Box glDisable(GL_TEXTURE_2D); glEnable(GL_BLEND); glDisable(GL_ALPHA_TEST); glColor4f(0.2f,0.2f,0.2f,guiAlpha); glBegin(GL_QUADS); glVertex2f(box.x1, box.y1); glVertex2f(box.x1, box.y2); glVertex2f(box.x2, box.y2); glVertex2f(box.x2, box.y1); glVertex2f(box.x1, box.y1); glEnd(); //layout metal in box GLfloat metalx = box.x1+.01f; GLfloat metaly = box.y1+.002f; GLfloat metalbarx1 = metalx+.08f; GLfloat metalbarx2 = box.x1+(box.x2-box.x1)/2.0f-.03f; // metal layout GLfloat metalbarlen = metalbarx2-metalbarx1; x1 = metalbarx1; y1 = metaly+.014f; x2 = metalbarx2; y2 = metaly+.020f; x = (1.0f * myTeam->metal / myTeam->metalStorage) * metalbarlen; glEnable(GL_TEXTURE_2D); glColor4f(1,1,1,0.8f); font->glPrintAt(metalx, metaly + 0.005f, 0.7f, ""); glDisable(GL_TEXTURE_2D); //metal draw glColor4f(0.8f,0.8f,0.8f,0.2f); glBegin(GL_QUADS); glVertex2f(x1, y1); glVertex2f(x1, y2); glVertex2f(x2, y2); glVertex2f(x2, y1); glEnd(); glColor4f(1.0f,1.0f,1.0f,1.0f); glBegin(GL_QUADS); glVertex2f(x1, y1); glVertex2f(x1, y2); glVertex2f(x1+x, y2); glVertex2f(x1+x, y1); glEnd(); x = myTeam->metalShare*metalbarlen; glColor4f(0.9f,0.2f,0.2f,0.7f); glBegin(GL_QUADS); glVertex2f(x1+x+0.003f, y1-0.003f); glVertex2f(x1+x+0.003f, y2+0.003f); glVertex2f(x1+x-0.003f, y2+0.003f); glVertex2f(x1+x-0.003f, y1-0.003f); glEnd(); glEnable(GL_TEXTURE_2D); glColor4f(1,1,1,0.8f); font->glPrintAt(metalx - 0.004f, metaly + 0.005f, 0.7f, "Metal"); font->glPrintAt(metalbarx2 - 0.01f, metaly, 0.5f, "%s", FloatToSmallString(myTeam->metalStorage).c_str()); font->glPrintAt(metalbarx1 + metalbarlen / 2.0f, metaly /*+.02f*/, 0.5f, "%s", FloatToSmallString(myTeam->metal).c_str()); glColor4f(1.0f, 0.4f, 0.4f, 1.0f); // Expenses font->glPrintAt(metalx + 0.044f, metaly - 0.002f, 0.5f, "-%s(-%s)", FloatToSmallString(fabs(myTeam->prevMetalPull)).c_str(), FloatToSmallString(fabs(myTeam->metalSent)).c_str()); glColor4f(0.6f, 1.0f, 0.6f, 0.95f); // Income font->glPrintAt(metalx + 0.044f, metaly + 0.01f, 0.5f, "+%s", FloatToSmallString(myTeam->prevMetalIncome).c_str()); // FloatToSmallString(myTeam->metalReceived).c_str()); // Energy glDisable(GL_TEXTURE_2D); //layout energy in box GLfloat energyx = box.x1 + 0.4f; GLfloat energyy = box.y1 + 0.002f; GLfloat energybarx1 = energyx + 0.08f; GLfloat energybarx2 = box.x2 - 0.03f; //energy layout GLfloat energybarlen = energybarx2-energybarx1; x1 = energybarx1; y1 = energyy + 0.014f; x2 = energybarx2; y2 = energyy + 0.020f; x = (1.0f * myTeam->energy / myTeam->energyStorage) * energybarlen; glEnable(GL_TEXTURE_2D); glColor4f(1,1,1,0.8f); font->glPrintAt(energyx, energyy + 0.005f, 0.7f, ""); glDisable(GL_TEXTURE_2D); //energy draw glColor4f(0.8f,0.8f,0.2f,0.2f); glBegin(GL_QUADS); glVertex2f(x1, y1); glVertex2f(x1, y2); glVertex2f(x2, y2); glVertex2f(x2, y1); glEnd(); glColor4f(1.0f,1.0f,0.2f,1.0f); glBegin(GL_QUADS); glVertex2f(x1, y1); glVertex2f(x1, y2); glVertex2f(x1+x, y2); glVertex2f(x1+x, y1); glEnd(); x=myTeam->energyShare*energybarlen; glColor4f(0.9f,0.2f,0.2f,0.7f); glBegin(GL_QUADS); glVertex2f(x1+x+0.003f, y1-0.003f); glVertex2f(x1+x+0.003f, y2+0.003f); glVertex2f(x1+x-0.003f, y2+0.003f); glVertex2f(x1+x-0.003f, y1-0.003f); glEnd(); glEnable(GL_TEXTURE_2D); glColor4f(1,1,0.4f,0.8f); font->glPrintAt(energyx - 0.018f, energyy + 0.005f, 0.7f, "Energy"); glColor4f(1,1,1,0.8f); font->glPrintAt(energybarx2 - .001f, energyy, 0.5f, "%s", FloatToSmallString(myTeam->energyStorage).c_str()); font->glPrintAt(energybarx1 + energybarlen / 2.0f, energyy /*+.02f*/, 0.5f, "%s", FloatToSmallString(myTeam->energy).c_str()); glColor4f(1.0f,.4f,.4f,1.0f); // Expenses font->glPrintAt(energyx + 0.044f, energyy - 0.002f, 0.5f, "-%s(-%s)", FloatToSmallString(fabs(myTeam->prevEnergyPull)).c_str(), FloatToSmallString(fabs(myTeam->energySent)).c_str()); glColor4f(.6f,1.0f,.6f,.95f); // Income font->glPrintAt(energyx + 0.044f, energyy + 0.01f, 0.5f, "+%s", FloatToSmallString(myTeam->prevEnergyIncome).c_str()); // FloatToSmallString(myTeam->energyReceived).c_str()); glDisable(GL_TEXTURE_2D); glLoadIdentity(); }