From bceb4286f84bc7133a4d4cc5d2142045f4c0d153 Mon Sep 17 00:00:00 2001 From: titiger Date: Sat, 10 Jan 2015 22:49:31 +0100 Subject: [PATCH] render only resources of selected faction When playing with shared team units but not with shared resources, only the resources of the selected faction is shown now. With shared resources all resources of the team are shown like before. Rendering ressources with two lines stays like before showing all resources in team mode! --- source/glest_game/graphics/renderer.cpp | 24 ++++++++++++------ source/glest_game/world/world.cpp | 33 +++++++++++++------------ source/glest_game/world/world.h | 4 ++- 3 files changed, 37 insertions(+), 24 deletions(-) diff --git a/source/glest_game/graphics/renderer.cpp b/source/glest_game/graphics/renderer.cpp index 9b112882..218c8465 100644 --- a/source/glest_game/graphics/renderer.cpp +++ b/source/glest_game/graphics/renderer.cpp @@ -2443,11 +2443,9 @@ void Renderer::renderResourceStatus() { continue; } - const Faction *factionForResourceView = thisFaction; - - bool showResource = world->showResourceTypeForFaction(rt, factionForResourceView, false); + bool showResource = world->showResourceTypeForTeam(rt, thisFaction->getTeam()); if(showResource == true) { - rowsRendered = renderResource(factionForResourceView, + rowsRendered = renderResource(thisFaction, false, twoRessourceLines, rt, 0, resourceCountRendered); } @@ -2472,7 +2470,13 @@ void Renderer::renderResourceStatus() { } //if any unit produces the resource - bool showResource = world->showResourceTypeForFaction(rt, factionForResourceView, false); + bool showResource; + if (twoRessourceLines) + showResource = world->showResourceTypeForTeam(rt, + factionForResourceView->getTeam()); + else + showResource = world->showResourceTypeForFaction(rt, + factionForResourceView); if(showResource == true) { renderResource(factionForResourceView, localFactionResourcesOnly, twoRessourceLines, rt, rowsRendered, resourceCountRendered); @@ -2493,7 +2497,6 @@ void Renderer::renderResourceStatus() { if(gui != NULL) { const Selection *selection = gui->getSelection(); if(selection != NULL && selection->getCount() > 0 && selection->getFrontUnit() != NULL) { - const Unit *selectedUnit = selection->getFrontUnit(); if(selectedUnit != NULL && selectedUnit->getFaction()->isAlly(thisFaction) == true) { factionForResourceView = selectedUnit->getFaction(); @@ -2510,7 +2513,14 @@ void Renderer::renderResourceStatus() { } //if any unit produces the resource - bool showResource = world->showResourceTypeForFaction(rt, factionForResourceView, false); + bool showResource; + if (twoRessourceLines) + showResource = world->showResourceTypeForTeam(rt, + factionForResourceView->getTeam()); + else + showResource = world->showResourceTypeForFaction(rt, + factionForResourceView); + if(showResource == true) { renderResource(factionForResourceView, localFactionResourcesOnly, twoRessourceLines, rt, rowsRendered, resourceCountRendered); diff --git a/source/glest_game/world/world.cpp b/source/glest_game/world/world.cpp index a6e7db50..40f3b227 100644 --- a/source/glest_game/world/world.cpp +++ b/source/glest_game/world/world.cpp @@ -2721,7 +2721,23 @@ int World::getStoreAmountForTeam(const ResourceType *rt, int teamIndex) const { return teamStoreAmount; } -bool World::showResourceTypeForFaction(const ResourceType *rt, const Faction *faction,bool localFactionOnly) const { +bool World::showResourceTypeForTeam(const ResourceType *rt, int teamIndex) const { + //if any unit produces the resource + bool showResource = false; + for(int index = 0; showResource == false && index < (int)factions.size(); ++index) { + const Faction *teamFaction = factions[index]; + if(teamFaction != NULL && teamFaction->getTeam() == teamIndex) { + + if(teamFaction->hasUnitTypeWithResourceCostInCache(rt) == true) { + showResource = true; + } + } + } + return showResource; +} + + +bool World::showResourceTypeForFaction(const ResourceType *rt, const Faction *faction) const { //if any unit produces the resource bool showResource = false; for(int factionUnitTypeIndex = 0; @@ -2734,21 +2750,6 @@ bool World::showResourceTypeForFaction(const ResourceType *rt, const Faction *fa break; } } - if(localFactionOnly == false && showResource == false && - (game->isFlagType1BitEnabled(ft1_allow_shared_team_units) == true || - game->isFlagType1BitEnabled(ft1_allow_shared_team_resources) == true)) { - - for(int index = 0; showResource == false && index < (int)factions.size(); ++index) { - const Faction *teamFaction = factions[index]; - if(teamFaction != NULL && teamFaction->getTeam() == faction->getTeam()) { - - if(teamFaction->hasUnitTypeWithResourceCostInCache(rt) == true) { - showResource = true; - } - } - } - } - return showResource; } diff --git a/source/glest_game/world/world.h b/source/glest_game/world/world.h index 268fe0c2..8e8fd566 100644 --- a/source/glest_game/world/world.h +++ b/source/glest_game/world/world.h @@ -326,7 +326,9 @@ public: void initTeamResource(const ResourceType *rt,int teamIndex, int value); const Resource * getResourceForTeam(const ResourceType *rt, int teamIndex); int getStoreAmountForTeam(const ResourceType *rt, int teamIndex) const; - bool showResourceTypeForFaction(const ResourceType *rt, const Faction *faction,bool localFactionOnly) const; + bool showResourceTypeForFaction(const ResourceType *rt, const Faction *faction) const; + bool showResourceTypeForTeam(const ResourceType *rt, int teamIndex) const; + private: