different rendering of resources in teammode

This commit is contained in:
titiger 2014-12-18 00:32:44 +01:00
parent 5099f19709
commit 47c181d2ab
2 changed files with 60 additions and 51 deletions

View File

@ -2405,10 +2405,42 @@ void Renderer::renderResourceStatus() {
int rowsRendered = 0;
int resourceCountRendered = 0;
bool twoRessourceLines=false;
// If we are in team mode, lets render team totals
if(renderResourcesInTeamMode() == true) {
resourceCountRendered = 0;
for(int techTreeResourceTypeIndex = 0;
techTreeResourceTypeIndex < world->getTechTree()->getResourceTypeCount();
++techTreeResourceTypeIndex) {
const ResourceType *rt = world->getTechTree()->getResourceType(techTreeResourceTypeIndex);
if ( rt->getDisplayInHud() == false ) {
continue;
}
const Faction *factionForResourceView = thisFaction;
bool localFactionResourcesOnly = false;
bool showResource = world->showResourceTypeForFaction(rt, factionForResourceView, localFactionResourcesOnly);
if(showResource == true) {
twoRessourceLines=true;
rowsRendered = renderResource(factionForResourceView,
localFactionResourcesOnly, twoRessourceLines, rt, 0,
resourceCountRendered);
}
}
}
if(rowsRendered > 0 || resourceCountRendered > 0) {
rowsRendered++;
}
resourceCountRendered = 0;
for(int techTreeResourceTypeIndex = 0;
techTreeResourceTypeIndex < world->getTechTree()->getResourceTypeCount();
++techTreeResourceTypeIndex) {
const ResourceType *rt = world->getTechTree()->getResourceType(techTreeResourceTypeIndex);
if ( rt->getDisplayInHud() == false ) {
@ -2452,68 +2484,45 @@ void Renderer::renderResourceStatus() {
//if any unit produces the resource
bool showResource = world->showResourceTypeForFaction(rt, factionForResourceView, false);
if(showResource == true) {
rowsRendered = renderResource(factionForResourceView,localFactionResourcesOnly,
rt, 0, resourceCountRendered);
renderResource(factionForResourceView, localFactionResourcesOnly,
twoRessourceLines, rt, rowsRendered, resourceCountRendered);
}
}
// If we rendered single player resources above and we are in team mode,
// lets render team totals next
if(renderResourcesInTeamMode() == true) {
if(rowsRendered > 0 || resourceCountRendered > 0) {
rowsRendered++;
}
resourceCountRendered = 0;
for(int techTreeResourceTypeIndex = 0;
techTreeResourceTypeIndex < world->getTechTree()->getResourceTypeCount();
++techTreeResourceTypeIndex) {
const ResourceType *rt = world->getTechTree()->getResourceType(techTreeResourceTypeIndex);
if ( rt->getDisplayInHud() == false ) {
continue;
}
const Faction *factionForResourceView = thisFaction;
bool localFactionResourcesOnly = false;
bool showResource = world->showResourceTypeForFaction(rt, factionForResourceView, localFactionResourcesOnly);
if(showResource == true) {
renderResource(factionForResourceView,localFactionResourcesOnly,
rt, rowsRendered, resourceCountRendered);
}
}
}
glPopAttrib();
assertGl();
}
int Renderer::renderResource(const Faction *factionForResourceView,bool localFactionResourcesOnly,
const ResourceType *rt, int startRow, int &resourceCountRendered) {
bool twoResourceLines, const ResourceType *rt, int startRow, int &resourceCountRendered) {
const Metrics &metrics = Metrics::getInstance();
const int MAX_RESOURCES_PER_ROW = 6;
int resourceRowHeigth=30;
int resourceYStart=metrics.getVirtualH()-30;
if(twoResourceLines){
// we need to save some space
resourceYStart=metrics.getVirtualH()-22;
resourceRowHeigth=16;
}
//draw resource status
if(localFactionResourcesOnly == true) {
string str = "*";
Vec4f resourceFontColor = Vec4f(factionForResourceView->getTexture()->getPixmapConst()->getPixel3f(0,0));
int resourceCol = 0;
int resourceRow = startRow;
if(renderText3DEnabled == true) {
renderTextShadow3D(
str, CoreData::getInstance().getDisplayFontSmall3D(),
resourceFontColor,
resourceCol * 100 + 190, metrics.getVirtualH()-30 - (30 * resourceRow), false);
}
else {
renderTextShadow(
str, CoreData::getInstance().getDisplayFontSmall(),
resourceFontColor,
resourceCol * 100 + 190, metrics.getVirtualH()-30 - (30 * resourceRow), false);
}
int x=resourceCol * 100 + 190;
int y=resourceYStart - (resourceRowHeigth * resourceRow);
int h=16;
int w=8;
glColor3f(resourceFontColor.x,resourceFontColor.y,resourceFontColor.z);
glBegin(GL_TRIANGLE_STRIP);
glVertex2i(x, y+h);
glVertex2i(x, y);
glVertex2i(x+w, y+h/2);
glEnd();
}
const Resource *r = factionForResourceView->getResource(rt,localFactionResourcesOnly);
@ -2553,11 +2562,11 @@ int Renderer::renderResource(const Faction *factionForResourceView,bool localFac
if(isNegativeConsumableDisplayCycle == false) {
glColor3f(1.f, 1.f, 1.f);
}
const int MAX_RESOURCES_PER_ROW = 6;
int resourceRow = startRow + (resourceCountRendered > 0 ? resourceCountRendered / MAX_RESOURCES_PER_ROW : 0);
int resourceCol = resourceCountRendered % MAX_RESOURCES_PER_ROW;
renderQuad(resourceCol * 100 + 200, metrics.getVirtualH()-30 - (30 * resourceRow), 16, 16, rt->getImage());
renderQuad(resourceCol * 100 + 200, resourceYStart - (resourceRowHeigth * resourceRow), 16, 16, rt->getImage());
if(rt->getClass() != rcStatic) {
str+= "/" + intToStr(factionForResourceView->getStoreAmount(rt,localFactionResourcesOnly));
@ -2576,13 +2585,13 @@ int Renderer::renderResource(const Faction *factionForResourceView,bool localFac
renderTextShadow3D(
str, CoreData::getInstance().getDisplayFontSmall3D(),
resourceFontColor,
resourceCol * 100 + 220, metrics.getVirtualH()-30 - (30 * resourceRow), false);
resourceCol * 100 + 220, resourceYStart - (resourceRowHeigth * resourceRow), false);
}
else {
renderTextShadow(
str, CoreData::getInstance().getDisplayFontSmall(),
resourceFontColor,
resourceCol * 100 + 220, metrics.getVirtualH()-30 - (30 * resourceRow), false);
resourceCol * 100 + 220, resourceYStart - (resourceRowHeigth * resourceRow), false);
}
++resourceCountRendered;

View File

@ -710,7 +710,7 @@ private:
bool renderResourcesInTeamMode();
int renderResource(const Faction *factionForResourceView,
bool localFactionResourcesOnly, const ResourceType *rt,
bool localFactionResourcesOnly,bool twoResourceLines, const ResourceType *rt,
int startRow, int &resourceCountRendered);
};