- in team mode always render two set of resources:

- First set of resources is the team of selected units
  - SEcond set of resources is the team total
This commit is contained in:
SoftCoder 2014-01-29 22:47:55 -08:00
parent ce375073c1
commit b4807ed169
3 changed files with 171 additions and 113 deletions

View File

@ -2334,12 +2334,24 @@ void Renderer::renderClock() {
}
}
bool Renderer::renderResourcesInTeamMode() {
bool result = false;
if(game != NULL && game->getGui() != NULL) {
if(game->isFlagType1BitEnabled(ft1_allow_shared_team_units) == true ||
game->isFlagType1BitEnabled(ft1_allow_shared_team_resources) == true) {
result = true;
}
}
return result;
}
void Renderer::renderResourceStatus() {
if(GlobalStaticFlags::getIsNonGraphicalModeEnabled() == true) {
return;
}
const Metrics &metrics = Metrics::getInstance();
const World *world = game->getWorld();
if(world->getThisFactionIndex() < 0 ||
@ -2348,11 +2360,11 @@ void Renderer::renderResourceStatus() {
}
const Faction *thisFaction = world->getFaction(world->getThisFactionIndex());
const Vec4f fontColor = game->getGui()->getDisplay()->getColor();
assertGl();
assertGl();
glPushAttrib(GL_ENABLE_BIT);
int rowsRendered = 0;
int resourceCountRendered = 0;
for(int techTreeResourceTypeIndex = 0;
techTreeResourceTypeIndex < world->getTechTree()->getResourceTypeCount();
@ -2367,10 +2379,7 @@ void Renderer::renderResourceStatus() {
const Faction *factionForResourceView = thisFaction;
bool localFactionResourcesOnly = false;
if(game != NULL && game->getGui() != NULL) {
if(game->isFlagType1BitEnabled(ft1_allow_shared_team_units) == true ||
game->isFlagType1BitEnabled(ft1_allow_shared_team_resources) == true) {
if(renderResourcesInTeamMode() == true) {
const Gui *gui = game->getGui();
if(gui != NULL) {
@ -2379,30 +2388,80 @@ void Renderer::renderResourceStatus() {
if(selection != NULL && selection->getCount() > 0 && selection->getFrontUnit() != NULL) {
const Unit *selectedUnit = selection->getFrontUnit();
if(selectedUnit != NULL && selectedUnit->getType()->hasSkillClass(scBeBuilt) == true) {
if(selectedUnit->getFactionIndex() == thisFaction->getIndex() ||
selectedUnit->getFaction()->isAlly(thisFaction) == true) {
// if(selectedUnit != NULL && selectedUnit->getType()->hasSkillClass(scBeBuilt) == true) {
//
// if(selectedUnit->getFactionIndex() == thisFaction->getIndex() ||
// selectedUnit->getFaction()->isAlly(thisFaction) == true) {
//
// factionForResourceView = selectedUnit->getFaction();
// localFactionResourcesOnly = true;
// }
// }
if(selectedUnit != NULL && selectedUnit->getFaction()->isAlly(thisFaction) == true) {
factionForResourceView = selectedUnit->getFaction();
localFactionResourcesOnly = true;
}
}
else {
factionForResourceView = thisFaction;
localFactionResourcesOnly = true;
}
}
}
}
//if any unit produces the resource
bool showResource = world->showResourceTypeForFaction(rt, factionForResourceView, false);
if(showResource == true) {
rowsRendered = renderResource(factionForResourceView,localFactionResourcesOnly,
rt, 0, 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) {
const Metrics &metrics = Metrics::getInstance();
//draw resource status
if(showResource == true) {
if(localFactionResourcesOnly == true) {
string str = "*";
Vec4f resourceFontColor = Vec4f(factionForResourceView->getTexture()->getPixmapConst()->getPixel3f(0,0));
int resourceCol = 0;
int resourceRow = 0;
int resourceRow = startRow;
if(renderText3DEnabled == true) {
renderTextShadow3D(
@ -2423,6 +2482,7 @@ void Renderer::renderResourceStatus() {
glEnable(GL_TEXTURE_2D);
const Vec4f fontColor = game->getGui()->getDisplay()->getColor();
Vec4f resourceFontColor = fontColor;
bool isNegativeConsumableDisplayCycle = false;
@ -2455,7 +2515,7 @@ void Renderer::renderResourceStatus() {
glColor3f(1.f, 1.f, 1.f);
}
const int MAX_RESOURCES_PER_ROW = 6;
int resourceRow = (resourceCountRendered > 0 ? resourceCountRendered / MAX_RESOURCES_PER_ROW : 0);
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());
@ -2486,12 +2546,8 @@ void Renderer::renderResourceStatus() {
resourceCol * 100 + 220, metrics.getVirtualH()-30 - (30 * resourceRow), false);
}
++resourceCountRendered;
}
}
glPopAttrib();
assertGl();
return resourceRow;
}
void Renderer::renderSelectionQuad() {

View File

@ -694,6 +694,12 @@ private:
void render2dMenuSetup();
void render3dSetup();
void render3dMenuSetup(const MainMenu *mm);
bool renderResourcesInTeamMode();
int renderResource(const Faction *factionForResourceView,
bool localFactionResourcesOnly, const ResourceType *rt,
int startRow, int &resourceCountRendered);
};
}} //end namespace

View File

@ -1044,11 +1044,7 @@ void ServerInterface::checkForCompletedClientsUsingLoop(
}
std::string ServerInterface::getIpAddress(bool mutexLock) {
string result = "";
//MutexSafeWrapper safeMutexSlot((mutexLock == true ? mutexSocket : NULL),CODE_AT_LINE);
//if(serverSocket != NULL) {
result = serverSocket.getIpAddress();
//}
string result = serverSocket.getIpAddress();
return result;
}