Add "score" tab in post-game summary. Patch from EMontana. FIxes #1721.

This was SVN commit r12914.
This commit is contained in:
Jonathan Waller 2012-12-02 15:55:06 +00:00
parent 232dee5a9c
commit a4f27dc3e0
3 changed files with 144 additions and 41 deletions

View File

@ -1,8 +1,8 @@
// Max player slots for any map (should read from config)
const MAX_SLOTS = 8;
var panelNames = [ 'unitsBuildingsPanel', 'conquestPanel', 'resourcesPanel', 'marketPanel' ];
var panelButtonNames = [ 'unitsBuildingsPanelButton', 'conquestPanelButton', 'resourcesPanelButton', 'marketPanelButton' ];
var panelNames = [ 'scorePanel', 'unitsBuildingsPanel', 'conquestPanel', 'resourcesPanel', 'marketPanel' ];
var panelButtonNames = [ 'scorePanelButton', 'unitsBuildingsPanelButton', 'conquestPanelButton', 'resourcesPanelButton', 'marketPanelButton' ];
/**
* Select active panel
@ -86,6 +86,13 @@ function init(data)
var width = 100;
var playerNameHeadingWidth = 200;
getGUIObjectByName("playerName0Heading").size = left + " 26 " + (left + playerNameHeadingWidth) + " 100%"; left += playerNameHeadingWidth;
getGUIObjectByName("economyScoreHeading").size = left + " 16 " + (left + width) + " 100%"; left += width;
getGUIObjectByName("militaryScoreHeading").size = left + " 16 " + (left + width) + " 100%"; left += width;
getGUIObjectByName("explorationScoreHeading").size = left + " 16 " + (left + width) + " 100%"; left += width;
getGUIObjectByName("totalScoreHeading").size = left + " 16 " + (left + width) + " 100%"; left += width;
left = 50;
getGUIObjectByName("playerName1Heading").size = left + " 26 " + (left + playerNameHeadingWidth) + " 100%"; left += playerNameHeadingWidth;
getGUIObjectByName("unitsTrainedHeading").size = left + " 16 " + (left + width) + " 100%"; left += width;
getGUIObjectByName("unitsLostHeading").size = left + " 16 " + (left + width) + " 100%"; left += width;
getGUIObjectByName("enemyUnitsKilledHeading").size = left + " 16 " + (left + width) + " 100%"; left += width;
@ -94,13 +101,13 @@ function init(data)
getGUIObjectByName("enemyBuildingsDestroyedHeading").size = left + " 6 " + (left + width) + " 100%"; left += width;
left = 50;
getGUIObjectByName("playerName1Heading").size = left + " 26 " + (left + playerNameHeadingWidth) + " 100%"; left += playerNameHeadingWidth;
getGUIObjectByName("playerName2Heading").size = left + " 26 " + (left + playerNameHeadingWidth) + " 100%"; left += playerNameHeadingWidth;
getGUIObjectByName("civCentresBuiltHeading").size = left + " 16 " + (left + width) + " 100%"; left += width;
getGUIObjectByName("enemyCivCentresDestroyedHeading").size = left + " 6 " + (left + width) + " 100%"; left += width;
getGUIObjectByName("mapExplorationHeading").size = left + " 6 " + (left + width) + " 100%"; left += width;
left = 50;
getGUIObjectByName("playerName2Heading").size = left + " 26 " + (left + playerNameHeadingWidth) + " 100%"; left += playerNameHeadingWidth;
getGUIObjectByName("playerName3Heading").size = left + " 26 " + (left + playerNameHeadingWidth) + " 100%"; left += playerNameHeadingWidth;
getGUIObjectByName("resourceHeading").size = left + " 16 " + (left + width * 4) + " 100%";
getGUIObjectByName("foodGatheredHeading").size = left + " 34 " + (left + width) + " 100%"; left += width;
getGUIObjectByName("woodGatheredHeading").size = left + " 34 " + (left + width) + " 100%"; left += width;
@ -110,7 +117,7 @@ function init(data)
getGUIObjectByName("treasuresCollectedHeading").size = left + " 16 " + (left + width) + " 100%"; left += width;
left = 50;
getGUIObjectByName("playerName3Heading").size = left + " 26 " + (left + playerNameHeadingWidth) + " 100%"; left += playerNameHeadingWidth;
getGUIObjectByName("playerName4Heading").size = left + " 26 " + (left + playerNameHeadingWidth) + " 100%"; left += playerNameHeadingWidth;
getGUIObjectByName("exchangedFoodHeading").size = left + " 16 " + (left + width) + " 100%"; left += width;
getGUIObjectByName("exchangedWoodHeading").size = left + " 16 " + (left + width) + " 100%"; left += width;
getGUIObjectByName("exchangedStoneHeading").size = left + " 16 " + (left + width) + " 100%"; left += width;
@ -147,6 +154,11 @@ function init(data)
getGUIObjectByName("civIcon"+k+"["+i+"]").tooltip = civData[playerState.civ].Name;
}
var economyScore = getGUIObjectByName("economyScore["+i+"]");
var militaryScore = getGUIObjectByName("militaryScore["+i+"]");
var explorationScore = getGUIObjectByName("explorationScore["+i+"]");
var totalScore = getGUIObjectByName("totalScore["+i+"]");
var unitsTrained = getGUIObjectByName("unitsTrained["+i+"]");
var unitsLost = getGUIObjectByName("unitsLost["+i+"]");
var enemyUnitsKilled = getGUIObjectByName("enemyUnitsKilled["+i+"]");
@ -176,23 +188,32 @@ function init(data)
left = 240;
width = 100;
economyScore.size = left + " 2 " + (left + width) + " 100%"; left += width;
militaryScore.size = left + " 2 " + (left + width) + " 100%"; left += width;
explorationScore.size = left + " 2 " + (left + width) + " 100%"; left += width;
totalScore.size = left + " 2 " + (left + width) + " 100%"; left += width;
size = getGUIObjectByName("playerBox0["+i+"]").size;
size.right = left + 10;
getGUIObjectByName("playerBox0["+i+"]").size = size;
left = 240;
unitsTrained.size = left + " 2 " + (left + width) + " 100%"; left += width;
unitsLost.size = left + " 2 " + (left + width) + " 100%"; left += width;
enemyUnitsKilled.size = left + " 2 " + (left + width) + " 100%"; left += width;
buildingsConstructed.size = left + " 2 " + (left + width) + " 100%"; left += width;
buildingsLost.size = left + " 2 " + (left + width) + " 100%"; left += width;
enemyBuildingsDestroyed.size = left + " 2 " + (left + width) + " 100%"; left += width;
size = getGUIObjectByName("playerBox0["+i+"]").size;
size = getGUIObjectByName("playerBox1["+i+"]").size;
size.right = left + 10;
getGUIObjectByName("playerBox0["+i+"]").size = size;
getGUIObjectByName("playerBox1["+i+"]").size = size;
left = 240;
civCentresBuilt.size = left + " 2 " + (left + width) + " 100%"; left += width;
enemyCivCentresDestroyed.size = left + " 2 " + (left + width) + " 100%"; left += width;
mapExploration.size = left + " 2 " + (left + width) + " 100%"; left += width;
size = getGUIObjectByName("playerBox1["+i+"]").size;
size = getGUIObjectByName("playerBox2["+i+"]").size;
size.right = left + 10;
getGUIObjectByName("playerBox1["+i+"]").size = size;
getGUIObjectByName("playerBox2["+i+"]").size = size;
left = 240;
foodGathered.size = left + " 2 " + (left + width) + " 100%"; left += width;
@ -201,9 +222,9 @@ function init(data)
metalGathered.size = left + " 2 " + (left + width) + " 100%"; left += width;
vegetarianRatio.size = left + " 2 " + (left + width) + " 100%"; left += width;
treasuresCollected.size = left + " 2 " + (left + width) + " 100%"; left += width;
size = getGUIObjectByName("playerBox2["+i+"]").size;
size = getGUIObjectByName("playerBox3["+i+"]").size;
size.right = left + 10;
getGUIObjectByName("playerBox2["+i+"]").size = size;
getGUIObjectByName("playerBox3["+i+"]").size = size;
left = 240;
exchangedFood.size = left + " 2 " + (left + width) + " 100%"; left += width;
@ -212,11 +233,17 @@ function init(data)
exchangedMetal.size = left + " 2 " + (left + width) + " 100%"; left += width;
barterEfficiency.size = left + " 2 " + (left + width) + " 100%"; left += width;
tradeIncome.size = left + " 2 " + (left + width) + " 100%"; left += width;
size = getGUIObjectByName("playerBox3["+i+"]").size;
size = getGUIObjectByName("playerBox4["+i+"]").size;
size.right = left + 10;
getGUIObjectByName("playerBox3["+i+"]").size = size;
getGUIObjectByName("playerBox4["+i+"]").size = size;
// display counters
economyScore.caption = Math.round((playerState.statistics.resourcesGathered.food + playerState.statistics.resourcesGathered.wood +
playerState.statistics.resourcesGathered.stone + playerState.statistics.resourcesGathered.metal) / 10);
militaryScore.caption = Math.round((playerState.statistics.enemyUnitsKilledValue + playerState.statistics.enemyBuildingsDestroyedValue) / 10);
explorationScore.caption = playerState.statistics.percentMapExplored * 10;
totalScore.caption = Number(economyScore.caption) + Number(militaryScore.caption) + Number(explorationScore.caption);
unitsTrained.caption = playerState.statistics.unitsTrained;
unitsLost.caption = playerState.statistics.unitsLost;
enemyUnitsKilled.caption = playerState.statistics.enemyUnitsKilled;

View File

@ -57,32 +57,72 @@
<object name="tabDividerLeft" type="image" sprite="TabSpacer" size="172 120 174 122"/>
<object name="tabDividerRight" type="image" sprite="TabSpacer" size="328 120 330 122"/>
<object name="unitsBuildingsPanelButton" type="button" sprite="ForegroundTab" size="20 95 170 120">
<object name="scorePanelButton" type="button" sprite="ForegroundTab" size="20 95 170 120">
<action on="Press">selectPanel(0);</action>
<object type="text" style="TitleText" ghost="true">Score</object>
</object>
<object name="unitsBuildingsPanelButton" type="button" sprite="BackgroundTab" size="176 95 326 120">
<action on="Press">selectPanel(1);</action>
<object type="text" style="TitleText" ghost="true">Units/buildings</object>
</object>
<object name="conquestPanelButton" type="button" sprite="BackgroundTab" size="176 95 326 120">
<action on="Press">selectPanel(1);</action>
<object name="conquestPanelButton" type="button" sprite="BackgroundTab" size="332 95 480 120">
<action on="Press">selectPanel(2);</action>
<object type="text" style="TitleText" ghost="true">Conquest</object>
</object>
<object name="resourcesPanelButton" type="button" sprite="BackgroundTab" size="332 95 480 120">
<action on="Press">selectPanel(2);</action>
<object name="resourcesPanelButton" type="button" sprite="BackgroundTab" size="486 95 636 120">
<action on="Press">selectPanel(3);</action>
<object type="text" style="TitleText" ghost="true">Resources</object>
</object>
<object name="marketPanelButton" type="button" sprite="BackgroundTab" size="486 95 636 120">
<action on="Press">selectPanel(3);</action>
<object name="marketPanelButton" type="button" sprite="BackgroundTab" size="642 95 792 120">
<action on="Press">selectPanel(4);</action>
<object type="text" style="TitleText" ghost="true">Market</object>
</object>
<object name="unitsBuildingsPanel" type="image" sprite="ForegroundBody" size="20 120 100%-20 100%-58">
<object name="scorePanel" type="image" sprite="ForegroundBody" size="20 120 100%-20 100%-58">
<object size="0 0 100% 100%-50">
<object name="playerName0Heading" type="text" style="LeftTabLabelText">
Player name
</object>
<object name="economyScoreHeading" type="text" style="CenteredTabLabelText">
Economy&#10;score
</object>
<object name="militaryScoreHeading" type="text" style="CenteredTabLabelText">
Military&#10;score
</object>
<object name="explorationScoreHeading" type="text" style="CenteredTabLabelText">
Exploration&#10;score
</object>
<object name="totalScoreHeading" type="text" style="CenteredTabLabelText">
Total&#10;score
</object>
</object>
<object size="0 65 100% 100%-50">
<repeat count="8">
<object type="image" name="playerBox0[n]" size="10 0 10 30" hidden="true">
<object name="playerColourBox0[n]" type="image" size="10 4 30 24" />
<object name="playerName0[n]" type="text" style="LeftLabelText" size="40 2 208 100%" />
<object name="civIcon0[n]" type="image" size="208 0 240 32" tooltip_style="sessionToolTip"/>
<object name="economyScore[n]" type="text" style="CenteredLabelText"/>
<object name="militaryScore[n]" type="text" style="CenteredLabelText"/>
<object name="explorationScore[n]" type="text" style="CenteredLabelText"/>
<object name="totalScore[n]" type="text" style="CenteredLabelText"/>
</object>
</repeat>
</object>
</object>
<object name="unitsBuildingsPanel" type="image" sprite="ForegroundBody" size="20 120 100%-20 100%-58" hidden="true">
<object size="0 0 100% 100%-50">
<object name="playerName1Heading" type="text" style="LeftTabLabelText">
Player name
</object>
<object name="unitsTrainedHeading" type="text" style="CenteredTabLabelText">
Units&#10;trained
</object>
@ -106,10 +146,10 @@
<object size="0 65 100% 100%-50">
<repeat count="8">
<object type="image" name="playerBox0[n]" size="10 0 10 30" hidden="true">
<object name="playerColourBox0[n]" type="image" size="10 4 30 24" />
<object name="playerName0[n]" type="text" style="LeftLabelText" size="40 2 208 100%" />
<object name="civIcon0[n]" type="image" size="208 0 240 32" tooltip_style="sessionToolTip"/>
<object type="image" name="playerBox1[n]" size="10 0 10 30" hidden="true">
<object name="playerColourBox1[n]" type="image" size="10 4 30 24" />
<object name="playerName1[n]" type="text" style="LeftLabelText" size="40 2 208 100%" />
<object name="civIcon1[n]" type="image" size="208 0 240 32" tooltip_style="sessionToolTip"/>
<object name="unitsTrained[n]" type="text" style="CenteredLabelText"/>
<object name="unitsLost[n]" type="text" style="CenteredLabelText"/>
<object name="enemyUnitsKilled[n]" type="text" style="CenteredLabelText"/>
@ -124,7 +164,7 @@
<object name="conquestPanel" type="image" sprite="ForegroundBody" size="20 120 100%-20 100%-58" hidden="true">
<object size="0 0 100% 100%-50">
<object name="playerName1Heading" type="text" style="LeftTabLabelText">
<object name="playerName2Heading" type="text" style="LeftTabLabelText">
Player name
</object>
<object name="civCentresBuiltHeading" type="text" style="CenteredTabLabelText">
@ -140,10 +180,10 @@
<object size="0 65 100% 100%-50">
<repeat count="8">
<object type="image" name="playerBox1[n]" size="10 0 10 30" hidden="true">
<object name="playerColourBox1[n]" type="image" size="10 4 30 24" />
<object name="playerName1[n]" type="text" style="LeftLabelText" size="40 2 208 100%" />
<object name="civIcon1[n]" type="image" size="208 0 240 32" tooltip_style="sessionToolTip"/>
<object type="image" name="playerBox2[n]" size="10 0 10 30" hidden="true">
<object name="playerColourBox2[n]" type="image" size="10 4 30 24" />
<object name="playerName2[n]" type="text" style="LeftLabelText" size="40 2 208 100%" />
<object name="civIcon2[n]" type="image" size="208 0 240 32" tooltip_style="sessionToolTip"/>
<object name="civCentresBuilt[n]" type="text" style="CenteredLabelText"/>
<object name="enemyCivCentresDestroyed[n]" type="text" style="CenteredLabelText"/>
<object name="mapExploration[n]" type="text" style="CenteredLabelText"/>
@ -155,7 +195,7 @@
<object name="resourcesPanel" type="image" sprite="ForegroundBody" size="20 120 100%-20 100%-58" hidden="true">
<object size="0 0 100% 100%-50">
<object name="playerName2Heading" type="text" style="LeftTabLabelText">
<object name="playerName3Heading" type="text" style="LeftTabLabelText">
Player name
</object>
<object name="resourceHeading" type="text" style="CenteredTabLabelText">
@ -183,10 +223,10 @@
<object size="0 65 100% 100%-50">
<repeat count="8">
<object type="image" name="playerBox2[n]" size="10 0 10 30" hidden="true">
<object name="playerColourBox2[n]" type="image" size="10 4 30 24" />
<object name="playerName2[n]" type="text" style="LeftLabelText" size="40 2 208 100%" />
<object name="civIcon2[n]" type="image" size="208 0 240 32" tooltip_style="sessionToolTip"/>
<object type="image" name="playerBox3[n]" size="10 0 10 30" hidden="true">
<object name="playerColourBox3[n]" type="image" size="10 4 30 24" />
<object name="playerName3[n]" type="text" style="LeftLabelText" size="40 2 208 100%" />
<object name="civIcon3[n]" type="image" size="208 0 240 32" tooltip_style="sessionToolTip"/>
<object name="foodGathered[n]" type="text" style="CenteredLabelText"/>
<object name="woodGathered[n]" type="text" style="CenteredLabelText"/>
<object name="stoneGathered[n]" type="text" style="CenteredLabelText" />
@ -201,7 +241,7 @@
<object name="marketPanel" type="image" sprite="ForegroundBody" size="20 120 100%-20 100%-58" hidden="true">
<object size="0 0 100% 100%-50">
<object name="playerName3Heading" type="text" style="LeftTabLabelText">
<object name="playerName4Heading" type="text" style="LeftTabLabelText">
Player name
</object>
<object name="exchangedFoodHeading" type="text" style="CenteredTabLabelText">
@ -226,10 +266,10 @@
<object size="0 65 100% 100%-50">
<repeat count="8">
<object type="image" name="playerBox3[n]" size="10 0 10 30" hidden="true">
<object name="playerColourBox3[n]" type="image" size="10 4 30 24" />
<object name="playerName3[n]" type="text" style="LeftLabelText" size="40 2 208 100%" />
<object name="civIcon3[n]" type="image" size="208 0 240 32" tooltip_style="sessionToolTip"/>
<object type="image" name="playerBox4[n]" size="10 0 10 30" hidden="true">
<object name="playerColourBox4[n]" type="image" size="10 4 30 24" />
<object name="playerName4[n]" type="text" style="LeftLabelText" size="40 2 208 100%" />
<object name="civIcon4[n]" type="image" size="208 0 240 32" tooltip_style="sessionToolTip"/>
<object name="exchangedFood[n]" type="text" style="CenteredLabelText"/>
<object name="exchangedWood[n]" type="text" style="CenteredLabelText"/>
<object name="exchangedStone[n]" type="text" style="CenteredLabelText"/>

View File

@ -8,11 +8,15 @@ StatisticsTracker.prototype.Init = function()
// units
this.unitsTrained = 0;
this.unitsLost = 0;
this.unitsLostValue = 0;
this.enemyUnitsKilled = 0;
this.enemyUnitsKilledValue = 0;
//buildings
this.buildingsConstructed = 0;
this.buildingsLost = 0;
this.buildingsLostValue = 0;
this.enemyBuildingsDestroyed = 0;
this.enemyBuildingsDestroyedValue = 0;
// civ centres
this.civCentresBuilt = 0;
this.enemyCivCentresDestroyed = 0;
@ -28,7 +32,7 @@ StatisticsTracker.prototype.Init = function()
"food": 0,
"wood": 0,
"metal": 0,
"stone": 0,
"stone": 0
};
this.resourcesSold = {
"food": 0,
@ -51,10 +55,14 @@ StatisticsTracker.prototype.GetStatistics = function()
return {
"unitsTrained": this.unitsTrained,
"unitsLost": this.unitsLost,
"unitsLostValue": this.unitsLostValue,
"enemyUnitsKilled": this.enemyUnitsKilled,
"enemyUnitsKilledValue": this.enemyUnitsKilledValue,
"buildingsConstructed": this.buildingsConstructed,
"buildingsLost": this.buildingsLost,
"buildingsLostValue": this.buildingsLostValue,
"enemyBuildingsDestroyed": this.enemyBuildingsDestroyed,
"enemyBuildingsDestroyedValue": this.enemyBuildingsDestroyedValue,
"civCentresBuilt": this.civCentresBuilt,
"enemyCivCentresDestroyed": this.enemyCivCentresDestroyed,
"resourcesGathered": this.resourcesGathered,
@ -85,6 +93,8 @@ StatisticsTracker.prototype.IncreaseBuiltCivCentresCounter = function()
StatisticsTracker.prototype.KilledEntity = function(targetEntity)
{
var cmpTargetEntityIdentity = Engine.QueryInterface(targetEntity, IID_Identity);
var cmpCost = Engine.QueryInterface(targetEntity, IID_Cost);
var costs = cmpCost.GetResourceCosts();
if (cmpTargetEntityIdentity)
{
var cmpFoundation = Engine.QueryInterface(targetEntity, IID_Foundation);
@ -101,9 +111,21 @@ StatisticsTracker.prototype.KilledEntity = function(targetEntity)
if (cmpTargetOwnership.GetOwner() != 0)
{
if (targetIsUnit)
{
this.enemyUnitsKilled++;
for (var r in costs)
{
this.enemyUnitsKilledValue += costs[r];
}
}
if (targetIsStructure)
{
this.enemyBuildingsDestroyed++;
for (var r in costs)
{
this.enemyBuildingsDestroyedValue += costs[r];
}
}
if (targetIsCivCentre && targetIsStructure)
this.enemyCivCentresDestroyed++;
}
@ -113,6 +135,8 @@ StatisticsTracker.prototype.KilledEntity = function(targetEntity)
StatisticsTracker.prototype.LostEntity = function(lostEntity)
{
var cmpLostEntityIdentity = Engine.QueryInterface(lostEntity, IID_Identity);
var cmpCost = Engine.QueryInterface(lostEntity, IID_Cost);
var costs = cmpCost.GetResourceCosts();
if (cmpLostEntityIdentity)
{
var cmpFoundation = Engine.QueryInterface(lostEntity, IID_Foundation);
@ -123,9 +147,21 @@ StatisticsTracker.prototype.LostEntity = function(lostEntity)
var lostEntityIsUnit = cmpLostEntityIdentity.HasClass("Unit") && !lostEntityIsDomesticAnimal;
if (lostEntityIsUnit)
{
this.unitsLost++;
for (var r in costs)
{
this.unitsLostValue += costs[r];
}
}
if (lostEntityIsStructure)
{
this.buildingsLost++;
for (var r in costs)
{
this.buildingsLostValue += costs[r];
}
}
}
};