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!
This commit is contained in:
titiger 2015-01-10 22:49:31 +01:00
parent 73063ac494
commit bceb4286f8
3 changed files with 37 additions and 24 deletions

View File

@ -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);

View File

@ -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;
}

View File

@ -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: