Ticket #686: summary_screen_counters_teams.patch
File summary_screen_counters_teams.patch, 133.2 KB (added by , 10 years ago) |
---|
-
binaries/data/mods/public/gui/session/session.js
776 776 // Send a report on the game status to the lobby 777 777 function reportGame(extendedSimState) 778 778 { 779 //units 780 unitsClasses = [ 781 "Infantry", 782 "Worker", 783 "Female", 784 "Cavalry", 785 "Champion", 786 "Hero", 787 "Ship" 788 ]; 789 unitsCountersTypes = [ 790 "unitsTrained", 791 "unitsLost", 792 "enemyUnitsKilled" 793 ]; 794 //buildings 795 buildingsClasses = [ 796 "CivCentre", 797 "House", 798 "Economic", 799 "Outpost", 800 "Military", 801 "Fortress", 802 "Wonder" 803 ]; 804 buildingsCountersTypes = [ 805 "buildingsConstructed", 806 "buildingsLost", 807 "enemyBuildingsDestroyed" 808 ]; 809 //resources 810 resourcesTypes = [ 811 "wood", 812 "food", 813 "stone", 814 "metal" 815 ]; 816 resourcesCounterTypes = [ 817 "resourcesGathered", 818 "resourcesUsed", 819 "resourcesSold", 820 "resourcesBought" 821 ]; 822 779 823 if (!Engine.HasXmppClient()) 780 824 return; 781 825 782 // Resources gathered and used 783 var playerFoodGatheredString = ""; 784 var playerWoodGatheredString = ""; 785 var playerStoneGatheredString = ""; 786 var playerMetalGatheredString = ""; 787 var playerFoodUsedString = ""; 788 var playerWoodUsedString = ""; 789 var playerStoneUsedString = ""; 790 var playerMetalUsedString = ""; 791 // Resources exchanged 792 var playerFoodBoughtString = ""; 793 var playerWoodBoughtString = ""; 794 var playerStoneBoughtString = ""; 795 var playerMetalBoughtString = ""; 796 var playerFoodSoldString = ""; 797 var playerWoodSoldString = ""; 798 var playerStoneSoldString = ""; 799 var playerMetalSoldString = ""; 800 var playerTradeIncomeString = ""; 826 var playerStatistics; 827 801 828 // Unit Stats 802 var playerUnitsLostString = ""; 803 var playerUnitsTrainedString = ""; 804 var playerEnemyUnitsKilledString = ""; 829 for each (var unitCounterType in unitsCountersTypes) 830 for each (var unitsClass in unitsClasses) 831 playerStatistics[unitCounterType][unitsClass] = ""; 832 833 playerStatistics.unitsLostValue = ""; 834 playerStatistics.unitsKilledValue = ""; 805 835 // Building stats 806 var playerBuildingsConstructedString = ""; 807 var playerBuildingsLostString = ""; 808 var playerEnemyBuildingsDestroyedString = ""; 809 var playerCivCentersBuiltString = ""; 810 var playerEnemyCivCentersDestroyedString = ""; 836 for each (var buildingCounterType in buildingsCountersTypes) 837 for each (var buildingsClass in buildingsClasses) 838 playerStatistics[buildingCounterType][buildingsClass] = ""; 839 840 playerStatistics.buildingsLostValue = ""; 841 playerStatistics.enemyBuildingsDestroyedValue = ""; 842 // Resources 843 for each (var resourcesCounterType in resourcesCounterTypes) 844 for each (var resourcesType in resourcesTypes) 845 playerStatistics[resourcesCounterType][resourcesType] = ""; 846 playerStatistics.resourcesGathered.vegetarianFood = ""; 847 848 playerStatistics.tradeIncome = ""; 811 849 // Tribute 812 var playerTributeSentString= "";813 var playerTributeReceivedString= "";850 playerStatistics.tributesSent = ""; 851 playerStatistics.tributesReceived = ""; 814 852 // Various 853 playerStatistics.treasuresCollected = ""; 854 playerStatistics.feminisation = ""; 855 playerStatistics.percentMapExplored = ""; 815 856 var mapName = Engine.GetMapSettings().Name; 816 var playerStatesString = ""; 817 var playerCivsString = ""; 818 var playerPercentMapExploredString = ""; 819 var playerTreasuresCollectedString = ""; 857 var playerStates = ""; 858 var playerCivs = ""; 820 859 821 860 // Serialize the statistics for each player into a comma-separated list. 822 861 for each (var player in extendedSimState.players) 823 862 { 824 playerStatesString += player.state + ","; 825 playerCivsString += player.civ + ","; 826 playerFoodGatheredString += player.statistics.resourcesGathered.food + ","; 827 playerWoodGatheredString += player.statistics.resourcesGathered.wood + ","; 828 playerStoneGatheredString += player.statistics.resourcesGathered.stone + ","; 829 playerMetalGatheredString += player.statistics.resourcesGathered.metal + ","; 830 playerFoodUsedString += player.statistics.resourcesUsed.food + ","; 831 playerWoodUsedString += player.statistics.resourcesUsed.wood + ","; 832 playerStoneUsedString += player.statistics.resourcesUsed.stone + ","; 833 playerMetalUsedString += player.statistics.resourcesUsed.metal + ","; 834 playerUnitsLostString += player.statistics.unitsLost + ","; 835 playerUnitsTrainedString += player.statistics.unitsTrained + ","; 836 playerEnemyUnitsKilledString += player.statistics.enemyUnitsKilled + ","; 837 playerBuildingsConstructedString += player.statistics.buildingsConstructed + ","; 838 playerBuildingsLostString += player.statistics.buildingsLost + ","; 839 playerEnemyBuildingsDestroyedString += player.statistics.enemyBuildingsDestroyed + ","; 840 playerFoodBoughtString += player.statistics.resourcesBought.food + ","; 841 playerWoodBoughtString += player.statistics.resourcesBought.wood + ","; 842 playerStoneBoughtString += player.statistics.resourcesBought.stone + ","; 843 playerMetalBoughtString += player.statistics.resourcesBought.metal + ","; 844 playerFoodSoldString += player.statistics.resourcesSold.food + ","; 845 playerWoodSoldString += player.statistics.resourcesSold.wood + ","; 846 playerStoneSoldString += player.statistics.resourcesSold.stone + ","; 847 playerMetalSoldString += player.statistics.resourcesSold.metal + ","; 848 playerTributeSentString += player.statistics.tributesSent + ","; 849 playerTributeReceivedString += player.statistics.tributesReceived + ","; 850 playerPercentMapExploredString += player.statistics.precentMapExplored = ","; 851 playerCivCentersBuiltString += player.statistics.civCentresBuilt + ","; 852 playerEnemyCivCentersDestroyedString += player.statistics.enemyCivCentresDestroyed + ","; 853 playerTreasuresCollectedString += player.statistics.treasuresCollected + ","; 854 playerTradeIncomeString += player.statistics.tradeIncome + ","; 863 playerStates += player.state + ","; 864 playerCivs += player.civ + ","; 865 for each (var resourcesCounterType in resourcesCounterTypes) 866 for each (var resourcesType in resourcesTypes) 867 playerStatistics[resourcesCounterType][resourcesType] += player.statistics[resourcesCounterType][resourcesType] + ","; 868 playerStatistics.resourcesGathered.vegetarianFood += player.statistics.resourcesGathered.vegetarianFood + ","; 869 870 for each (var unitCounterType in unitsCountersTypes) 871 for each (var unitsClass in unitsClasses) 872 playerStatistics[unitCounterType][unitsClass] += player.statistics[unitCounterType][unitsClass] + ","; 873 874 for each (var buildingCounterType in buildingsCountersTypes) 875 for each (var buildingsClass in buildingsClasses) 876 playerStatistics[buildingCounterType][buildingsClass] += player.statistics[buildingCounterType][buildingsClass] + ","; 877 878 playerStatistics.tradeIncome += player.statistics.tradeIncome + ","; 879 playerStatistics.tributesSent += player.statistics.tributesSent + ","; 880 playerStatistics.tributesReceived += player.statistics.tributesReceived + ","; 881 playerStatistics.percentMapExplored += player.statistics.precentMapExplored + ","; 882 playerStatistics.treasuresCollected += player.statistics.treasuresCollected + ","; 855 883 } 856 884 857 885 // Send the report with serialized data 858 Engine.SendGameReport({ 859 "timeElapsed" : extendedSimState.timeElapsed, 860 "playerStates" : playerStatesString, 861 "playerID": Engine.GetPlayerID(), 862 "matchID": g_MatchID, 863 "civs" : playerCivsString, 864 "mapName" : mapName, 865 "foodGathered": playerFoodGatheredString, 866 "woodGathered": playerWoodGatheredString, 867 "stoneGathered": playerStoneGatheredString, 868 "metalGathered": playerMetalGatheredString, 869 "foodUsed": playerFoodUsedString, 870 "woodUsed": playerWoodUsedString, 871 "stoneUsed": playerStoneUsedString, 872 "metalUsed": playerMetalUsedString, 873 "unitsLost": playerUnitsLostString, 874 "unitsTrained": playerUnitsTrainedString, 875 "enemyUnitsKilled": playerEnemyUnitsKilledString, 876 "buildingsLost": playerBuildingsLostString, 877 "buildingsConstructed": playerBuildingsConstructedString, 878 "enemyBuildingsDestroyed": playerEnemyBuildingsDestroyedString, 879 "foodBought": playerFoodBoughtString, 880 "woodBought": playerWoodBoughtString, 881 "stoneBought": playerStoneBoughtString, 882 "metalBought": playerMetalBoughtString, 883 "foodSold": playerFoodSoldString, 884 "woodSold": playerWoodSoldString, 885 "stoneSold": playerStoneSoldString, 886 "metalSold": playerMetalSoldString, 887 "tributeSent": playerTributeSentString, 888 "tributeReceived": playerTributeReceivedString, 889 "precentMapExplored": playerPercentMapExploredString, 890 "civCentersBuilt": playerCivCentersBuiltString, 891 "enemyCivCentersDestroyed": playerEnemyCivCentersDestroyedString, 892 "treasuresCollected": playerTreasuresCollectedString, 893 "tradeIncome": playerTradeIncomeString 894 }); 886 var reportObject = { }; 887 reportObject.timeElapsed = extendedSimState.timeElapsed; 888 reportObject.playerStates = playerStates; 889 reportObject.playerID = Engine.GetPlayerID(); 890 reportObject.matchID = g_MatchID; 891 reportObject.civs = playerCivs; 892 reportObject.mapName = mapName; 893 for each (var rct in resourcesCounterTypes) 894 for each (var rt in resourcesTypes) 895 reportObject[rt+rct.substr(9)] = playerStatistics[rct][rt]; 896 //eg. rt = food rct.substr = Gathered rct = resourcesGathered 897 reportObject.resourcesGathered.vegetarianFood = playerStatistics.resourcesGathered.vegetarianFood; 898 for each (var type in unitsClasses) 899 reportObject[(type.substr(0,1)).toLowerCase()+type.substr(1)+"UnitsTrained"] = playerStatistics.unitsTrained[type]; 900 //eg. type = Infantry (type.substr(0,1)).toLowerCase()+type.substr(1) = infantry 901 for each (var type in unitsClasses) 902 reportObject[(type.substr(0,1)).toLowerCase()+type.substr(1)+"UnitsLost"] = playerStatistics.unitsLost[type]; 903 for each (var type in unitsClasses) 904 reportObject["enemy"+type+"UnitsKilled"] = playerStatistics.enemyUnitsKilled[type]; 905 for each (var type in buildingsClasses) 906 reportObject[(type.substr(0,1)).toLowerCase()+type.substr(1)+"BuildingsConstructed"] = playerStatistics.buildingsConstructed[type]; 907 for each (var type in buildingsClasses) 908 reportObject[(type.substr(0,1)).toLowerCase()+type.substr(1)+"BuildingsLost"] = playerStatistics.buildingsLost[type]; 909 for each (var type in buildingsClasses) 910 reportObject["enemy"+type+"BuildingsDestroyed"] = playerStatistics.enemyBuildingsDestroyed[type]; 911 reportObject.tributesSent = playerStatistics.tributesSent; 912 reportObject.tributesReceived = playerStatistics.tributesReceived; 913 reportObject.precentMapExplored = playerStatistics.percentMapExplored; 914 reportObject.treasuresCollected = playerStatistics.treasuresCollected; 915 reportObject.tradeIncome = playerStatistics.tradeIncome; 916 917 Engine.SendGameReport(reportObject); 895 918 } -
binaries/data/mods/public/gui/summary/summary.js
1 1 // Max player slots for any map (should read from config) 2 2 const MAX_SLOTS = 8; 3 3 4 var panelNames = [ 'scorePanel', 'unitsBuildingsPanel', 'conquestPanel', 'resourcesPanel', 'marketPanel' ];5 var panelButtonNames = [ 'scorePanelButton', 'unitsBuildingsPanelButton', 'conquestPanelButton', 'resourcesPanelButton', 'marketPanelButton' ];6 7 4 /** 8 5 * Select active panel 9 6 * @param panelNumber Number of panel, which should get active state (integer) … … 10 7 */ 11 8 function selectPanel(panelNumber) 12 9 { 10 var panelNames = [ 'scorePanel', 'buildingsPanel', 'unitsPanel', 'resourcesPanel', 'marketPanel', 'miscPanel' ]; 11 12 function adjustTabDividers(tabSize) 13 { 14 var leftSpacer = getGUIObjectByName("tabDividerLeft"); 15 var rightSpacer = getGUIObjectByName("tabDividerRight"); 16 leftSpacer.size = "20 " + leftSpacer.size.top + " " + (tabSize.left + 2) + " " + leftSpacer.size.bottom; 17 rightSpacer.size = (tabSize.right - 2) + " " + rightSpacer.size.top + " 100%-20 " + rightSpacer.size.bottom; 18 } 19 13 20 for (var i = 0; i < panelNames.length; i++) 14 21 { 15 22 if (i != panelNumber) 16 23 { 17 24 getGUIObjectByName(panelNames[i]).hidden = true; 18 getGUIObjectByName(panel ButtonNames[i]).sprite = "BackgroundTab";25 getGUIObjectByName(panelNames[i] + 'Button').sprite = "BackgroundTab"; 19 26 } 20 27 else 21 28 { 22 29 getGUIObjectByName(panelNames[i]).hidden = false; 23 getGUIObjectByName(panel ButtonNames[i]).sprite = "ForegroundTab";24 adjustTabDividers(getGUIObjectByName(panel ButtonNames[i]).size);30 getGUIObjectByName(panelNames[i] + 'Button').sprite = "ForegroundTab"; 31 adjustTabDividers(getGUIObjectByName(panelNames[i] + 'Button').size); 25 32 } 26 33 } 27 34 } 28 35 29 function adjustTabDividers(tabSize)36 function init(data) 30 37 { 31 var leftSpacer = getGUIObjectByName("tabDividerLeft"); 32 var rightSpacer = getGUIObjectByName("tabDividerRight"); 33 leftSpacer.size = "20 " + leftSpacer.size.top + " " + (tabSize.left + 2) + " " + leftSpacer.size.bottom; 34 rightSpacer.size = (tabSize.right - 2) + " " + rightSpacer.size.top + " 100%-20 " + rightSpacer.size.bottom; 35 } 38 // LOCAL CONSTS, VARIABLES & FUNCTIONS 39 //const for filtering long collective headings 40 const LONG_HEADING_WIDTH = 250; 41 //number of panels 42 const PANELS_COUNT = 6; 43 //alpha for player box 44 const PLAYER_BOX_ALPHA = " 32"; 45 //alpha for player colour box 46 const PLAYER_COLOUR_BOX_ALPHA = " 255"; 47 //yStart value for spaceing teams boxes (and noTeamsBox) 48 const TEAMS_BOX_Y_START = 65; 49 //vertical size of player box 50 const PLAYER_BOX_Y_SIZE = 30; 51 //gap between players boxes 52 const PLAYER_BOX_GAP = 2; 53 54 // colours used for units and buildings 55 const TRAINED_COLOR = '[color="201 255 200"]'; 56 const LOST_COLOR = '[color="255 213 213"]'; 57 const KILLED_COLOR = '[color="196 198 255"]'; 36 58 37 function init(data) 38 { 59 // colours used for gathered and traded resources 60 const INCOME_COLOR = '[color="201 255 200"]'; 61 const OUTCOME_COLOR = '[color="255 213 213"]'; 62 63 const BUILDINGS_TYPES = [ "total", "House", "Economic", "Outpost", "Military", "Fortress", "CivCentre", "Wonder" ]; 64 const UNITS_TYPES = [ "total", "Infantry", "Worker", "Cavalry", "Champion", "Hero", "Ship" ]; 65 const RESOURCES_TYPES = [ "food", "wood", "stone", "metal" ]; 66 67 var panels = { 68 "score": { // score panel 69 "headings": { // headings on score panel 70 "playerName0Heading": { "yStart": 26, "width": 200 }, 71 "economyScoreHeading": { "yStart": 16, "width": 100 }, 72 "militaryScoreHeading": { "yStart": 16, "width": 100 }, 73 "explorationScoreHeading": { "yStart": 16, "width": 100 }, 74 "totalScoreHeading": { "yStart": 16, "width": 100 } 75 }, 76 "counters": { // counters on score panel 77 "economyScore": {"width": 100, "objects": [ ], "teamsScores": [ ], "teamsScoresCaption": [ ] }, 78 "militaryScore": {"width": 100, "objects": [ ], "teamsScores": [ ], "teamsScoresCaption": [ ] }, 79 "explorationScore": {"width": 100, "objects": [ ], "teamsScores": [ ], "teamsScoresCaption": [ ] }, 80 "totalScore": {"width": 100, "objects": [ ], "teamsScores": [ ], "teamsScoresCaption": [ ] } 81 } 82 }, 83 "buildings": { // buildings panel 84 "headings": { // headings on buildings panel 85 "playerName1Heading": {"yStart": 26, "width": 200 }, 86 "buildingsHeading": {"yStart": 16, "width": (85 * 7 + 105) }, //width = 735 87 "totalBuildingsHeading": {"yStart": 34, "width": 105 }, 88 "houseBuildingsHeading": {"yStart": 34, "width": 85 }, 89 "economicBuildingsHeading": {"yStart": 34, "width": 85 }, 90 "outpostBuildingsHeading": {"yStart": 34, "width": 85 }, 91 "militaryBuildingsHeading": {"yStart": 34, "width": 85 }, 92 "fortressBuildingsHeading": {"yStart": 34, "width": 85 }, 93 "civCentreBuildingsHeading": {"yStart": 34, "width": 85 }, 94 "wonderBuildingsHeading": {"yStart": 34, "width": 85 } 95 }, 96 "counters": { // counters on buildings panel 97 "totalBuildings": {"width": 105, "objects": [ ], "teamsScores": [ ], "teamsScoresCaption": [ ] }, 98 "houseBuildings": {"width": 85, "objects": [ ], "teamsScores": [ ], "teamsScoresCaption": [ ] }, 99 "economicBuildings": {"width": 85, "objects": [ ], "teamsScores": [ ], "teamsScoresCaption": [ ] }, 100 "outpostBuildings": {"width": 85, "objects": [ ], "teamsScores": [ ], "teamsScoresCaption": [ ] }, 101 "militaryBuildings": {"width": 85, "objects": [ ], "teamsScores": [ ], "teamsScoresCaption": [ ] }, 102 "fortressBuildings": {"width": 85, "objects": [ ], "teamsScores": [ ], "teamsScoresCaption": [ ] }, 103 "civCentreBuildings": {"width": 85, "objects": [ ], "teamsScores": [ ], "teamsScoresCaption": [ ] }, 104 "wonderBuildings": {"width": 85, "objects": [ ], "teamsScores": [ ], "teamsScoresCaption": [ ] } 105 } 106 }, 107 "units": { // units panel 108 "headings": { // headings on units panel 109 "playerName2Heading": {"yStart": 26, "width": 200 }, 110 "unitsHeading": {"yStart": 16, "width": (100 * 6 + 120) }, //width = 720 111 "totalUnitsHeading": {"yStart": 34, "width": 120 }, 112 "infantryUnitsHeading": {"yStart": 34, "width": 100 }, 113 "workerUnitsHeading": {"yStart": 34, "width": 100 }, 114 "cavalryUnitsHeading": {"yStart": 34, "width": 100 }, 115 "championUnitsHeading": {"yStart": 34, "width": 100 }, 116 "heroesUnitsHeading": {"yStart": 34, "width": 100 }, 117 "navyUnitsHeading": {"yStart": 34, "width": 100 } 118 }, 119 "counters": { // counters on units panel 120 "totalUnits": {"width": 120, "objects": [ ], "teamsScores": [ ], "teamsScoresCaption": [ ] }, 121 "infantryUnits": {"width": 100, "objects": [ ], "teamsScores": [ ], "teamsScoresCaption": [ ] }, 122 "workerUnits": {"width": 100, "objects": [ ], "teamsScores": [ ], "teamsScoresCaption": [ ] }, 123 "cavalryUnits": {"width": 100, "objects": [ ], "teamsScores": [ ], "teamsScoresCaption": [ ] }, 124 "championUnits": {"width": 100, "objects": [ ], "teamsScores": [ ], "teamsScoresCaption": [ ] }, 125 "heroesUnits": {"width": 100, "objects": [ ], "teamsScores": [ ], "teamsScoresCaption": [ ] }, 126 "navyUnits": {"width": 100, "objects": [ ], "teamsScores": [ ], "teamsScoresCaption": [ ] } 127 } 128 }, 129 "resources": { // resources panel 130 "headings": { // headings on resources panel 131 "playerName3Heading": {"yStart": 26, "width": 200 }, 132 "resourceHeading": {"yStart": 16, "width": (100 * 4 + 110) },//width = 510 133 "foodGatheredHeading": {"yStart": 34, "width": 100 }, 134 "woodGatheredHeading": {"yStart": 34, "width": 100 }, 135 "stoneGatheredHeading": {"yStart": 34, "width": 100 }, 136 "metalGatheredHeading": {"yStart": 34, "width": 100 }, 137 "totalGatheredHeading": {"yStart": 34, "width": 110 }, 138 "treasuresCollectedHeading": {"yStart": 16, "width": 100 }, 139 "resourcesTributedHeading": {"yStart": 16, "width": 121 } 140 }, 141 "counters": { // counters on resources panel 142 "foodGathered": {"width": 100, "objects": [ ], "teamsScores": [ ], "teamsScoresCaption": [ ] }, 143 "woodGathered": {"width": 100, "objects": [ ], "teamsScores": [ ], "teamsScoresCaption": [ ] }, 144 "stoneGathered": {"width": 100, "objects": [ ], "teamsScores": [ ], "teamsScoresCaption": [ ] }, 145 "metalGathered": {"width": 100, "objects": [ ], "teamsScores": [ ], "teamsScoresCaption": [ ] }, 146 "totalGathered": {"width": 110, "objects": [ ], "teamsScores": [ ], "teamsScoresCaption": [ ] }, 147 "treasuresCollected": {"width": 100, "objects": [ ], "teamsScores": [ ], "teamsScoresCaption": [ ] }, 148 "resourcesTributed": {"width": 121, "objects": [ ], "teamsScores": [ ], "teamsScoresCaption": [ ] } 149 } 150 }, 151 "market": { // market panel 152 "headings": { // headings on market panel 153 "playerName4Heading": {"yStart": 26, "width": 200 }, 154 "exchangedFoodHeading": {"yStart": 16, "width": 100 }, 155 "exchangedWoodHeading": {"yStart": 16, "width": 100 }, 156 "exchangedStoneHeading": {"yStart": 16, "width": 100 }, 157 "exchangedMetalHeading": {"yStart": 16, "width": 100 }, 158 "barterEfficiencyHeading": {"yStart": 16, "width": 100 }, 159 "tradeIncomeHeading": {"yStart": 16, "width": 100 } 160 }, 161 "counters": { // counters on market panel 162 "exchangedFood": {"width": 100, "objects": [ ], "teamsScores": [ ], "teamsScoresCaption": [ ] }, 163 "exchangedWood": {"width": 100, "objects": [ ], "teamsScores": [ ], "teamsScoresCaption": [ ] }, 164 "exchangedStone": {"width": 100, "objects": [ ], "teamsScores": [ ], "teamsScoresCaption": [ ] }, 165 "exchangedMetal": {"width": 100, "objects": [ ], "teamsScores": [ ], "teamsScoresCaption": [ ] }, 166 "barterEfficiency": {"width": 100, "objects": [ ], "teamsScores": [ ], "teamsScoresCaption": [ ] }, 167 "tradeIncome": {"width": 100, "objects": [ ], "teamsScores": [ ], "teamsScoresCaption": [ ] } 168 } 169 }, 170 "miscelanous": { // miscelanous panel 171 "headings": { // headings on miscelanous panel 172 "playerName5Heading": {"yStart": 26, "width": 200 }, 173 "vegetarianRatioHeading": {"yStart": 16, "width": 100 }, 174 "feminisationHeading": {"yStart": 26, "width": 100 }, 175 "killDeathRatioHeading": {"yStart": 16, "width": 100 }, 176 "mapExplorationHeading": {"yStart": 16, "width": 100 } 177 }, 178 "counters": { // counters on miscelanous panel 179 "vegetarianRatio": {"width": 100, "objects": [ ], "teamsScores": [ ], "teamsScoresCaption": [ ] }, 180 "feminisation": {"width": 100, "objects": [ ], "teamsScores": [ ], "teamsScoresCaption": [ ] }, 181 "killDeathRatio": {"width": 100, "objects": [ ], "teamsScores": [ ], "teamsScoresCaption": [ ] }, 182 "mapExploration": {"width": 100, "objects": [ ], "teamsScores": [ ], "teamsScoresCaption": [ ] } 183 } 184 } 185 }; 186 187 function alignHeaders(headings) 188 { 189 left = 50; 190 for (var h in headings) 191 { 192 getGUIObjectByName(h).size = left + " " + headings[h].yStart + " " + (left + headings[h].width) + " 100%"; 193 if (headings[h].width < LONG_HEADING_WIDTH) 194 left += headings[h].width; 195 } 196 } 197 198 function alignCounters(counters, player) 199 { 200 left = 240; 201 for each (var counter in counters) 202 { 203 counter.objects[player].size = left + " 2 " + (left + counter.width) + " 100%"; 204 left += counter.width; 205 } 206 207 return left; 208 } 209 210 // caption counters functions 211 function captionEconomyScore() 212 { 213 var total = 0; 214 for each (var res in playerState.statistics.resourcesGathered) 215 total += res; 216 217 return Math.round(total / 10); 218 } 219 220 function captionBuildings(object, type) 221 { 222 function captionBuildings(type) 223 { 224 return TRAINED_COLOR + playerState.statistics.buildingsConstructed[type] + '[/color] / ' 225 + LOST_COLOR + playerState.statistics.buildingsLost[type] + '[/color] / ' 226 + KILLED_COLOR + playerState.statistics.enemyBuildingsDestroyed[type] + '[/color]'; 227 } 228 229 object.caption = captionBuildings(type); 230 } 231 232 function captionUnits(object, type) 233 { 234 function captionUnits(type) 235 { 236 return TRAINED_COLOR + playerState.statistics.unitsTrained[type] + '[/color] / ' 237 + LOST_COLOR + playerState.statistics.unitsLost[type] + '[/color] / ' 238 + KILLED_COLOR + playerState.statistics.enemyUnitsKilled[type] + '[/color]'; 239 } 240 241 object.caption = captionUnits(type); 242 } 243 244 function captionResourcesGathered(object, type) 245 { 246 function captionResourcesGathered(type) 247 { 248 return INCOME_COLOR + playerState.statistics.resourcesGathered[type] + '[/color] / ' 249 + OUTCOME_COLOR + (playerState.statistics.resourcesUsed[type] - playerState.statistics.resourcesSold[type]) + '[/color]'; 250 } 251 252 object.caption = captionResourcesGathered(type); 253 } 254 255 function captionTotalResourcesGathered() 256 { 257 var totalGathered = 0; 258 var totalUsed = 0; 259 260 for each (var type in RESOURCES_TYPES) 261 { 262 totalGathered += playerState.statistics.resourcesGathered[type]; 263 totalUsed += playerState.statistics.resourcesUsed[type] - playerState.statistics.resourcesSold[type]; 264 } 265 266 return INCOME_COLOR + totalGathered + '[/color] / ' + OUTCOME_COLOR + totalUsed + '[/color]'; 267 } 268 269 function captionResourcesTributed() 270 { 271 return INCOME_COLOR + playerState.statistics.tributesSent + "[/color] / " + OUTCOME_COLOR + playerState.statistics.tributesReceived + "[/color]"; 272 } 273 274 function captionResourcesExchanged(object, type) 275 { 276 function captionResourcesExchanged(type) 277 { 278 return INCOME_COLOR + '+' + playerState.statistics.resourcesBought[type] + '[/color] ' 279 + OUTCOME_COLOR + '-' + playerState.statistics.resourcesSold[type] + '[/color]'; 280 } 281 282 object.caption = captionResourcesExchanged(type); 283 } 284 285 function captionBarterEfficiency() 286 { 287 var totalBought = 0; 288 for each (var boughtAmount in playerState.statistics.resourcesBought) 289 totalBought += boughtAmount; 290 var totalSold = 0; 291 for each (var soldAmount in playerState.statistics.resourcesSold) 292 totalSold += soldAmount; 293 294 return Math.floor(totalSold > 0 ? (totalBought / totalSold) * 100 : 0) + "%"; 295 } 296 297 function captionVegetarianRatio() 298 { 299 if (playerState.statistics.resourcesGathered.vegetarianFood && playerState.statistics.resourcesGathered.food) 300 return Math.floor((playerState.statistics.resourcesGathered.vegetarianFood / playerState.statistics.resourcesGathered.food) * 100) + "%"; 301 else 302 return 0 + "%"; 303 } 304 305 function captionFeminisation() 306 { 307 if (playerState.statistics.unitsTrained.Worker && playerState.statistics.unitsTrained.Female) 308 return Math.floor((playerState.statistics.unitsTrained.Female / playerState.statistics.unitsTrained.Worker) * 100) + "%"; 309 else 310 return 0 + "%"; 311 } 312 313 function captionKillDeathRatio() 314 { 315 if (!playerState.statistics.enemyUnitsKilled.total) 316 return "0.00"; 317 if (!playerState.statistics.unitsLost.total) // and enemyUnitsKilled.total > 0 318 return "\u221E"; 319 return Math.round((playerState.statistics.enemyUnitsKilled.total / playerState.statistics.unitsLost.total)*100)/100; 320 } 321 322 function sumTeamBuildings(counter, type) 323 { 324 function captionTeamBuildings() 325 { 326 return TRAINED_COLOR + counter.teamsScores[playerState.team].buildingsConstructed + '[/color] / ' 327 + LOST_COLOR + counter.teamsScores[playerState.team].buildingsLost + '[/color] / ' 328 + KILLED_COLOR + counter.teamsScores[playerState.team].enemyBuildingsDestroyed + '[/color]'; 329 } 330 331 if (counter.teamsScores[playerState.team] == 0) 332 { 333 counter.teamsScores[playerState.team] = { }; 334 counter.teamsScores[playerState.team].buildingsConstructed = 0; 335 counter.teamsScores[playerState.team].buildingsLost = 0; 336 counter.teamsScores[playerState.team].enemyBuildingsDestroyed = 0; 337 } 338 339 counter.teamsScores[playerState.team].buildingsConstructed += playerState.statistics.buildingsConstructed[type]; 340 counter.teamsScores[playerState.team].buildingsLost += playerState.statistics.buildingsLost[type]; 341 counter.teamsScores[playerState.team].enemyBuildingsDestroyed += playerState.statistics.enemyBuildingsDestroyed[type]; 342 343 counter.teamsScoresCaption[playerState.team] = captionTeamBuildings(); 344 } 345 346 function sumTeamUnits(counter, type) 347 { 348 function captionTeamUnits() 349 { 350 return TRAINED_COLOR + counter.teamsScores[playerState.team].unitsTrained + '[/color] / ' 351 + LOST_COLOR + counter.teamsScores[playerState.team].unitsLost + '[/color] / ' 352 + KILLED_COLOR + counter.teamsScores[playerState.team].enemyUnitsKilled + '[/color]'; 353 } 354 355 if (counter.teamsScores[playerState.team] == 0) 356 { 357 counter.teamsScores[playerState.team] = { }; 358 counter.teamsScores[playerState.team].unitsTrained = 0; 359 counter.teamsScores[playerState.team].unitsLost = 0; 360 counter.teamsScores[playerState.team].enemyUnitsKilled = 0; 361 } 362 363 counter.teamsScores[playerState.team].unitsTrained += playerState.statistics.unitsTrained[type]; 364 counter.teamsScores[playerState.team].unitsLost += playerState.statistics.unitsLost[type]; 365 counter.teamsScores[playerState.team].enemyUnitsKilled += playerState.statistics.enemyUnitsKilled[type]; 366 367 counter.teamsScoresCaption[playerState.team] = captionTeamUnits(); 368 } 369 370 function sumResourcesGathered(counter, type) 371 { 372 function captionSumResourcesGathered() 373 { 374 return INCOME_COLOR + counter.teamsScores[playerState.team].resourcesGathered + '[/color] / ' 375 + OUTCOME_COLOR + counter.teamsScores[playerState.team].resourcesUsed + '[/color]'; 376 } 377 378 if (counter.teamsScores[playerState.team] == 0) 379 { 380 counter.teamsScores[playerState.team] = { }; 381 counter.teamsScores[playerState.team].resourcesGathered = 0; 382 counter.teamsScores[playerState.team].resourcesUsed = 0; 383 } 384 385 counter.teamsScores[playerState.team].resourcesGathered += playerState.statistics.resourcesGathered[type]; 386 counter.teamsScores[playerState.team].resourcesUsed += playerState.statistics.resourcesUsed[type] - playerState.statistics.resourcesSold[type]; 387 388 counter.teamsScoresCaption[playerState.team] = captionSumResourcesGathered(); 389 } 390 391 function sumTotalResourcesGathered() 392 { 393 function captionSumTotalResourcesGathered() 394 { 395 return INCOME_COLOR + panels.resources.counters.totalGathered.teamsScores[playerState.team].resourcesGathered + '[/color] / ' 396 + OUTCOME_COLOR + panels.resources.counters.totalGathered.teamsScores[playerState.team].resourcesUsed + '[/color]'; 397 } 398 399 if (panels.resources.counters.totalGathered.teamsScores[playerState.team] == 0) 400 { 401 panels.resources.counters.totalGathered.teamsScores[playerState.team] = { }; 402 panels.resources.counters.totalGathered.teamsScores[playerState.team].resourcesGathered = 0; 403 panels.resources.counters.totalGathered.teamsScores[playerState.team].resourcesUsed = 0; 404 } 405 406 for each (var type in RESOURCES_TYPES) 407 { 408 panels.resources.counters.totalGathered.teamsScores[playerState.team].resourcesGathered += playerState.statistics.resourcesGathered[type]; 409 panels.resources.counters.totalGathered.teamsScores[playerState.team].resourcesUsed += 410 playerState.statistics.resourcesUsed[type] - playerState.statistics.resourcesSold[type]; 411 } 412 413 panels.resources.counters.totalGathered.teamsScoresCaption[playerState.team] = captionSumTotalResourcesGathered(); 414 } 415 416 function sumResourcesTributed() 417 { 418 function captionResourcesTributed() 419 { 420 return INCOME_COLOR + panels.resources.counters.resourcesTributed.teamsScores[playerState.team].tributesSent + "[/color] / " + 421 OUTCOME_COLOR + panels.resources.counters.resourcesTributed.teamsScores[playerState.team].tributesReceived + "[/color]"; 422 } 423 424 if (panels.resources.counters.resourcesTributed.teamsScores[playerState.team] == 0) 425 { 426 panels.resources.counters.resourcesTributed.teamsScores[playerState.team] = { }; 427 panels.resources.counters.resourcesTributed.teamsScores[playerState.team].tributesSent = 0; 428 panels.resources.counters.resourcesTributed.teamsScores[playerState.team].tributesReceived = 0; 429 } 430 431 panels.resources.counters.resourcesTributed.teamsScores[playerState.team].tributesSent += playerState.statistics.tributesSent; 432 panels.resources.counters.resourcesTributed.teamsScores[playerState.team].tributesReceived += playerState.statistics.tributesReceived; 433 434 panels.resources.counters.resourcesTributed.teamsScoresCaption[playerState.team] = captionResourcesTributed(); 435 } 436 437 function sumResourcesExchanged(counter, type) 438 { 439 function captionSumResourcesExchanged() 440 { 441 return INCOME_COLOR + '+' + counter.teamsScores[playerState.team].resourcesBought + '[/color] ' 442 + OUTCOME_COLOR + '-' + counter.teamsScores[playerState.team].resourcesSold + '[/color]'; 443 } 444 445 if (counter.teamsScores[playerState.team] == 0) 446 { 447 counter.teamsScores[playerState.team] = { }; 448 counter.teamsScores[playerState.team].resourcesBought = 0; 449 counter.teamsScores[playerState.team].resourcesSold = 0; 450 } 451 452 counter.teamsScores[playerState.team].resourcesBought += playerState.statistics.resourcesBought[type]; 453 counter.teamsScores[playerState.team].resourcesSold += playerState.statistics.resourcesSold[type]; 454 455 counter.teamsScoresCaption[playerState.team] = captionSumResourcesExchanged(); 456 } 457 458 function sumBarterEfficiency() 459 { 460 if (panels.market.counters.barterEfficiency.teamsScores[playerState.team] == 0) 461 { 462 panels.market.counters.barterEfficiency.teamsScores[playerState.team] = { }; 463 panels.market.counters.barterEfficiency.teamsScores[playerState.team].resourcesBought = 0; 464 panels.market.counters.barterEfficiency.teamsScores[playerState.team].resourcesSold = 0; 465 } 466 467 for each (var boughtAmount in playerState.statistics.resourcesBought) 468 panels.market.counters.barterEfficiency.teamsScores[playerState.team].resourcesBought += boughtAmount; 469 for each (var soldAmount in playerState.statistics.resourcesSold) 470 panels.market.counters.barterEfficiency.teamsScores[playerState.team].resourcesSold += soldAmount; 471 472 panels.market.counters.barterEfficiency.teamsScoresCaption[playerState.team] = 473 Math.floor(panels.market.counters.barterEfficiency.teamsScores[playerState.team].resourcesSold > 0 ? 474 (panels.market.counters.barterEfficiency.teamsScores[playerState.team].resourcesBought / 475 panels.market.counters.barterEfficiency.teamsScores[playerState.team].resourcesSold) * 100 : 0) + "%"; 476 } 477 478 function sumVegetarianRatio() 479 { 480 if (panels.miscelanous.counters.vegetarianRatio.teamsScores[playerState.team] == 0) 481 { 482 panels.miscelanous.counters.vegetarianRatio.teamsScores[playerState.team] = { }; 483 panels.miscelanous.counters.vegetarianRatio.teamsScores[playerState.team].vegetarianFood = 0; 484 panels.miscelanous.counters.vegetarianRatio.teamsScores[playerState.team].food = 0; 485 } 486 487 panels.miscelanous.counters.vegetarianRatio.teamsScores[playerState.team].vegetarianFood += playerState.statistics.resourcesGathered.vegetarianFood; 488 panels.miscelanous.counters.vegetarianRatio.teamsScores[playerState.team].food += playerState.statistics.resourcesGathered.food; 489 490 if (panels.miscelanous.counters.vegetarianRatio.teamsScores[playerState.team].food && 491 panels.miscelanous.counters.vegetarianRatio.teamsScores[playerState.team].vegetarianFood) 492 { 493 panels.miscelanous.counters.vegetarianRatio.teamsScoresCaption[playerState.team] = 494 Math.floor((panels.miscelanous.counters.vegetarianRatio.teamsScores[playerState.team].vegetarianFood / 495 panels.miscelanous.counters.vegetarianRatio.teamsScores[playerState.team].food) * 100) + "%"; 496 return; 497 } 498 panels.miscelanous.counters.vegetarianRatio.teamsScoresCaption[playerState.team] = 0 + "%"; 499 } 500 501 function sumFeminisation() 502 { 503 if (panels.miscelanous.counters.feminisation.teamsScores[playerState.team] == 0) 504 { 505 panels.miscelanous.counters.feminisation.teamsScores[playerState.team] = { }; 506 panels.miscelanous.counters.feminisation.teamsScores[playerState.team].femalesTrained = 0; 507 panels.miscelanous.counters.feminisation.teamsScores[playerState.team].workersTrained = 0; 508 } 509 510 panels.miscelanous.counters.feminisation.teamsScores[playerState.team].femalesTrained += playerState.statistics.unitsTrained.Female; 511 panels.miscelanous.counters.feminisation.teamsScores[playerState.team].workersTrained += playerState.statistics.unitsTrained.Worker; 512 513 if (panels.miscelanous.counters.feminisation.teamsScores[playerState.team].femalesTrained && 514 panels.miscelanous.counters.feminisation.teamsScores[playerState.team].workersTrained) 515 { 516 panels.miscelanous.counters.feminisation.teamsScoresCaption[playerState.team] = 517 Math.floor((panels.miscelanous.counters.feminisation.teamsScores[playerState.team].femalesTrained / 518 panels.miscelanous.counters.feminisation.teamsScores[playerState.team].workersTrained) * 100) + "%"; 519 return; 520 } 521 panels.miscelanous.counters.feminisation.teamsScoresCaption[playerState.team] = 0 + "%"; 522 } 523 524 function sumKillDeathRatio() 525 { 526 if (panels.miscelanous.counters.killDeathRatio.teamsScores[playerState.team] == 0) 527 { 528 panels.miscelanous.counters.killDeathRatio.teamsScores[playerState.team] = { }; 529 panels.miscelanous.counters.killDeathRatio.teamsScores[playerState.team].enemyUnitsKilled = 0; 530 panels.miscelanous.counters.killDeathRatio.teamsScores[playerState.team].unitsLost = 0; 531 } 532 533 panels.miscelanous.counters.killDeathRatio.teamsScores[playerState.team].enemyUnitsKilled += playerState.statistics.enemyUnitsKilled.total; 534 panels.miscelanous.counters.killDeathRatio.teamsScores[playerState.team].unitsLost += playerState.statistics.unitsLost.total; 535 536 if (!panels.miscelanous.counters.killDeathRatio.teamsScores[playerState.team].enemyUnitsKilled) 537 { 538 panels.miscelanous.counters.killDeathRatio.teamsScoresCaption[playerState.team] = "0.00"; 539 return; 540 } 541 if (!panels.miscelanous.counters.killDeathRatio.teamsScores[playerState.team].unitsLost) 542 { 543 panels.miscelanous.counters.killDeathRatio.teamsScoresCaption[playerState.team] = "\u221E"; 544 return; 545 } 546 panels.miscelanous.counters.killDeathRatio.teamsScoresCaption[playerState.team] = 547 Math.round((panels.miscelanous.counters.killDeathRatio.teamsScores[playerState.team].enemyUnitsKilled / 548 panels.miscelanous.counters.killDeathRatio.teamsScores[playerState.team].unitsLost) * 100)/100; 549 } 550 551 // FUNCTION BODY 552 // Load data 39 553 var civData = loadCivData(); 554 // Map 40 555 var mapSize = "Scenario"; 41 556 42 557 getGUIObjectByName("timeElapsed").caption = "Time elapsed: " + timeToString(data.timeElapsed); … … 61 576 } 62 577 63 578 getGUIObjectByName("mapName").caption = data.mapSettings.Name + " - " + mapSize; 579 580 // Panels 581 // Align headers 582 var left = 50; 583 for each (var panel in panels) //for all panels 584 alignHeaders(panel.headings); 64 585 65 // Space player boxes 66 var boxSpacing = 32; 67 for (var i = 0; i < panelNames.length; ++i) 586 // TODO set maxPlayers as playerCounters.length 587 var maxPlayers = data.playerStates.length - 1; 588 var maxTeams = 0; 589 590 var teams = [ ]; 591 if (data.mapSettings.LockTeams) //teams ARE locked 68 592 { 69 for (var j = 0; j < MAX_SLOTS; ++j) 593 //count teams 594 for(var t = 0; t < maxPlayers; ++t) 70 595 { 71 var box = getGUIObjectByName("playerBox"+i+"["+j+"]");72 var boxSize = box.size;73 var h = boxSize.bottom - boxSize.top;74 boxSize.top = j * boxSpacing;75 boxSize.bottom = j * boxSpacing + h;76 box.size = boxSize;596 if (!teams[data.playerStates[t+1].team]) 597 { 598 teams[data.playerStates[t+1].team] = 1; 599 continue; 600 } 601 teams[data.playerStates[t+1].team]++; 77 602 } 603 604 if (teams.length == maxPlayers) 605 teams = false; //Each player has his own team. Displaying teams makes no sense. 78 606 } 79 80 // TODO set maxPlayers as playerCounters.length 81 var maxPlayers = data.playerStates.length - 1; 82 83 // Align headers 84 var left = 50; 85 var width = 100; 86 var playerNameHeadingWidth = 200; 87 // Special cased to make the (Sent / Received) part fit 88 var tributesWidth = 121; 89 getGUIObjectByName("playerName0Heading").size = left + " 26 " + (left + playerNameHeadingWidth) + " 100%"; left += playerNameHeadingWidth; 90 getGUIObjectByName("economyScoreHeading").size = left + " 16 " + (left + width) + " 100%"; left += width; 91 getGUIObjectByName("militaryScoreHeading").size = left + " 16 " + (left + width) + " 100%"; left += width; 92 getGUIObjectByName("explorationScoreHeading").size = left + " 16 " + (left + width) + " 100%"; left += width; 93 getGUIObjectByName("totalScoreHeading").size = left + " 16 " + (left + width) + " 100%"; left += width; 607 else //teams are NOT locked 608 teams = false; 94 609 95 left = 50; 96 getGUIObjectByName("playerName1Heading").size = left + " 26 " + (left + playerNameHeadingWidth) + " 100%"; left += playerNameHeadingWidth; 97 getGUIObjectByName("unitsTrainedHeading").size = left + " 16 " + (left + width) + " 100%"; left += width; 98 getGUIObjectByName("unitsLostHeading").size = left + " 16 " + (left + width) + " 100%"; left += width; 99 getGUIObjectByName("enemyUnitsKilledHeading").size = left + " 16 " + (left + width) + " 100%"; left += width; 100 getGUIObjectByName("buildingsConstructedHeading").size = left + " 16 " + (left + width) + " 100%"; left += width; 101 getGUIObjectByName("buildingsLostHeading").size = left + " 16 " + (left + width) + " 100%"; left += width; 102 getGUIObjectByName("enemyBuildingsDestroyedHeading").size = left + " 6 " + (left + width) + " 100%"; left += width; 103 104 left = 50; 105 getGUIObjectByName("playerName2Heading").size = left + " 26 " + (left + playerNameHeadingWidth) + " 100%"; left += playerNameHeadingWidth; 106 getGUIObjectByName("civCentresBuiltHeading").size = left + " 16 " + (left + width) + " 100%"; left += width; 107 getGUIObjectByName("enemyCivCentresDestroyedHeading").size = left + " 6 " + (left + width) + " 100%"; left += width; 108 getGUIObjectByName("mapExplorationHeading").size = left + " 6 " + (left + width) + " 100%"; left += width; 109 110 left = 50; 111 getGUIObjectByName("playerName3Heading").size = left + " 26 " + (left + playerNameHeadingWidth) + " 100%"; left += playerNameHeadingWidth; 112 getGUIObjectByName("resourceHeading").size = left + " 16 " + (left + width * 4) + " 100%"; 113 getGUIObjectByName("foodGatheredHeading").size = left + " 34 " + (left + width) + " 100%"; left += width; 114 getGUIObjectByName("woodGatheredHeading").size = left + " 34 " + (left + width) + " 100%"; left += width; 115 getGUIObjectByName("stoneGatheredHeading").size = left + " 34 " + (left + width) + " 100%"; left += width; 116 getGUIObjectByName("metalGatheredHeading").size = left + " 34 " + (left + width) + " 100%"; left += width; 117 getGUIObjectByName("vegetarianRatioHeading").size = left + " 16 " + (left + width) + " 100%"; left += width; 118 getGUIObjectByName("treasuresCollectedHeading").size = left + " 16 " + (left + width) + " 100%"; left += width; 119 getGUIObjectByName("resourcesTributedHeading").size = left + " 16 " + (left + tributesWidth) + " 100%"; left += tributesWidth; 120 121 left = 50; 122 getGUIObjectByName("playerName4Heading").size = left + " 26 " + (left + playerNameHeadingWidth) + " 100%"; left += playerNameHeadingWidth; 123 getGUIObjectByName("exchangedFoodHeading").size = left + " 16 " + (left + width) + " 100%"; left += width; 124 getGUIObjectByName("exchangedWoodHeading").size = left + " 16 " + (left + width) + " 100%"; left += width; 125 getGUIObjectByName("exchangedStoneHeading").size = left + " 16 " + (left + width) + " 100%"; left += width; 126 getGUIObjectByName("exchangedMetalHeading").size = left + " 16 " + (left + width) + " 100%"; left += width; 127 getGUIObjectByName("barterEfficiencyHeading").size = left + " 16 " + (left + width) + " 100%"; left += width; 128 getGUIObjectByName("tradeIncomeHeading").size = left + " 16 " + (left + width) + " 100%"; left += width; 129 130 // Show counters 131 for (var i = 0; i < MAX_SLOTS; ++i) 610 // Erase teams data if teams are not displayed 611 if (!teams) 132 612 { 133 if (i < maxPlayers) 613 for(var p = 0; p < maxPlayers; ++p) 614 data.playerStates[p+1].team = -1; 615 } 616 617 // Count players without team (or all if teams are not displayed) 618 var withoutTeam = maxPlayers; 619 if (teams) 620 { 621 // count players without team (or all if teams are not displayed) 622 for (var i = 0; i < teams.length; ++i) 623 withoutTeam -= teams[i]; 624 625 // Display teams boxes 626 var p = 0; 627 for each (var panel in panels) 134 628 { 135 var playerState = data.playerStates[i+1]; 136 137 for (var k = 0; k < panelNames.length; ++k) 629 var yStart = TEAMS_BOX_Y_START + withoutTeam * (PLAYER_BOX_Y_SIZE + PLAYER_BOX_GAP); 630 for (var i = 0; i < teams.length; ++i) 138 631 { 139 var playerBox = getGUIObjectByName("playerBox"+k+"["+i+"]"); 140 playerBox.hidden = false; 141 142 var colourString = "colour: " 143 + Math.floor(playerState.colour.r * 255) + " " 144 + Math.floor(playerState.colour.g * 255) + " " 145 + Math.floor(playerState.colour.b * 255); 146 playerBox.sprite = colourString + " 32"; 147 var playerColourBox = getGUIObjectByName("playerColourBox"+k+"["+i+"]"); 148 playerColourBox.sprite = colourString + " 255"; 149 150 // Show the multiplayer name, e.g. "Foobar" rather than "Player 1". 151 // TODO: Perhaps show both the multiplayer and map-specific name? 152 var playerName = getGUIObjectByName("playerName"+k+"["+i+"]"); 153 playerName.caption = data.players[i+1].name; 154 155 getGUIObjectByName("civIcon"+k+"["+i+"]").sprite = "stretched:"+civData[playerState.civ].Emblem; 156 getGUIObjectByName("civIcon"+k+"["+i+"]").tooltip = civData[playerState.civ].Name; 632 var teamBox = getGUIObjectByName("teamBox"+p+"t"+i); 633 teamBox.hidden = false; 634 var teamBoxSize = teamBox.size; 635 teamBoxSize.top = yStart; 636 teamBox.size = teamBoxSize; 637 638 yStart += 30 + teams[i] * (PLAYER_BOX_Y_SIZE + PLAYER_BOX_GAP) + 32; 639 640 getGUIObjectByName("teamNameHeading"+p+"t"+i).caption = "Team "+(i+1); 641 642 // Make place to store team scores 643 for each (var counter in panel.counters) 644 { 645 counter.teamsScores[i] = 0; 646 counter.teamsScoresCaption[i] = "0"; 647 } 157 648 } 649 650 // If there are no players without team, hide "player name" heading 651 if (!withoutTeam) 652 getGUIObjectByName("playerName"+p+"Heading").caption = ""; 653 654 p++; 655 } 656 } 657 658 if (withoutTeam) 659 { 660 // Show boxes for no teams 661 for (var b = 0; b < PANELS_COUNT; ++b) 662 getGUIObjectByName("noTeamsBox"+b).hidden = false; 663 } 158 664 159 var economyScore = getGUIObjectByName("economyScore["+i+"]"); 160 var militaryScore = getGUIObjectByName("militaryScore["+i+"]"); 161 var explorationScore = getGUIObjectByName("explorationScore["+i+"]"); 162 var totalScore = getGUIObjectByName("totalScore["+i+"]"); 665 var playerBoxesCounts = [ ]; 666 for (var i = 0; i < maxPlayers; ++i) 667 { 668 var tn = ""; 669 var playerState = data.playerStates[i+1]; 670 671 if (!playerBoxesCounts[playerState.team+1]) 672 playerBoxesCounts[playerState.team+1] = 1; 673 else 674 playerBoxesCounts[playerState.team+1] += 1; 163 675 164 var unitsTrained = getGUIObjectByName("unitsTrained["+i+"]"); 165 var unitsLost = getGUIObjectByName("unitsLost["+i+"]"); 166 var enemyUnitsKilled = getGUIObjectByName("enemyUnitsKilled["+i+"]"); 167 var buildingsConstructed = getGUIObjectByName("buildingsConstructed["+i+"]"); 168 var buildingsLost = getGUIObjectByName("buildingsLost["+i+"]"); 169 var enemyBuildingsDestroyed = getGUIObjectByName("enemyBuildingsDestroyed["+i+"]"); 676 if (playerState.team != -1) 677 tn = "t"+playerState.team+"p"; 170 678 171 var civCentresBuilt = getGUIObjectByName("civCentresBuilt["+i+"]"); 172 var enemyCivCentresDestroyed = getGUIObjectByName("enemyCivCentresDestroyed["+i+"]"); 173 var mapExploration = getGUIObjectByName("mapExploration["+i+"]"); 174 175 var foodGathered = getGUIObjectByName("foodGathered["+i+"]"); 176 var woodGathered = getGUIObjectByName("woodGathered["+i+"]"); 177 var stoneGathered = getGUIObjectByName("stoneGathered["+i+"]"); 178 var metalGathered = getGUIObjectByName("metalGathered["+i+"]"); 179 var vegetarianRatio = getGUIObjectByName("vegetarianRatio["+i+"]"); 180 var treasuresCollected = getGUIObjectByName("treasuresCollected["+i+"]"); 181 var resourcesTributed = getGUIObjectByName("resourcesTributed["+i+"]"); 182 183 var exchangedFood = getGUIObjectByName("exchangedFood["+i+"]"); 184 var exchangedWood = getGUIObjectByName("exchangedWood["+i+"]"); 185 var exchangedStone = getGUIObjectByName("exchangedStone["+i+"]"); 186 var exchangedMetal = getGUIObjectByName("exchangedMetal["+i+"]"); 187 var barterEfficiency = getGUIObjectByName("barterEfficiency["+i+"]"); 188 var tradeIncome = getGUIObjectByName("tradeIncome["+i+"]"); 189 190 // align counters 191 192 left = 240; 193 width = 100; 194 economyScore.size = left + " 2 " + (left + width) + " 100%"; left += width; 195 militaryScore.size = left + " 2 " + (left + width) + " 100%"; left += width; 196 explorationScore.size = left + " 2 " + (left + width) + " 100%"; left += width; 197 totalScore.size = left + " 2 " + (left + width) + " 100%"; left += width; 198 var size = getGUIObjectByName("playerBox0["+i+"]").size; 199 size.right = left + 10; 200 getGUIObjectByName("playerBox0["+i+"]").size = size; 679 var j = 0; 680 for each (var panel in panels) 681 { 682 var playerIdentityString = tn+"["+(playerBoxesCounts[playerState.team+1]-1)+"]"; 683 // Display boxes for players 684 var playerBox = getGUIObjectByName("playerBox"+j+playerIdentityString); 685 playerBox.hidden = false; 201 686 202 left = 240; 203 unitsTrained.size = left + " 2 " + (left + width) + " 100%"; left += width; 204 unitsLost.size = left + " 2 " + (left + width) + " 100%"; left += width; 205 enemyUnitsKilled.size = left + " 2 " + (left + width) + " 100%"; left += width; 206 buildingsConstructed.size = left + " 2 " + (left + width) + " 100%"; left += width; 207 buildingsLost.size = left + " 2 " + (left + width) + " 100%"; left += width; 208 enemyBuildingsDestroyed.size = left + " 2 " + (left + width) + " 100%"; left += width; 209 size = getGUIObjectByName("playerBox1["+i+"]").size; 210 size.right = left + 10; 211 getGUIObjectByName("playerBox1["+i+"]").size = size; 687 var boxSize = playerBox.size; 688 boxSize.top += (playerBoxesCounts[playerState.team+1] - 1) * (PLAYER_BOX_Y_SIZE + PLAYER_BOX_GAP); 689 boxSize.bottom = boxSize.top + PLAYER_BOX_Y_SIZE; 690 playerBox.size = boxSize; 691 692 var colourString = "colour: " 693 + Math.floor(playerState.colour.r * 255) + " " 694 + Math.floor(playerState.colour.g * 255) + " " 695 + Math.floor(playerState.colour.b * 255); 696 697 playerBox.sprite = colourString + PLAYER_BOX_ALPHA; 698 699 var playerColourBox = getGUIObjectByName("playerColourBox"+j+playerIdentityString); 700 playerColourBox.sprite = colourString + PLAYER_COLOUR_BOX_ALPHA; 701 702 // Show the multiplayer name, e.g. "Foobar" rather than "Player 1". 703 // TODO: Perhaps show both the multiplayer and map-specific name? 704 var playerName = getGUIObjectByName("playerName"+j+playerIdentityString); 705 playerName.caption = data.players[i+1].name; 212 706 213 left = 240; 214 civCentresBuilt.size = left + " 2 " + (left + width) + " 100%"; left += width; 215 enemyCivCentresDestroyed.size = left + " 2 " + (left + width) + " 100%"; left += width; 216 mapExploration.size = left + " 2 " + (left + width) + " 100%"; left += width; 217 size = getGUIObjectByName("playerBox2["+i+"]").size; 218 size.right = left + 10; 219 getGUIObjectByName("playerBox2["+i+"]").size = size; 220 221 left = 240; 222 foodGathered.size = left + " 2 " + (left + width) + " 100%"; left += width; 223 woodGathered.size = left + " 2 " + (left + width) + " 100%"; left += width; 224 stoneGathered.size = left + " 2 " + (left + width) + " 100%"; left += width; 225 metalGathered.size = left + " 2 " + (left + width) + " 100%"; left += width; 226 vegetarianRatio.size = left + " 2 " + (left + width) + " 100%"; left += width; 227 treasuresCollected.size = left + " 2 " + (left + width) + " 100%"; left += width; 228 resourcesTributed.size = left + " 2 " + (left + tributesWidth) + " 100%"; left += tributesWidth; 229 size = getGUIObjectByName("playerBox3["+i+"]").size; 230 size.right = left + 10; 231 getGUIObjectByName("playerBox3["+i+"]").size = size; 232 233 left = 240; 234 exchangedFood.size = left + " 2 " + (left + width) + " 100%"; left += width; 235 exchangedWood.size = left + " 2 " + (left + width) + " 100%"; left += width; 236 exchangedStone.size = left + " 2 " + (left + width) + " 100%"; left += width; 237 exchangedMetal.size = left + " 2 " + (left + width) + " 100%"; left += width; 238 barterEfficiency.size = left + " 2 " + (left + width) + " 100%"; left += width; 239 tradeIncome.size = left + " 2 " + (left + width) + " 100%"; left += width; 240 size = getGUIObjectByName("playerBox4["+i+"]").size; 241 size.right = left + 10; 242 getGUIObjectByName("playerBox4["+i+"]").size = size; 243 244 // display counters 245 economyScore.caption = Math.round((playerState.statistics.resourcesGathered.food + playerState.statistics.resourcesGathered.wood + 246 playerState.statistics.resourcesGathered.stone + playerState.statistics.resourcesGathered.metal) / 10); 247 militaryScore.caption = Math.round((playerState.statistics.enemyUnitsKilledValue + playerState.statistics.enemyBuildingsDestroyedValue) / 10); 248 explorationScore.caption = playerState.statistics.percentMapExplored * 10; 249 totalScore.caption = Number(economyScore.caption) + Number(militaryScore.caption) + Number(explorationScore.caption); 707 var civIcon = getGUIObjectByName("civIcon"+j+playerIdentityString); 708 civIcon.sprite = "stretched:"+civData[playerState.civ].Emblem; 709 civIcon.tooltip = civData[playerState.civ].Name; 250 710 251 unitsTrained.caption = playerState.statistics.unitsTrained; 252 unitsLost.caption = playerState.statistics.unitsLost; 253 enemyUnitsKilled.caption = playerState.statistics.enemyUnitsKilled; 254 buildingsConstructed.caption = playerState.statistics.buildingsConstructed; 255 buildingsLost.caption = playerState.statistics.buildingsLost; 256 enemyBuildingsDestroyed.caption = playerState.statistics.enemyBuildingsDestroyed; 257 258 civCentresBuilt.caption = playerState.statistics.civCentresBuilt; 259 enemyCivCentresDestroyed.caption = playerState.statistics.enemyCivCentresDestroyed; 260 mapExploration.caption = playerState.statistics.percentMapExplored + "%"; 261 262 const SOLD_COLOR = '[color="201 255 200"]'; 263 const BOUGHT_COLOR = '[color="255 213 213"]'; 264 foodGathered.caption = SOLD_COLOR + playerState.statistics.resourcesGathered.food + "[/color] / " + 265 BOUGHT_COLOR + (playerState.statistics.resourcesUsed.food - playerState.statistics.resourcesSold.food) + "[/color]"; 266 woodGathered.caption = SOLD_COLOR + playerState.statistics.resourcesGathered.wood + "[/color] / " + 267 BOUGHT_COLOR + (playerState.statistics.resourcesUsed.wood - playerState.statistics.resourcesSold.wood) + "[/color]"; 268 stoneGathered.caption = SOLD_COLOR + playerState.statistics.resourcesGathered.stone + "[/color] / " + 269 BOUGHT_COLOR + (playerState.statistics.resourcesUsed.stone - playerState.statistics.resourcesSold.stone) + "[/color]"; 270 metalGathered.caption = SOLD_COLOR + playerState.statistics.resourcesGathered.metal + "[/color] / " + 271 BOUGHT_COLOR + (playerState.statistics.resourcesUsed.metal - playerState.statistics.resourcesSold.metal) + "[/color]"; 272 vegetarianRatio.caption = Math.floor(playerState.statistics.resourcesGathered.food > 0 ? 273 (playerState.statistics.resourcesGathered.vegetarianFood / playerState.statistics.resourcesGathered.food) * 100 : 0) + "%"; 274 treasuresCollected.caption = playerState.statistics.treasuresCollected; 275 resourcesTributed.caption = SOLD_COLOR + playerState.statistics.tributesSent + "[/color] / " + 276 BOUGHT_COLOR + playerState.statistics.tributesReceived + "[/color]"; 277 278 exchangedFood.caption = SOLD_COLOR + '+' + playerState.statistics.resourcesBought.food 279 + '[/color] ' + BOUGHT_COLOR + '-' + playerState.statistics.resourcesSold.food + '[/color]'; 280 exchangedWood.caption = SOLD_COLOR + '+' + playerState.statistics.resourcesBought.wood 281 + '[/color] ' + BOUGHT_COLOR + '-' + playerState.statistics.resourcesSold.wood + '[/color]'; 282 exchangedStone.caption = SOLD_COLOR + '+' + playerState.statistics.resourcesBought.stone 283 + '[/color] ' + BOUGHT_COLOR + '-' + playerState.statistics.resourcesSold.stone + '[/color]'; 284 exchangedMetal.caption = SOLD_COLOR + '+' + playerState.statistics.resourcesBought.metal 285 + '[/color] ' + BOUGHT_COLOR + '-' + playerState.statistics.resourcesSold.metal + '[/color]'; 286 var totalBought = 0; 287 for each (var boughtAmount in playerState.statistics.resourcesBought) 288 totalBought += boughtAmount; 289 var totalSold = 0; 290 for each (var soldAmount in playerState.statistics.resourcesSold) 291 totalSold += soldAmount; 292 barterEfficiency.caption = Math.floor(totalSold > 0 ? (totalBought / totalSold) * 100 : 0) + "%"; 293 tradeIncome.caption = playerState.statistics.tradeIncome; 711 // Get counters 712 for (var c in panel.counters) 713 { 714 panel.counters[c].objects[i] = getGUIObjectByName(c+playerIdentityString); 715 } 716 717 // Align counters 718 var right = alignCounters(panel.counters, i); 719 boxSize.right = right; 720 playerBox.size = boxSize; 721 722 j++; 294 723 } 295 else 724 725 // Assign counters 726 // score panel 727 panels.score.counters.economyScore.objects[i].caption = captionEconomyScore(); 728 panels.score.counters.militaryScore.objects[i].caption = Math.round((playerState.statistics.enemyUnitsKilledValue + 729 playerState.statistics.enemyBuildingsDestroyedValue) / 10); 730 panels.score.counters.explorationScore.objects[i].caption = playerState.statistics.percentMapExplored * 10; 731 panels.score.counters.totalScore.objects[i].caption = (+panels.score.counters.economyScore.objects[i].caption) + 732 (+panels.score.counters.militaryScore.objects[i].caption) + 733 (+panels.score.counters.explorationScore.objects[i].caption); 734 // buildings panel 735 var t = 0; 736 for each (var counter in panels.buildings.counters) 296 737 { 297 // hide player boxes 298 for (var k = 0; k < panelNames.length; ++k) 738 captionBuildings(counter.objects[i], BUILDINGS_TYPES[t]); 739 t++; 740 } 741 // units panel 742 t = 0; 743 for each (var counter in panels.units.counters) 744 { 745 captionUnits(counter.objects[i], UNITS_TYPES[t]); 746 t++; 747 } 748 // resources panel 749 t = 0; 750 for each (var counter in panels.resources.counters) 751 { 752 if (t >= 4) // only 4 first counters 753 break; 754 755 captionResourcesGathered(counter.objects[i], RESOURCES_TYPES[t]); 756 t++; 757 } 758 panels.resources.counters.totalGathered.objects[i].caption = captionTotalResourcesGathered(); 759 panels.resources.counters.treasuresCollected.objects[i].caption = playerState.statistics.treasuresCollected; 760 panels.resources.counters.resourcesTributed.objects[i].caption = captionResourcesTributed(); 761 // market panel 762 t = 0; 763 for (var c in panels.market.counters) 764 { 765 if (t >= 4) // only 4 first counters 766 break; 767 768 captionResourcesExchanged(panels.market.counters[c].objects[i], RESOURCES_TYPES[t]); 769 t++; 770 } 771 panels.market.counters.barterEfficiency.objects[i].caption = captionBarterEfficiency(); 772 panels.market.counters.tradeIncome.objects[i].caption = playerState.statistics.tradeIncome; 773 // miscelanous panel 774 panels.miscelanous.counters.vegetarianRatio.objects[i].caption = captionVegetarianRatio(); 775 panels.miscelanous.counters.feminisation.objects[i].caption = captionFeminisation(); 776 panels.miscelanous.counters.killDeathRatio.objects[i].caption = captionKillDeathRatio(); 777 panels.miscelanous.counters.mapExploration.objects[i].caption = playerState.statistics.percentMapExplored + "%"; 778 779 if (!teams) 780 continue; 781 782 if (playerState.team == -1) 783 continue; 784 785 // Evaluate team total score 786 // score panel 787 for (var c in panels.score.counters) 788 { 789 panels.score.counters[c].teamsScores[playerState.team] += (+panels.score.counters[c].objects[i].caption); 790 panels.score.counters[c].teamsScoresCaption[playerState.team] = panels.score.counters[c].teamsScores[playerState.team]; 791 } 792 // buildings panel 793 var t = 0; 794 for each (var counter in panels.buildings.counters) 795 { 796 sumTeamBuildings(counter, BUILDINGS_TYPES[t]); 797 t++; 798 } 799 // units panel 800 t = 0; 801 for each (var counter in panels.units.counters) 802 { 803 sumTeamUnits(counter, UNITS_TYPES[t]); 804 t++; 805 } 806 // resources panel 807 t = 0; 808 for each (var counter in panels.resources.counters) 809 { 810 if (t >= 4) // only 4 first counters 811 break; 812 813 sumResourcesGathered(counter, RESOURCES_TYPES[t]); 814 t++; 815 } 816 sumTotalResourcesGathered(); 817 panels.resources.counters.treasuresCollected.teamsScores[playerState.team] += playerState.statistics.treasuresCollected; 818 panels.resources.counters.treasuresCollected.teamsScoresCaption[playerState.team] = panels.resources.counters.treasuresCollected.teamsScores[playerState.team]; 819 sumResourcesTributed(); 820 // market panel 821 t = 0; 822 for (var c in panels.market.counters) 823 { 824 if (t >= 4) // only 4 first counters 825 break; 826 827 sumResourcesExchanged(panels.market.counters[c], RESOURCES_TYPES[t]); 828 t++; 829 } 830 sumBarterEfficiency(); 831 panels.market.counters.tradeIncome.teamsScores[playerState.team] += playerState.statistics.tradeIncome; 832 panels.market.counters.tradeIncome.teamsScoresCaption[playerState.team] = panels.market.counters.tradeIncome.teamsScores[playerState.team]; 833 // miscelanous panel 834 sumVegetarianRatio(); 835 sumFeminisation(); 836 sumKillDeathRatio(); 837 // TODO: probably change from simple sum to union from range manager 838 panels.miscelanous.counters.mapExploration.teamsScores[playerState.team] += playerState.statistics.percentMapExplored; 839 panels.miscelanous.counters.mapExploration.teamsScoresCaption[playerState.team] = panels.miscelanous.counters.mapExploration.teamsScores[playerState.team] + "%"; 840 } 841 842 if (!teams) 843 { 844 selectPanel(0); 845 return; 846 } 847 848 // Display teams totals counters 849 for (var i = 0; i < teams.length; ++i) 850 { 851 var pn = 0; 852 for (var p in panels) 853 { 854 var teamHeading = getGUIObjectByName("teamHeading"+pn+"t"+i); 855 var yStart = 30 + teams[i] * (PLAYER_BOX_Y_SIZE + PLAYER_BOX_GAP) + 2; 856 teamHeading.size = "50 "+yStart+" 100% "+(yStart+20); 857 teamHeading.caption = "Team total"; 858 859 var left = 250; 860 for (var c in panels[p].counters) 299 861 { 300 var playerBox = getGUIObjectByName("playerBox"+k+"["+i+"]"); 301 playerBox.hidden = true; 862 var counter = getGUIObjectByName(c+"t"+i); 863 counter.size = left + " " + yStart + " " + (left + panels[p].counters[c].width) + " " + (yStart+20); 864 counter.caption = panels[p].counters[c].teamsScoresCaption[i]; 865 866 left += panels[p].counters[c].width; 302 867 } 868 pn++; 303 869 } 304 870 } 305 871 -
binaries/data/mods/public/gui/summary/summary.xml
57 57 <object name="tabDividerLeft" type="image" sprite="TabSpacer" size="172 120 174 122"/> 58 58 <object name="tabDividerRight" type="image" sprite="TabSpacer" size="328 120 330 122"/> 59 59 60 <object name="scorePanelButton" type="button" sprite="ForegroundTab" size="20 95 170120">60 <object name="scorePanelButton" type="button" sprite="ForegroundTab" size="20 82 136 120"> 61 61 <action on="Press">selectPanel(0);</action> 62 62 <object type="text" style="TitleText" ghost="true">Score</object> 63 63 </object> 64 64 65 <object name=" unitsBuildingsPanelButton" type="button" sprite="BackgroundTab" size="176 95 326120">65 <object name="buildingsPanelButton" type="button" sprite="BackgroundTab" size="142 82 260 120"> 66 66 <action on="Press">selectPanel(1);</action> 67 <object type="text" style="TitleText" ghost="true"> Units/buildings</object>67 <object type="text" style="TitleText" ghost="true">Buildings</object> 68 68 </object> 69 69 70 <object name=" conquestPanelButton" type="button" sprite="BackgroundTab" size="332 95 480120">70 <object name="unitsPanelButton" type="button" sprite="BackgroundTab" size="266 82 384 120"> 71 71 <action on="Press">selectPanel(2);</action> 72 <object type="text" style="TitleText" ghost="true"> Conquest</object>72 <object type="text" style="TitleText" ghost="true">Units</object> 73 73 </object> 74 74 75 <object name="resourcesPanelButton" type="button" sprite="BackgroundTab" size=" 486 95 636120">75 <object name="resourcesPanelButton" type="button" sprite="BackgroundTab" size="390 82 508 120"> 76 76 <action on="Press">selectPanel(3);</action> 77 77 <object type="text" style="TitleText" ghost="true">Resources</object> 78 78 </object> 79 79 80 <object name="marketPanelButton" type="button" sprite="BackgroundTab" size=" 642 95 792 120">80 <object name="marketPanelButton" type="button" sprite="BackgroundTab" size="514 82 632 120"> 81 81 <action on="Press">selectPanel(4);</action> 82 82 <object type="text" style="TitleText" ghost="true">Market</object> 83 83 </object> 84 84 85 <object name="miscPanelButton" type="button" sprite="BackgroundTab" size="638 82 756 120"> 86 <action on="Press">selectPanel(5);</action> 87 <object type="text" style="TitleText" ghost="true">Miscellaneous</object> 88 </object> 89 85 90 <object name="scorePanel" type="image" sprite="ForegroundBody" size="20 120 100%-20 100%-58"> 86 91 87 92 <object size="0 0 100% 100%-50"> … … 102 107 </object> 103 108 </object> 104 109 105 <object size="0 65 100% 100%-50"> 110 <object type="image" name="teamBox0t0" size="0 65 100% 100%-50" hidden="true"> 111 <object type="text" name="teamNameHeading0t0" size="15 5 100% 100%" style="LeftTabLabelText"/> 112 <object size="0 30 100% 100%"> 113 <repeat count="8"> 114 <object type="image" name="playerBox0t0p[n]" size="10 0 10 30" hidden="true"> 115 <object name="playerColourBox0t0p[n]" type="image" size="10 4 30 24"/> 116 <object name="playerName0t0p[n]" type="text" size="40 2 208 100%" style="LeftLabelText" /> 117 <object name="civIcon0t0p[n]" type="image" size="208 0 240 32" tooltip_style="sessionToolTip"/> 118 <object name="economyScoret0p[n]" type="text" style="CenteredLabelText"/> 119 <object name="militaryScoret0p[n]" type="text" style="CenteredLabelText"/> 120 <object name="explorationScoret0p[n]" type="text" style="CenteredLabelText"/> 121 <object name="totalScoret0p[n]" type="text" style="CenteredLabelText"/> 122 </object> 123 </repeat> 124 </object> 125 <object name="teamHeading0t0" type="text" style="LeftTabLabelText"/> 126 <object name="economyScoret0" type="text" style="CenteredLabelText"/> 127 <object name="militaryScoret0" type="text" style="CenteredLabelText"/> 128 <object name="explorationScoret0" type="text" style="CenteredLabelText"/> 129 <object name="totalScoret0" type="text" style="CenteredLabelText"/> 130 </object> 131 <object type="image" name="teamBox0t1" size="0 65 100% 100%-50" hidden="true"> 132 <object type="text" name="teamNameHeading0t1" size="15 5 100% 100%" style="LeftTabLabelText"/> 133 <object size="0 30 100% 100%"> 134 <repeat count="8"> 135 <object type="image" name="playerBox0t1p[n]" size="10 0 10 30" hidden="true"> 136 <object name="playerColourBox0t1p[n]" type="image" size="10 4 30 24"/> 137 <object name="playerName0t1p[n]" type="text" size="40 2 208 100%" style="LeftLabelText"/> 138 <object name="civIcon0t1p[n]" type="image" size="208 0 240 32" tooltip_style="sessionToolTip"/> 139 <object name="economyScoret1p[n]" type="text" style="CenteredLabelText"/> 140 <object name="militaryScoret1p[n]" type="text" style="CenteredLabelText"/> 141 <object name="explorationScoret1p[n]" type="text" style="CenteredLabelText"/> 142 <object name="totalScoret1p[n]" type="text" style="CenteredLabelText"/> 143 </object> 144 </repeat> 145 </object> 146 <object name="teamHeading0t1" type="text" style="LeftTabLabelText"/> 147 <object name="economyScoret1" type="text" style="CenteredLabelText"/> 148 <object name="militaryScoret1" type="text" style="CenteredLabelText"/> 149 <object name="explorationScoret1" type="text" style="CenteredLabelText"/> 150 <object name="totalScoret1" type="text" style="CenteredLabelText"/> 151 </object> 152 <object type="image" name="teamBox0t2" size="0 65 100% 100%-50" hidden="true"> 153 <object type="text" name="teamNameHeading0t2" size="15 5 100% 100%" style="LeftTabLabelText"/> 154 <object size="0 30 100% 100%"> 155 <repeat count="8"> 156 <object type="image" name="playerBox0t2p[n]" size="10 0 10 30" hidden="true"> 157 <object name="playerColourBox0t2p[n]" type="image" size="10 4 30 24"/> 158 <object name="playerName0t2p[n]" type="text" size="40 2 208 100%" style="LeftLabelText"/> 159 <object name="civIcon0t2p[n]" type="image" size="208 0 240 32" tooltip_style="sessionToolTip"/> 160 <object name="economyScoret2p[n]" type="text" style="CenteredLabelText"/> 161 <object name="militaryScoret2p[n]" type="text" style="CenteredLabelText"/> 162 <object name="explorationScoret2p[n]" type="text" style="CenteredLabelText"/> 163 <object name="totalScoret2p[n]" type="text" style="CenteredLabelText"/> 164 </object> 165 </repeat> 166 </object> 167 <object name="teamHeading0t2" type="text" style="LeftTabLabelText"/> 168 <object name="economyScoret2" type="text" style="CenteredLabelText"/> 169 <object name="militaryScoret2" type="text" style="CenteredLabelText"/> 170 <object name="explorationScoret2" type="text" style="CenteredLabelText"/> 171 <object name="totalScoret2" type="text" style="CenteredLabelText"/> 172 </object> 173 <object type="image" name="teamBox0t3" size="0 65 100% 100%-50" hidden="true"> 174 <object type="text" name="teamNameHeading0t3" size="15 5 100% 100%" style="LeftTabLabelText"/> 175 <object size="0 30 100% 100%"> 176 <repeat count="8"> 177 <object type="image" name="playerBox0t3p[n]" size="10 0 10 30" hidden="true"> 178 <object name="playerColourBox0t3p[n]" type="image" size="10 4 30 24"/> 179 <object name="playerName0t3p[n]" type="text" size="40 2 208 100%" style="LeftLabelText"/> 180 <object name="civIcon0t3p[n]" type="image" size="208 0 240 32" tooltip_style="sessionToolTip"/> 181 <object name="economyScoret3p[n]" type="text" style="CenteredLabelText"/> 182 <object name="militaryScoret3p[n]" type="text" style="CenteredLabelText"/> 183 <object name="explorationScoret3p[n]" type="text" style="CenteredLabelText"/> 184 <object name="totalScoret3p[n]" type="text" style="CenteredLabelText"/> 185 </object> 186 </repeat> 187 </object> 188 <object name="teamHeading0t3" type="text" style="LeftTabLabelText"/> 189 <object name="economyScoret3" type="text" style="CenteredLabelText"/> 190 <object name="militaryScoret3" type="text" style="CenteredLabelText"/> 191 <object name="explorationScoret3" type="text" style="CenteredLabelText"/> 192 <object name="totalScoret3" type="text" style="CenteredLabelText"/> 193 </object>yy 194 195 <object type="image" name="noTeamsBox0" size="0 65 100% 100%-50" hidden="true"> 106 196 <repeat count="8"> 107 197 <object type="image" name="playerBox0[n]" size="10 0 10 30" hidden="true"> 108 <object name="playerColourBox0[n]" type="image" size="10 4 30 24"/>109 <object name="playerName0[n]" type="text" style="LeftLabelText" size="40 2 208 100%"/>110 <object name="civIcon0[n]" type="image" size="208 0 240 32"tooltip_style="sessionToolTip"/>111 <object name="economyScore[n]" type="text"style="CenteredLabelText"/>112 <object name="militaryScore[n]" type="text"style="CenteredLabelText"/>113 <object name="explorationScore[n]" type="text"style="CenteredLabelText"/>114 <object name="totalScore[n]" type="text"style="CenteredLabelText"/>198 <object name="playerColourBox0[n]" type="image" size="10 4 30 24"/> 199 <object name="playerName0[n]" type="text" size="40 2 208 100%" style="LeftLabelText"/> 200 <object name="civIcon0[n]" type="image" size="208 0 240 32" tooltip_style="sessionToolTip"/> 201 <object name="economyScore[n]" type="text" style="CenteredLabelText"/> 202 <object name="militaryScore[n]" type="text" style="CenteredLabelText"/> 203 <object name="explorationScore[n]" type="text" style="CenteredLabelText"/> 204 <object name="totalScore[n]" type="text" style="CenteredLabelText"/> 115 205 </object> 116 206 </repeat> 117 207 </object> 118 119 208 </object> 120 <object name="unitsBuildingsPanel" type="image" sprite="ForegroundBody" size="20 120 100%-20 100%-58" hidden="true"> 209 210 <object name="buildingsPanel" type="image" sprite="ForegroundBody" size="20 120 100%-20 100%-58" hidden="true"> 121 211 122 212 <object size="0 0 100% 100%-50"> 123 213 <object name="playerName1Heading" type="text" style="LeftTabLabelText"> 124 214 Player name 125 215 </object> 126 <object name=" unitsTrainedHeading" type="text" style="CenteredTabLabelText">127 Units trained216 <object name="buildingsHeading" type="text" style="CenteredTabLabelText"> 217 Buildings Statistics (Constructed / Lost / Destroyed) 128 218 </object> 129 <object name=" unitsLostHeading" type="text" style="CenteredTabLabelText">130 Units lost219 <object name="totalBuildingsHeading" type="text" style="CenteredTabLabelText"> 220 Total 131 221 </object> 132 <object name=" enemyUnitsKilledHeading" type="text" style="CenteredTabLabelText">133 Enemy units killed222 <object name="houseBuildingsHeading" type="text" style="CenteredTabLabelText"> 223 Houses 134 224 </object> 135 <object name=" buildingsConstructedHeading" type="text" style="CenteredTabLabelText">136 Buildings constructed225 <object name="economicBuildingsHeading" type="text" style="CenteredTabLabelText"> 226 Economic 137 227 </object> 138 <object name=" buildingsLostHeading" type="text" style="CenteredTabLabelText">139 Buildings lost228 <object name="outpostBuildingsHeading" type="text" style="CenteredTabLabelText"> 229 Outposts 140 230 </object> 141 <object name="enemyBuildingsDestroyedHeading" type="text" style="CenteredTabLabelText"> 142 Enemy buildings destroyed 231 <object name="militaryBuildingsHeading" type="text" style="CenteredTabLabelText"> 232 Military 233 </object> 234 <object name="fortressBuildingsHeading" type="text" style="CenteredTabLabelText"> 235 Fortresses 143 236 </object> 237 <object name="civCentreBuildingsHeading" type="text" style="CenteredTabLabelText"> 238 Civ Centers 239 </object> 240 <object name="wonderBuildingsHeading" type="text" style="CenteredTabLabelText"> 241 Wonders 242 </object> 243 144 244 </object> 145 146 <object size="0 65 100% 100%-50"> 245 246 <object type="image" name="teamBox1t0" size="0 65 100% 100%-50" hidden="true"> 247 <object type="text" name="teamNameHeading1t0" size="15 5 100% 100%" style="LeftTabLabelText"/> 248 <object size="0 30 100% 100%"> 249 <repeat count="8"> 250 <object type="image" name="playerBox1t0p[n]" size="10 0 10 30" hidden="true"> 251 <object name="playerColourBox1t0p[n]" type="image" size="10 4 30 24"/> 252 <object name="playerName1t0p[n]" type="text" size="40 2 208 100%" style="LeftLabelText"/> 253 <object name="civIcon1t0p[n]" type="image" size="208 0 240 32" tooltip_style="sessionToolTip"/> 254 <object name="totalBuildingst0p[n]" type="text" style="CenteredLabelText"/> 255 <object name="houseBuildingst0p[n]" type="text" style="CenteredLabelText"/> 256 <object name="economicBuildingst0p[n]" type="text" style="CenteredLabelText"/> 257 <object name="outpostBuildingst0p[n]" type="text" style="CenteredLabelText"/> 258 <object name="militaryBuildingst0p[n]" type="text" style="CenteredLabelText"/> 259 <object name="fortressBuildingst0p[n]" type="text" style="CenteredLabelText"/> 260 <object name="civCentreBuildingst0p[n]" type="text" style="CenteredLabelText"/> 261 <object name="wonderBuildingst0p[n]" type="text" style="CenteredLabelText"/> 262 </object> 263 </repeat> 264 </object> 265 <object name="teamHeading1t0" type="text" style="LeftTabLabelText"/> 266 <object name="totalBuildingst0" type="text" style="CenteredLabelText"/> 267 <object name="houseBuildingst0" type="text" style="CenteredLabelText"/> 268 <object name="economicBuildingst0" type="text" style="CenteredLabelText"/> 269 <object name="outpostBuildingst0" type="text" style="CenteredLabelText"/> 270 <object name="militaryBuildingst0" type="text" style="CenteredLabelText"/> 271 <object name="fortressBuildingst0" type="text" style="CenteredLabelText"/> 272 <object name="civCentreBuildingst0" type="text" style="CenteredLabelText"/> 273 <object name="wonderBuildingst0" type="text" style="CenteredLabelText"/> 274 </object> 275 <object type="image" name="teamBox1t1" size="0 65 100% 100%-50" hidden="true"> 276 <object type="text" name="teamNameHeading1t1" size="15 5 100% 100%" style="LeftTabLabelText"/> 277 <object size="0 30 100% 100%"> 278 <repeat count="8"> 279 <object type="image" name="playerBox1t1p[n]" size="10 0 10 30" hidden="true"> 280 <object name="playerColourBox1t1p[n]" type="image" size="10 4 30 24"/> 281 <object name="playerName1t1p[n]" type="text" size="40 2 208 100%" style="LeftLabelText"/> 282 <object name="civIcon1t1p[n]" type="image" size="208 0 240 32" tooltip_style="sessionToolTip"/> 283 <object name="totalBuildingst1p[n]" type="text" style="CenteredLabelText"/> 284 <object name="houseBuildingst1p[n]" type="text" style="CenteredLabelText"/> 285 <object name="economicBuildingst1p[n]" type="text" style="CenteredLabelText"/> 286 <object name="outpostBuildingst1p[n]" type="text" style="CenteredLabelText"/> 287 <object name="militaryBuildingst1p[n]" type="text" style="CenteredLabelText"/> 288 <object name="fortressBuildingst1p[n]" type="text" style="CenteredLabelText"/> 289 <object name="civCentreBuildingst1p[n]" type="text" style="CenteredLabelText"/> 290 <object name="wonderBuildingst1p[n]" type="text" style="CenteredLabelText"/> 291 </object> 292 </repeat> 293 </object> 294 <object name="teamHeading1t1" type="text" style="LeftTabLabelText"/> 295 <object name="totalBuildingst1" type="text" style="CenteredLabelText"/> 296 <object name="houseBuildingst1" type="text" style="CenteredLabelText"/> 297 <object name="economicBuildingst1" type="text" style="CenteredLabelText"/> 298 <object name="outpostBuildingst1" type="text" style="CenteredLabelText"/> 299 <object name="militaryBuildingst1" type="text" style="CenteredLabelText"/> 300 <object name="fortressBuildingst1" type="text" style="CenteredLabelText"/> 301 <object name="civCentreBuildingst1" type="text" style="CenteredLabelText"/> 302 <object name="wonderBuildingst1" type="text" style="CenteredLabelText"/> 303 </object> 304 <object type="image" name="teamBox1t2" size="0 65 100% 100%-50" hidden="true"> 305 <object type="text" name="teamNameHeading1t2" size="15 5 100% 100%" style="LeftTabLabelText"/> 306 <object size="0 30 100% 100%"> 307 <repeat count="8"> 308 <object type="image" name="playerBox1t2p[n]" size="10 0 10 30" hidden="true"> 309 <object name="playerColourBox1t2p[n]" type="image" size="10 4 30 24"/> 310 <object name="playerName1t2p[n]" type="text" size="40 2 208 100%" style="LeftLabelText"/> 311 <object name="civIcon1t2p[n]" type="image" size="208 0 240 32" tooltip_style="sessionToolTip"/> 312 <object name="totalBuildingst2p[n]" type="text" style="CenteredLabelText"/> 313 <object name="houseBuildingst2p[n]" type="text" style="CenteredLabelText"/> 314 <object name="economicBuildingst2p[n]" type="text" style="CenteredLabelText"/> 315 <object name="outpostBuildingst2p[n]" type="text" style="CenteredLabelText"/> 316 <object name="militaryBuildingst2p[n]" type="text" style="CenteredLabelText"/> 317 <object name="fortressBuildingst2p[n]" type="text" style="CenteredLabelText"/> 318 <object name="civCentreBuildingst2p[n]" type="text" style="CenteredLabelText"/> 319 <object name="wonderBuildingst2p[n]" type="text" style="CenteredLabelText"/> 320 </object> 321 </repeat> 322 </object> 323 <object name="teamHeading1t2" type="text" style="LeftTabLabelText"/> 324 <object name="totalBuildingst2" type="text" style="CenteredLabelText"/> 325 <object name="houseBuildingst2" type="text" style="CenteredLabelText"/> 326 <object name="economicBuildingst2" type="text" style="CenteredLabelText"/> 327 <object name="outpostBuildingst2" type="text" style="CenteredLabelText"/> 328 <object name="militaryBuildingst2" type="text" style="CenteredLabelText"/> 329 <object name="fortressBuildingst2" type="text" style="CenteredLabelText"/> 330 <object name="civCentreBuildingst2" type="text" style="CenteredLabelText"/> 331 <object name="wonderBuildingst2" type="text" style="CenteredLabelText"/> 332 </object> 333 <object type="image" name="teamBox1t3" size="0 65 100% 100%-50" hidden="true"> 334 <object type="text" name="teamNameHeading1t3" size="15 5 100% 100%" style="LeftTabLabelText"/> 335 <object size="0 30 100% 100%"> 336 <repeat count="8"> 337 <object type="image" name="playerBox1t3p[n]" size="10 0 10 30" hidden="true"> 338 <object name="playerColourBox1t3p[n]" type="image" size="10 4 30 24"/> 339 <object name="playerName1t3p[n]" type="text" size="40 2 208 100%" style="LeftLabelText"/> 340 <object name="civIcon1t3p[n]" type="image" size="208 0 240 32" tooltip_style="sessionToolTip"/> 341 <object name="totalBuildingst3p[n]" type="text" style="CenteredLabelText"/> 342 <object name="houseBuildingst3p[n]" type="text" style="CenteredLabelText"/> 343 <object name="economicBuildingst3p[n]" type="text" style="CenteredLabelText"/> 344 <object name="outpostBuildingst3p[n]" type="text" style="CenteredLabelText"/> 345 <object name="militaryBuildingst3p[n]" type="text" style="CenteredLabelText"/> 346 <object name="fortressBuildingst3p[n]" type="text" style="CenteredLabelText"/> 347 <object name="civCentreBuildingst3p[n]" type="text" style="CenteredLabelText"/> 348 <object name="wonderBuildingst3p[n]" type="text" style="CenteredLabelText"/> 349 </object> 350 </repeat> 351 </object> 352 <object name="teamHeading1t3" type="text" style="LeftTabLabelText"/> 353 <object name="totalBuildingst3" type="text" style="CenteredLabelText"/> 354 <object name="houseBuildingst3" type="text" style="CenteredLabelText"/> 355 <object name="economicBuildingst3" type="text" style="CenteredLabelText"/> 356 <object name="outpostBuildingst3" type="text" style="CenteredLabelText"/> 357 <object name="militaryBuildingst3" type="text" style="CenteredLabelText"/> 358 <object name="fortressBuildingst3" type="text" style="CenteredLabelText"/> 359 <object name="civCentreBuildingst3" type="text" style="CenteredLabelText"/> 360 <object name="wonderBuildingst3" type="text" style="CenteredLabelText"/> 361 </object> 362 363 <object type="image" name="noTeamsBox1" size="0 65 100% 100%-50" hidden="true"> 147 364 <repeat count="8"> 148 365 <object type="image" name="playerBox1[n]" size="10 0 10 30" hidden="true"> 149 <object name="playerColourBox1[n]" type="image" size="10 4 30 24" /> 150 <object name="playerName1[n]" type="text" style="LeftLabelText" size="40 2 208 100%" /> 151 <object name="civIcon1[n]" type="image" size="208 0 240 32" tooltip_style="sessionToolTip"/> 152 <object name="unitsTrained[n]" type="text" style="CenteredLabelText"/> 153 <object name="unitsLost[n]" type="text" style="CenteredLabelText"/> 154 <object name="enemyUnitsKilled[n]" type="text" style="CenteredLabelText"/> 155 <object name="buildingsConstructed[n]" type="text" style="CenteredLabelText"/> 156 <object name="buildingsLost[n]" type="text" style="CenteredLabelText"/> 157 <object name="enemyBuildingsDestroyed[n]" type="text" style="CenteredLabelText"/> 366 <object name="playerColourBox1[n]" type="image" size="10 4 30 24"/> 367 <object name="playerName1[n]" type="text" size="40 2 208 100%" style="LeftLabelText"/> 368 <object name="civIcon1[n]" type="image" size="208 0 240 32" tooltip_style="sessionToolTip"/> 369 <object name="totalBuildings[n]" type="text" style="CenteredLabelText"/> 370 <object name="houseBuildings[n]" type="text" style="CenteredLabelText"/> 371 <object name="economicBuildings[n]" type="text" style="CenteredLabelText"/> 372 <object name="outpostBuildings[n]" type="text" style="CenteredLabelText"/> 373 <object name="militaryBuildings[n]" type="text" style="CenteredLabelText"/> 374 <object name="fortressBuildings[n]" type="text" style="CenteredLabelText"/> 375 <object name="civCentreBuildings[n]" type="text" style="CenteredLabelText"/> 376 <object name="wonderBuildings[n]" type="text" style="CenteredLabelText"/> 158 377 </object> 159 378 </repeat> 160 379 </object> 161 162 380 </object> 163 <object name="conquestPanel" type="image" sprite="ForegroundBody" size="20 120 100%-20 100%-58" hidden="true"> 381 382 <object name="unitsPanel" type="image" sprite="ForegroundBody" size="20 120 100%-20 100%-58" hidden="true"> 164 383 165 384 <object size="0 0 100% 100%-50"> 166 385 <object name="playerName2Heading" type="text" style="LeftTabLabelText"> 167 386 Player name 168 387 </object> 169 <object name=" civCentresBuiltHeading" type="text" style="CenteredTabLabelText">170 Civ centres built388 <object name="unitsHeading" type="text" style="CenteredTabLabelText"> 389 Units Statistics (Trained / Lost / Killed) 171 390 </object> 172 <object name=" enemyCivCentresDestroyedHeading" type="text" style="CenteredTabLabelText">173 Enemy civ centres destroyed391 <object name="totalUnitsHeading" type="text" style="CenteredTabLabelText"> 392 Total 174 393 </object> 175 <object name=" mapExplorationHeading" type="text" style="CenteredTabLabelText">176 Map exploration394 <object name="infantryUnitsHeading" type="text" style="CenteredTabLabelText"> 395 Infantry 177 396 </object> 397 <object name="workerUnitsHeading" type="text" style="CenteredTabLabelText"> 398 Worker 399 </object> 400 <object name="cavalryUnitsHeading" type="text" style="CenteredTabLabelText"> 401 Cavalry 402 </object> 403 <object name="championUnitsHeading" type="text" style="CenteredTabLabelText"> 404 Champion 405 </object> 406 <object name="heroesUnitsHeading" type="text" style="CenteredTabLabelText"> 407 Heroes 408 </object> 409 <object name="navyUnitsHeading" type="text" style="CenteredTabLabelText"> 410 Navy 411 </object> 178 412 </object> 413 414 <object type="image" name="teamBox2t0" size="0 65 100% 100%-50" hidden="true"> 415 <object type="text" name="teamNameHeading2t0" size="15 5 100% 100%" style="LeftTabLabelText"/> 416 <object size="0 30 100% 100%"> 417 <repeat count="8"> 418 <object type="image" name="playerBox2t0p[n]" size="10 0 10 30" hidden="true"> 419 <object name="playerColourBox2t0p[n]" type="image" size="10 4 30 24"/> 420 <object name="playerName2t0p[n]" type="text" size="40 2 208 100%" style="LeftLabelText"/> 421 <object name="civIcon2t0p[n]" type="image" size="208 0 240 32" tooltip_style="sessionToolTip"/> 422 <object name="totalUnitst0p[n]" type="text" style="CenteredLabelText"/> 423 <object name="infantryUnitst0p[n]" type="text" style="CenteredLabelText"/> 424 <object name="workerUnitst0p[n]" type="text" style="CenteredLabelText"/> 425 <object name="cavalryUnitst0p[n]" type="text" style="CenteredLabelText"/> 426 <object name="championUnitst0p[n]" type="text" style="CenteredLabelText"/> 427 <object name="heroesUnitst0p[n]" type="text" style="CenteredLabelText"/> 428 <object name="navyUnitst0p[n]" type="text" style="CenteredLabelText"/> 429 </object> 430 </repeat> 431 </object> 432 <object name="teamHeading2t0" type="text" style="LeftTabLabelText"/> 433 <object name="totalUnitst0" type="text" style="CenteredLabelText"/> 434 <object name="infantryUnitst0" type="text" style="CenteredLabelText"/> 435 <object name="workerUnitst0" type="text" style="CenteredLabelText"/> 436 <object name="cavalryUnitst0" type="text" style="CenteredLabelText"/> 437 <object name="championUnitst0" type="text" style="CenteredLabelText"/> 438 <object name="heroesUnitst0" type="text" style="CenteredLabelText"/> 439 <object name="navyUnitst0" type="text" style="CenteredLabelText"/> 440 </object> 441 <object type="image" name="teamBox2t1" size="0 65 100% 100%-50" hidden="true"> 442 <object type="text" name="teamNameHeading2t1" size="15 5 100% 100%" style="LeftTabLabelText"/> 443 <object size="0 30 100% 100%"> 444 <repeat count="8"> 445 <object type="image" name="playerBox2t1p[n]" size="10 0 10 30" hidden="true"> 446 <object name="playerColourBox2t1p[n]" type="image" size="10 4 30 24"/> 447 <object name="playerName2t1p[n]" type="text" size="40 2 208 100%" style="LeftLabelText"/> 448 <object name="civIcon2t1p[n]" type="image" size="208 0 240 32" tooltip_style="sessionToolTip"/> 449 <object name="totalUnitst1p[n]" type="text" style="CenteredLabelText"/> 450 <object name="infantryUnitst1p[n]" type="text" style="CenteredLabelText"/> 451 <object name="workerUnitst1p[n]" type="text" style="CenteredLabelText"/> 452 <object name="cavalryUnitst1p[n]" type="text" style="CenteredLabelText"/> 453 <object name="championUnitst1p[n]" type="text" style="CenteredLabelText"/> 454 <object name="heroesUnitst1p[n]" type="text" style="CenteredLabelText"/> 455 <object name="navyUnitst1p[n]" type="text" style="CenteredLabelText"/> 456 </object> 457 </repeat> 458 </object> 459 <object name="teamHeading2t1" type="text" style="LeftTabLabelText"/> 460 <object name="totalUnitst1" type="text" style="CenteredLabelText"/> 461 <object name="infantryUnitst1" type="text" style="CenteredLabelText"/> 462 <object name="workerUnitst1" type="text" style="CenteredLabelText"/> 463 <object name="cavalryUnitst1" type="text" style="CenteredLabelText"/> 464 <object name="championUnitst1" type="text" style="CenteredLabelText"/> 465 <object name="heroesUnitst1" type="text" style="CenteredLabelText"/> 466 <object name="navyUnitst1" type="text" style="CenteredLabelText"/> 467 </object> 468 <object type="image" name="teamBox2t2" size="0 65 100% 100%-50" hidden="true"> 469 <object type="text" name="teamNameHeading2t2" size="15 5 100% 100%" style="LeftTabLabelText"/> 470 <object size="0 30 100% 100%"> 471 <repeat count="8"> 472 <object type="image" name="playerBox2t2p[n]" size="10 0 10 30" hidden="true"> 473 <object name="playerColourBox2t2p[n]" type="image" size="10 4 30 24"/> 474 <object name="playerName2t2p[n]" type="text" size="40 2 208 100%" style="LeftLabelText"/> 475 <object name="civIcon2t2p[n]" type="image" size="208 0 240 32" tooltip_style="sessionToolTip"/> 476 <object name="totalUnitst2p[n]" type="text" style="CenteredLabelText"/> 477 <object name="infantryUnitst2p[n]" type="text" style="CenteredLabelText"/> 478 <object name="workerUnitst2p[n]" type="text" style="CenteredLabelText"/> 479 <object name="cavalryUnitst2p[n]" type="text" style="CenteredLabelText"/> 480 <object name="championUnitst2p[n]" type="text" style="CenteredLabelText"/> 481 <object name="heroesUnitst2p[n]" type="text" style="CenteredLabelText"/> 482 <object name="navyUnitst2p[n]" type="text" style="CenteredLabelText"/> 483 </object> 484 </repeat> 485 </object> 486 <object name="teamHeading2t2" type="text" style="LeftTabLabelText"/> 487 <object name="totalUnitst2" type="text" style="CenteredLabelText"/> 488 <object name="infantryUnitst2" type="text" style="CenteredLabelText"/> 489 <object name="workerUnitst2" type="text" style="CenteredLabelText"/> 490 <object name="cavalryUnitst2" type="text" style="CenteredLabelText"/> 491 <object name="championUnitst2" type="text" style="CenteredLabelText"/> 492 <object name="heroesUnitst2" type="text" style="CenteredLabelText"/> 493 <object name="navyUnitst2" type="text" style="CenteredLabelText"/> 494 </object> 495 <object type="image" name="teamBox2t3" size="0 65 100% 100%-50" hidden="true"> 496 <object type="text" name="teamNameHeading2t3" size="15 5 100% 100%" style="LeftTabLabelText"/> 497 <object size="0 30 100% 100%"> 498 <repeat count="8"> 499 <object type="image" name="playerBox2t3p[n]" size="10 0 10 30" hidden="true"> 500 <object name="playerColourBox2t3p[n]" type="image" size="10 4 30 24"/> 501 <object name="playerName2t3p[n]" type="text" size="40 2 208 100%" style="LeftLabelText"/> 502 <object name="civIcon2t3p[n]" type="image" size="208 0 240 32" tooltip_style="sessionToolTip"/> 503 <object name="totalUnitst3p[n]" type="text" style="CenteredLabelText"/> 504 <object name="infantryUnitst3p[n]" type="text" style="CenteredLabelText"/> 505 <object name="workerUnitst3p[n]" type="text" style="CenteredLabelText"/> 506 <object name="cavalryUnitst3p[n]" type="text" style="CenteredLabelText"/> 507 <object name="championUnitst3p[n]" type="text" style="CenteredLabelText"/> 508 <object name="heroesUnitst3p[n]" type="text" style="CenteredLabelText"/> 509 <object name="navyUnitst3p[n]" type="text" style="CenteredLabelText"/> 510 </object> 511 </repeat> 512 </object> 513 <object name="teamHeading2t3" type="text" style="LeftTabLabelText"/> 514 <object name="totalUnitst3" type="text" style="CenteredLabelText"/> 515 <object name="infantryUnitst3" type="text" style="CenteredLabelText"/> 516 <object name="workerUnitst3" type="text" style="CenteredLabelText"/> 517 <object name="cavalryUnitst3" type="text" style="CenteredLabelText"/> 518 <object name="championUnitst3" type="text" style="CenteredLabelText"/> 519 <object name="heroesUnitst3" type="text" style="CenteredLabelText"/> 520 <object name="navyUnitst3" type="text" style="CenteredLabelText"/> 521 </object> 179 522 180 <object size="0 65 100% 100%-50">523 <object type="image" name="noTeamsBox2" size="0 65 100% 100%-50" hidden="true"> 181 524 <repeat count="8"> 182 525 <object type="image" name="playerBox2[n]" size="10 0 10 30" hidden="true"> 183 <object name="playerColourBox2[n]" type="image" size="10 4 30 24" /> 184 <object name="playerName2[n]" type="text" style="LeftLabelText" size="40 2 208 100%" /> 185 <object name="civIcon2[n]" type="image" size="208 0 240 32" tooltip_style="sessionToolTip"/> 186 <object name="civCentresBuilt[n]" type="text" style="CenteredLabelText"/> 187 <object name="enemyCivCentresDestroyed[n]" type="text" style="CenteredLabelText"/> 188 <object name="mapExploration[n]" type="text" style="CenteredLabelText"/> 526 <object name="playerColourBox2[n]" type="image" size="10 4 30 24" /> 527 <object name="playerName2[n]" type="text" size="40 2 208 100%" style="LeftLabelText"/> 528 <object name="civIcon2[n]" type="image" size="208 0 240 32" tooltip_style="sessionToolTip"/> 529 <object name="totalUnits[n]" type="text" style="CenteredLabelText"/> 530 <object name="infantryUnits[n]" type="text" style="CenteredLabelText"/> 531 <object name="workerUnits[n]" type="text" style="CenteredLabelText"/> 532 <object name="cavalryUnits[n]" type="text" style="CenteredLabelText"/> 533 <object name="championUnits[n]" type="text" style="CenteredLabelText"/> 534 <object name="heroesUnits[n]" type="text" style="CenteredLabelText"/> 535 <object name="navyUnits[n]" type="text" style="CenteredLabelText"/> 189 536 </object> 190 537 </repeat> 191 538 </object> 192 193 539 </object> 540 194 541 <object name="resourcesPanel" type="image" sprite="ForegroundBody" size="20 120 100%-20 100%-58" hidden="true"> 195 542 196 543 <object size="0 0 100% 100%-50"> … … 212 559 <object name="metalGatheredHeading" type="text" style="CenteredTabLabelText"> 213 560 Metal 214 561 </object> 215 <object name=" vegetarianRatioHeading" type="text" style="CenteredTabLabelText">216 Vegetarian ratio562 <object name="totalGatheredHeading" type="text" style="CenteredTabLabelText"> 563 Total 217 564 </object> 218 565 <object name="treasuresCollectedHeading" type="text" style="CenteredTabLabelText"> 219 566 Treasures collected … … 223 570 </object> 224 571 </object> 225 572 226 <object size="0 65 100% 100%-50"> 573 <object type="image" name="teamBox3t0" size="0 65 100% 100%-50" hidden="true"> 574 <object type="text" name="teamNameHeading3t0" size="15 5 100% 100%" style="LeftTabLabelText"/> 575 <object size="0 30 100% 100%"> 576 <repeat count="8"> 577 <object type="image" name="playerBox3t0p[n]" size="10 0 10 30" hidden="true"> 578 <object name="playerColourBox3t0p[n]" type="image" size="10 4 30 24"/> 579 <object name="playerName3t0p[n]" type="text" size="40 2 208 100%" style="LeftLabelText"/> 580 <object name="civIcon3t0p[n]" type="image" size="208 0 240 32" tooltip_style="sessionToolTip"/> 581 <object name="foodGatheredt0p[n]" type="text" style="CenteredLabelText"/> 582 <object name="woodGatheredt0p[n]" type="text" style="CenteredLabelText"/> 583 <object name="stoneGatheredt0p[n]" type="text" style="CenteredLabelText"/> 584 <object name="metalGatheredt0p[n]" type="text" style="CenteredLabelText"/> 585 <object name="totalGatheredt0p[n]" type="text" style="CenteredLabelText"/> 586 <object name="treasuresCollectedt0p[n]" type="text" style="CenteredLabelText"/> 587 <object name="resourcesTributedt0p[n]" type="text" style="CenteredLabelText"/> 588 </object> 589 </repeat> 590 </object> 591 <object name="teamHeading3t0" type="text" style="LeftTabLabelText"/> 592 <object name="foodGatheredt0" type="text" style="CenteredLabelText"/> 593 <object name="woodGatheredt0" type="text" style="CenteredLabelText"/> 594 <object name="stoneGatheredt0" type="text" style="CenteredLabelText"/> 595 <object name="metalGatheredt0" type="text" style="CenteredLabelText"/> 596 <object name="totalGatheredt0" type="text" style="CenteredLabelText"/> 597 <object name="treasuresCollectedt0" type="text" style="CenteredLabelText"/> 598 <object name="resourcesTributedt0" type="text" style="CenteredLabelText"/> 599 </object> 600 <object type="image" name="teamBox3t1" size="0 65 100% 100%-50" hidden="true"> 601 <object type="text" name="teamNameHeading3t1" size="15 5 100% 100%" style="LeftTabLabelText"/> 602 <object size="0 30 100% 100%"> 603 <repeat count="8"> 604 <object type="image" name="playerBox3t1p[n]" size="10 0 10 30" hidden="true"> 605 <object name="playerColourBox3t1p[n]" type="image" size="10 4 30 24"/> 606 <object name="playerName3t1p[n]" type="text" size="40 2 208 100%" style="LeftLabelText"/> 607 <object name="civIcon3t1p[n]" type="image" size="208 0 240 32" tooltip_style="sessionToolTip"/> 608 <object name="foodGatheredt1p[n]" type="text" style="CenteredLabelText"/> 609 <object name="woodGatheredt1p[n]" type="text" style="CenteredLabelText"/> 610 <object name="stoneGatheredt1p[n]" type="text" style="CenteredLabelText"/> 611 <object name="metalGatheredt1p[n]" type="text" style="CenteredLabelText"/> 612 <object name="totalGatheredt1p[n]" type="text" style="CenteredLabelText"/> 613 <object name="treasuresCollectedt1p[n]" type="text" style="CenteredLabelText"/> 614 <object name="resourcesTributedt1p[n]" type="text" style="CenteredLabelText"/> 615 </object> 616 </repeat> 617 </object> 618 <object name="teamHeading3t1" type="text" style="LeftTabLabelText"/> 619 <object name="foodGatheredt1" type="text" style="CenteredLabelText"/> 620 <object name="woodGatheredt1" type="text" style="CenteredLabelText"/> 621 <object name="stoneGatheredt1" type="text" style="CenteredLabelText"/> 622 <object name="metalGatheredt1" type="text" style="CenteredLabelText"/> 623 <object name="totalGatheredt1" type="text" style="CenteredLabelText"/> 624 <object name="treasuresCollectedt1" type="text" style="CenteredLabelText"/> 625 <object name="resourcesTributedt1" type="text" style="CenteredLabelText"/> 626 </object> 627 <object type="image" name="teamBox3t2" size="0 65 100% 100%-50" hidden="true"> 628 <object type="text" name="teamNameHeading3t2" size="15 5 100% 100%" style="LeftTabLabelText"/> 629 <object size="0 30 100% 100%"> 630 <repeat count="8"> 631 <object type="image" name="playerBox3t2p[n]" size="10 0 10 30" hidden="true"> 632 <object name="playerColourBox3t2p[n]" type="image" size="10 4 30 24"/> 633 <object name="playerName3t2p[n]" type="text" size="40 2 208 100%" style="LeftLabelText"/> 634 <object name="civIcon3t2p[n]" type="image" size="208 0 240 32" tooltip_style="sessionToolTip"/> 635 <object name="foodGatheredt2p[n]" type="text" style="CenteredLabelText"/> 636 <object name="woodGatheredt2p[n]" type="text" style="CenteredLabelText"/> 637 <object name="stoneGatheredt2p[n]" type="text" style="CenteredLabelText"/> 638 <object name="metalGatheredt2p[n]" type="text" style="CenteredLabelText"/> 639 <object name="totalGatheredt2p[n]" type="text" style="CenteredLabelText"/> 640 <object name="treasuresCollectedt2p[n]" type="text" style="CenteredLabelText"/> 641 <object name="resourcesTributedt2p[n]" type="text" style="CenteredLabelText"/> 642 </object> 643 </repeat> 644 </object> 645 <object name="teamHeading3t2" type="text" style="LeftTabLabelText"/> 646 <object name="foodGatheredt2" type="text" style="CenteredLabelText"/> 647 <object name="woodGatheredt2" type="text" style="CenteredLabelText"/> 648 <object name="stoneGatheredt2" type="text" style="CenteredLabelText"/> 649 <object name="metalGatheredt2" type="text" style="CenteredLabelText"/> 650 <object name="totalGatheredt2" type="text" style="CenteredLabelText"/> 651 <object name="treasuresCollectedt2" type="text" style="CenteredLabelText"/> 652 <object name="resourcesTributedt2" type="text" style="CenteredLabelText"/> 653 </object> 654 <object type="image" name="teamBox3t3" size="0 65 100% 100%-50" hidden="true"> 655 <object type="text" name="teamNameHeading3t3" size="15 5 100% 100%" style="LeftTabLabelText"/> 656 <object size="0 30 100% 100%"> 657 <repeat count="8"> 658 <object type="image" name="playerBox3t3p[n]" size="10 0 10 30" hidden="true"> 659 <object name="playerColourBox3t3p[n]" type="image" size="10 4 30 24"/> 660 <object name="playerName3t3p[n]" type="text" size="40 2 208 100%" style="LeftLabelText"/> 661 <object name="civIcon3t3p[n]" type="image" size="208 0 240 32" tooltip_style="sessionToolTip"/> 662 <object name="foodGatheredt3p[n]" type="text" style="CenteredLabelText"/> 663 <object name="woodGatheredt3p[n]" type="text" style="CenteredLabelText"/> 664 <object name="stoneGatheredt3p[n]" type="text" style="CenteredLabelText"/> 665 <object name="metalGatheredt3p[n]" type="text" style="CenteredLabelText"/> 666 <object name="totalGatheredt3p[n]" type="text" style="CenteredLabelText"/> 667 <object name="treasuresCollectedt3p[n]" type="text" style="CenteredLabelText"/> 668 <object name="resourcesTributedt3p[n]" type="text" style="CenteredLabelText"/> 669 </object> 670 </repeat> 671 </object> 672 <object name="teamHeading3t3" type="text" style="LeftTabLabelText"/> 673 <object name="foodGatheredt3" type="text" style="CenteredLabelText"/> 674 <object name="woodGatheredt3" type="text" style="CenteredLabelText"/> 675 <object name="stoneGatheredt3" type="text" style="CenteredLabelText"/> 676 <object name="metalGatheredt3" type="text" style="CenteredLabelText"/> 677 <object name="totalGatheredt3" type="text" style="CenteredLabelText"/> 678 <object name="treasuresCollectedt3" type="text" style="CenteredLabelText"/> 679 <object name="resourcesTributedt3" type="text" style="CenteredLabelText"/> 680 </object> 681 682 <object type="image" name="noTeamsBox3" size="0 65 100% 100%-50" hidden="true"> 227 683 <repeat count="8"> 228 684 <object type="image" name="playerBox3[n]" size="10 0 10 30" hidden="true"> 229 <object name="playerColourBox3[n]" 230 <object name="playerName3[n]" type="text" style="LeftLabelText" size="40 2 208 100%"/>231 <object name="civIcon3[n]" 232 <object name="foodGathered[n]" type="text"style="CenteredLabelText"/>233 <object name="woodGathered[n]" type="text"style="CenteredLabelText"/>234 <object name="stoneGathered[n]" type="text"style="CenteredLabelText" />235 <object name="metalGathered[n]" type="text"style="CenteredLabelText"/>236 <object name=" vegetarianRatio[n]" type="text"style="CenteredLabelText"/>237 <object name="treasuresCollected[n]" type="text"style="CenteredLabelText"/>238 <object name="resourcesTributed[n]" type="text"style="CenteredLabelText"/>685 <object name="playerColourBox3[n]" type="image" size="10 4 30 24" /> 686 <object name="playerName3[n]" type="text" size="40 2 208 100%" style="LeftLabelText"/> 687 <object name="civIcon3[n]" type="image" size="208 0 240 32" tooltip_style="sessionToolTip"/> 688 <object name="foodGathered[n]" type="text" style="CenteredLabelText"/> 689 <object name="woodGathered[n]" type="text" style="CenteredLabelText"/> 690 <object name="stoneGathered[n]" type="text" style="CenteredLabelText" /> 691 <object name="metalGathered[n]" type="text" style="CenteredLabelText"/> 692 <object name="totalGathered[n]" type="text" style="CenteredLabelText"/> 693 <object name="treasuresCollected[n]" type="text" style="CenteredLabelText"/> 694 <object name="resourcesTributed[n]" type="text" style="CenteredLabelText"/> 239 695 </object> 240 696 </repeat> 241 697 </object> 242 243 698 </object> 699 244 700 <object name="marketPanel" type="image" sprite="ForegroundBody" size="20 120 100%-20 100%-58" hidden="true"> 245 701 246 702 <object size="0 0 100% 100%-50"> … … 266 722 Trade income 267 723 </object> 268 724 </object> 269 270 <object size="0 65 100% 100%-50"> 725 726 <object type="image" name="teamBox4t0" size="0 65 100% 100%-50" hidden="true"> 727 <object type="text" name="teamNameHeading4t0" size="15 5 100% 100%" style="LeftTabLabelText"/> 728 <object size="0 30 100% 100%"> 729 <repeat count="8"> 730 <object type="image" name="playerBox4t0p[n]" size="10 0 10 30" hidden="true"> 731 <object name="playerColourBox4t0p[n]" type="image" size="10 4 30 24"/> 732 <object name="playerName4t0p[n]" type="text" size="40 2 208 100%" style="LeftLabelText"/> 733 <object name="civIcon4t0p[n]" type="image" size="208 0 240 32" tooltip_style="sessionToolTip"/> 734 <object name="exchangedFoodt0p[n]" type="text" style="CenteredLabelText"/> 735 <object name="exchangedWoodt0p[n]" type="text" style="CenteredLabelText"/> 736 <object name="exchangedStonet0p[n]" type="text" style="CenteredLabelText"/> 737 <object name="exchangedMetalt0p[n]" type="text" style="CenteredLabelText"/> 738 <object name="barterEfficiencyt0p[n]" type="text" style="CenteredLabelText"/> 739 <object name="tradeIncomet0p[n]" type="text" style="CenteredLabelText"/> 740 </object> 741 </repeat> 742 </object> 743 <object name="teamHeading4t0" type="text" style="LeftTabLabelText"/> 744 <object name="exchangedFoodt0" type="text" style="CenteredLabelText"/> 745 <object name="exchangedWoodt0" type="text" style="CenteredLabelText"/> 746 <object name="exchangedStonet0" type="text" style="CenteredLabelText"/> 747 <object name="exchangedMetalt0" type="text" style="CenteredLabelText"/> 748 <object name="barterEfficiencyt0" type="text" style="CenteredLabelText"/> 749 <object name="tradeIncomet0" type="text" style="CenteredLabelText"/> 750 </object> 751 <object type="image" name="teamBox4t1" size="0 65 100% 100%-50" hidden="true"> 752 <object type="text" name="teamNameHeading4t1" size="15 5 100% 100%" style="LeftTabLabelText"/> 753 <object size="0 30 100% 100%"> 754 <repeat count="8"> 755 <object type="image" name="playerBox4t1p[n]" size="10 0 10 30" hidden="true"> 756 <object name="playerColourBox4t1p[n]" type="image" size="10 4 30 24"/> 757 <object name="playerName4t1p[n]" type="text" size="40 2 208 100%" style="LeftLabelText"/> 758 <object name="civIcon4t1p[n]" type="image" size="208 0 240 32" tooltip_style="sessionToolTip"/> 759 <object name="exchangedFoodt1p[n]" type="text" style="CenteredLabelText"/> 760 <object name="exchangedWoodt1p[n]" type="text" style="CenteredLabelText"/> 761 <object name="exchangedStonet1p[n]" type="text" style="CenteredLabelText"/> 762 <object name="exchangedMetalt1p[n]" type="text" style="CenteredLabelText"/> 763 <object name="barterEfficiencyt1p[n]" type="text" style="CenteredLabelText"/> 764 <object name="tradeIncomet1p[n]" type="text" style="CenteredLabelText"/> 765 </object> 766 </repeat> 767 </object> 768 <object name="teamHeading4t1" type="text" style="LeftTabLabelText"/> 769 <object name="exchangedFoodt1" type="text" style="CenteredLabelText"/> 770 <object name="exchangedWoodt1" type="text" style="CenteredLabelText"/> 771 <object name="exchangedStonet1" type="text" style="CenteredLabelText"/> 772 <object name="exchangedMetalt1" type="text" style="CenteredLabelText"/> 773 <object name="barterEfficiencyt1" type="text" style="CenteredLabelText"/> 774 <object name="tradeIncomet1" type="text" style="CenteredLabelText"/> 775 </object> 776 <object type="image" name="teamBox4t2" size="0 65 100% 100%-50" hidden="true"> 777 <object type="text" name="teamNameHeading4t2" size="15 5 100% 100%" style="LeftTabLabelText"/> 778 <object size="0 30 100% 100%"> 779 <repeat count="8"> 780 <object type="image" name="playerBox4t2p[n]" size="10 0 10 30" hidden="true"> 781 <object name="playerColourBox4t2p[n]" type="image" size="10 4 30 24"/> 782 <object name="playerName4t2p[n]" type="text" size="40 2 208 100%" style="LeftLabelText"/> 783 <object name="civIcon4t2p[n]" type="image" size="208 0 240 32" tooltip_style="sessionToolTip"/> 784 <object name="exchangedFoodt2p[n]" type="text" style="CenteredLabelText"/> 785 <object name="exchangedWoodt2p[n]" type="text" style="CenteredLabelText"/> 786 <object name="exchangedStonet2p[n]" type="text" style="CenteredLabelText"/> 787 <object name="exchangedMetalt2p[n]" type="text" style="CenteredLabelText"/> 788 <object name="barterEfficiencyt2p[n]" type="text" style="CenteredLabelText"/> 789 <object name="tradeIncomet2p[n]" type="text" style="CenteredLabelText"/> 790 </object> 791 </repeat> 792 </object> 793 <object name="teamHeading4t2" type="text" style="LeftTabLabelText"/> 794 <object name="exchangedFoodt2" type="text" style="CenteredLabelText"/> 795 <object name="exchangedWoodt2" type="text" style="CenteredLabelText"/> 796 <object name="exchangedStonet2" type="text" style="CenteredLabelText"/> 797 <object name="exchangedMetalt2" type="text" style="CenteredLabelText"/> 798 <object name="barterEfficiencyt2" type="text" style="CenteredLabelText"/> 799 <object name="tradeIncomet2" type="text" style="CenteredLabelText"/> 800 </object> 801 <object type="image" name="teamBox4t3" size="0 65 100% 100%-50" hidden="true"> 802 <object type="text" name="teamNameHeading4t3" size="15 5 100% 100%" style="LeftTabLabelText"/> 803 <object size="0 30 100% 100%"> 804 <repeat count="8"> 805 <object type="image" name="playerBox4t3p[n]" size="10 0 10 30" hidden="true"> 806 <object name="playerColourBox4t3p[n]" type="image" size="10 4 30 24"/> 807 <object name="playerName4t3p[n]" type="text" size="40 2 208 100%" style="LeftLabelText"/> 808 <object name="civIcon4t3p[n]" type="image" size="208 0 240 32" tooltip_style="sessionToolTip"/> 809 <object name="exchangedFoodt3p[n]" type="text" style="CenteredLabelText"/> 810 <object name="exchangedWoodt3p[n]" type="text" style="CenteredLabelText"/> 811 <object name="exchangedStonet3p[n]" type="text" style="CenteredLabelText"/> 812 <object name="exchangedMetalt3p[n]" type="text" style="CenteredLabelText"/> 813 <object name="barterEfficiencyt3p[n]" type="text" style="CenteredLabelText"/> 814 <object name="tradeIncomet3p[n]" type="text" style="CenteredLabelText"/> 815 </object> 816 </repeat> 817 </object> 818 <object name="teamHeading4t3" type="text" style="LeftTabLabelText"/> 819 <object name="exchangedFoodt3" type="text" style="CenteredLabelText"/> 820 <object name="exchangedWoodt3" type="text" style="CenteredLabelText"/> 821 <object name="exchangedStonet3" type="text" style="CenteredLabelText"/> 822 <object name="exchangedMetalt3" type="text" style="CenteredLabelText"/> 823 <object name="barterEfficiencyt3" type="text" style="CenteredLabelText"/> 824 <object name="tradeIncomet3" type="text" style="CenteredLabelText"/> 825 </object> 826 827 <object type="image" name="noTeamsBox4" size="0 65 100% 100%-50" hidden="true"> 271 828 <repeat count="8"> 272 829 <object type="image" name="playerBox4[n]" size="10 0 10 30" hidden="true"> 273 <object name="playerColourBox4[n]" type="image" size="10 4 30 24"/>274 <object name="playerName4[n]" type="text" style="LeftLabelText" size="40 2 208 100%"/>275 <object name="civIcon4[n]" type="image" size="208 0 240 32"tooltip_style="sessionToolTip"/>276 <object name="exchangedFood[n]" type="text"style="CenteredLabelText"/>277 <object name="exchangedWood[n]" type="text"style="CenteredLabelText"/>278 <object name="exchangedStone[n]" type="text"style="CenteredLabelText"/>279 <object name="exchangedMetal[n]" type="text"style="CenteredLabelText"/>280 <object name="barterEfficiency[n]" type="text"style="CenteredLabelText"/>281 <object name="tradeIncome[n]" type="text"style="CenteredLabelText"/>830 <object name="playerColourBox4[n]" type="image" size="10 4 30 24"/> 831 <object name="playerName4[n]" type="text" size="40 2 208 100%" style="LeftLabelText"/> 832 <object name="civIcon4[n]" type="image" size="208 0 240 32" tooltip_style="sessionToolTip"/> 833 <object name="exchangedFood[n]" type="text" style="CenteredLabelText"/> 834 <object name="exchangedWood[n]" type="text" style="CenteredLabelText"/> 835 <object name="exchangedStone[n]" type="text" style="CenteredLabelText"/> 836 <object name="exchangedMetal[n]" type="text" style="CenteredLabelText"/> 837 <object name="barterEfficiency[n]" type="text" style="CenteredLabelText"/> 838 <object name="tradeIncome[n]" type="text" style="CenteredLabelText"/> 282 839 </object> 283 840 </repeat> 284 841 </object> 842 </object> 285 843 844 <object name="miscPanel" type="image" sprite="ForegroundBody" size="20 120 100%-20 100%-58" hidden="true"> 845 846 <object size="0 0 100% 100%-50"> 847 <object name="playerName5Heading" type="text" style="LeftTabLabelText"> 848 Player name 849 </object> 850 <object name="vegetarianRatioHeading" type="text" style="CenteredTabLabelText"> 851 Vegetarian ratio 852 </object> 853 <object name="feminisationHeading" type="text" style="CenteredTabLabelText"> 854 Feminisation 855 </object> 856 <object name="killDeathRatioHeading" type="text" style="CenteredTabLabelText"> 857 Kill / Death ratio 858 </object> 859 <object name="mapExplorationHeading" type="text" style="CenteredTabLabelText"> 860 Map exploration 861 </object> 862 </object> 863 864 <object type="image" name="teamBox5t0" size="0 65 100% 100%-50" hidden="true"> 865 <object type="text" name="teamNameHeading5t0" size="15 5 100% 100%" style="LeftTabLabelText"/> 866 <object size="0 30 100% 100%"> 867 <repeat count="8"> 868 <object type="image" name="playerBox5t0p[n]" size="10 0 10 30" hidden="true"> 869 <object name="playerColourBox5t0p[n]" type="image" size="10 4 30 24"/> 870 <object name="playerName5t0p[n]" type="text" size="40 2 208 100%" style="LeftLabelText"/> 871 <object name="civIcon5t0p[n]" type="image" size="208 0 240 32" tooltip_style="sessionToolTip"/> 872 <object name="vegetarianRatiot0p[n]" type="text" style="CenteredLabelText"/> 873 <object name="feminisationt0p[n]" type="text" style="CenteredLabelText"/> 874 <object name="killDeathRatiot0p[n]" type="text" style="CenteredLabelText"/> 875 <object name="mapExplorationt0p[n]" type="text" style="CenteredLabelText"/> 876 </object> 877 </repeat> 878 </object> 879 <object name="teamHeading5t0" type="text" style="LeftTabLabelText"/> 880 <object name="vegetarianRatiot0" type="text" style="CenteredLabelText"/> 881 <object name="feminisationt0" type="text" style="CenteredLabelText"/> 882 <object name="killDeathRatiot0" type="text" style="CenteredLabelText"/> 883 <object name="mapExplorationt0" type="text" style="CenteredLabelText"/> 884 </object> 885 <object type="image" name="teamBox5t1" size="0 65 100% 100%-50" hidden="true"> 886 <object type="text" name="teamNameHeading5t1" size="15 5 100% 100%" style="LeftTabLabelText"/> 887 <object size="0 30 100% 100%"> 888 <repeat count="8"> 889 <object type="image" name="playerBox5t1p[n]" size="10 0 10 30" hidden="true"> 890 <object name="playerColourBox5t1p[n]" type="image" size="10 4 30 24"/> 891 <object name="playerName5t1p[n]" type="text" size="40 2 208 100%" style="LeftLabelText"/> 892 <object name="civIcon5t1p[n]" type="image" size="208 0 240 32" tooltip_style="sessionToolTip"/> 893 <object name="vegetarianRatiot1p[n]" type="text" style="CenteredLabelText"/> 894 <object name="feminisationt1p[n]" type="text" style="CenteredLabelText"/> 895 <object name="killDeathRatiot1p[n]" type="text" style="CenteredLabelText"/> 896 <object name="mapExplorationt1p[n]" type="text" style="CenteredLabelText"/> 897 </object> 898 </repeat> 899 </object> 900 <object name="teamHeading5t1" type="text" style="LeftTabLabelText"/> 901 <object name="vegetarianRatiot1" type="text" style="CenteredLabelText"/> 902 <object name="feminisationt1" type="text" style="CenteredLabelText"/> 903 <object name="killDeathRatiot1" type="text" style="CenteredLabelText"/> 904 <object name="mapExplorationt1" type="text" style="CenteredLabelText"/> 905 </object> 906 <object type="image" name="teamBox5t2" size="0 65 100% 100%-50" hidden="true"> 907 <object type="text" name="teamNameHeading5t2" size="15 5 100% 100%" style="LeftTabLabelText"/> 908 <object size="0 30 100% 100%"> 909 <repeat count="8"> 910 <object type="image" name="playerBox5t2p[n]" size="10 0 10 30" hidden="true"> 911 <object name="playerColourBox5t2p[n]" type="image" size="10 4 30 24"/> 912 <object name="playerName5t2p[n]" type="text" size="40 2 208 100%" style="LeftLabelText"/> 913 <object name="civIcon5t2p[n]" type="image" size="208 0 240 32" tooltip_style="sessionToolTip"/> 914 <object name="vegetarianRatiot2p[n]" type="text" style="CenteredLabelText"/> 915 <object name="feminisationt2p[n]" type="text" style="CenteredLabelText"/> 916 <object name="killDeathRatiot2p[n]" type="text" style="CenteredLabelText"/> 917 <object name="mapExplorationt2p[n]" type="text" style="CenteredLabelText"/> 918 </object> 919 </repeat> 920 </object> 921 <object name="teamHeading5t2" type="text" style="LeftTabLabelText"/> 922 <object name="vegetarianRatiot2" type="text" style="CenteredLabelText"/> 923 <object name="feminisationt2" type="text" style="CenteredLabelText"/> 924 <object name="killDeathRatiot2" type="text" style="CenteredLabelText"/> 925 <object name="mapExplorationt2" type="text" style="CenteredLabelText"/> 926 </object> 927 <object type="image" name="teamBox5t3" size="0 65 100% 100%-50" hidden="true"> 928 <object type="text" name="teamNameHeading5t3" size="15 5 100% 100%" style="LeftTabLabelText"/> 929 <object size="0 30 100% 100%"> 930 <repeat count="8"> 931 <object type="image" name="playerBox5t3p[n]" size="10 0 10 30" hidden="true"> 932 <object name="playerColourBox5t3p[n]" type="image" size="10 4 30 24"/> 933 <object name="playerName5t3p[n]" type="text" size="40 2 208 100%" style="LeftLabelText"/> 934 <object name="civIcon5t3p[n]" type="image" size="208 0 240 32" tooltip_style="sessionToolTip"/> 935 <object name="vegetarianRatiot3p[n]" type="text" style="CenteredLabelText"/> 936 <object name="feminisationt3p[n]" type="text" style="CenteredLabelText"/> 937 <object name="killDeathRatiot3p[n]" type="text" style="CenteredLabelText"/> 938 <object name="mapExplorationt3p[n]" type="text" style="CenteredLabelText"/> 939 </object> 940 </repeat> 941 </object> 942 <object name="teamHeading5t3" type="text" style="LeftTabLabelText"/> 943 <object name="vegetarianRatiot3" type="text" style="CenteredLabelText"/> 944 <object name="feminisationt3" type="text" style="CenteredLabelText"/> 945 <object name="killDeathRatiot3" type="text" style="CenteredLabelText"/> 946 <object name="mapExplorationt3" type="text" style="CenteredLabelText"/> 947 </object> 948 949 <object type="image" name="noTeamsBox5" size="0 65 100% 100%-50" hidden="true"> 950 <repeat count="8"> 951 <object type="image" name="playerBox5[n]" size="10 0 10 30" hidden="true"> 952 <object name="playerColourBox5[n]" type="image" size="10 4 30 24"/> 953 <object name="playerName5[n]" type="text" size="40 2 208 100%" style="LeftLabelText"/> 954 <object name="civIcon5[n]" type="image" size="208 0 240 32" tooltip_style="sessionToolTip"/> 955 <object name="vegetarianRatio[n]" type="text" style="CenteredLabelText"/> 956 <object name="feminisation[n]" type="text" style="CenteredLabelText"/> 957 <object name="killDeathRatio[n]" type="text" style="CenteredLabelText"/> 958 <object name="mapExploration[n]" type="text" style="CenteredLabelText"/> 959 </object> 960 </repeat> 961 </object> 286 962 </object> 287 963 288 964 <object type="button" style="StoneButton" size="100%-164 100%-52 100%-24 100%-24"> 289 965 Continue 290 966 <action on="Press"><![CDATA[ -
binaries/data/mods/public/simulation/components/Foundation.js
312 312 // ---------------------------------------------------------------------- 313 313 314 314 var cmpPlayerStatisticsTracker = QueryOwnerInterface(this.entity, IID_StatisticsTracker); 315 cmpPlayerStatisticsTracker.IncreaseConstructedBuildingsCounter(); 316 317 var cmpIdentity = Engine.QueryInterface(building, IID_Identity); 318 if (cmpIdentity.GetClassesList().indexOf("CivCentre") != -1) 319 cmpPlayerStatisticsTracker.IncreaseBuiltCivCentresCounter(); 315 cmpPlayerStatisticsTracker.IncreaseConstructedBuildingsCounter(building); 320 316 321 317 var cmpHealth = Engine.QueryInterface(this.entity, IID_Health); 322 318 var cmpBuildingHealth = Engine.QueryInterface(building, IID_Health); -
binaries/data/mods/public/simulation/components/ProductionQueue.js
516 516 } 517 517 518 518 var cmpPlayerStatisticsTracker = QueryOwnerInterface(this.entity, IID_StatisticsTracker); 519 cmpPlayerStatisticsTracker.IncreaseTrainedUnitsCounter( );519 cmpPlayerStatisticsTracker.IncreaseTrainedUnitsCounter(ent); 520 520 521 521 // Play a sound, but only for the first in the batch (to avoid nasty phasing effects) 522 522 if (createdEnts.length == 0) -
binaries/data/mods/public/simulation/components/StatisticsTracker.js
6 6 StatisticsTracker.prototype.Init = function() 7 7 { 8 8 // units 9 this.unitsTrained = 0; 10 this.unitsLost = 0; 9 this.unitsClasses = [ 10 "Infantry", 11 "Worker", 12 "Female", 13 "Cavalry", 14 "Champion", 15 "Hero", 16 "Ship" 17 ]; 18 this.unitsTrained = { 19 "Infantry": 0, 20 "Worker": 0, 21 "Female": 0, 22 "Cavalry": 0, 23 "Champion": 0, 24 "Hero": 0, 25 "Ship": 0, 26 "total": 0 27 }; 28 this.unitsLost = { 29 "Infantry": 0, 30 "Worker": 0, 31 "Female": 0, 32 "Cavalry": 0, 33 "Champion": 0, 34 "Hero": 0, 35 "Ship": 0, 36 "total": 0 37 }; 11 38 this.unitsLostValue = 0; 12 this.enemyUnitsKilled = 0; 39 this.enemyUnitsKilled = { 40 "Infantry": 0, 41 "Worker": 0, 42 "Female": 0, 43 "Cavalry": 0, 44 "Champion": 0, 45 "Hero": 0, 46 "Ship": 0, 47 "total": 0 48 }; 13 49 this.enemyUnitsKilledValue = 0; 14 50 //buildings 15 this.buildingsConstructed = 0; 16 this.buildingsLost = 0; 51 this.buildingsClasses = [ 52 "House", 53 "Economic", 54 "Outpost", 55 "Military", 56 "Fortress", 57 "CivCentre", 58 "Wonder" 59 ]; 60 this.buildingsConstructed = { 61 "House": 0, 62 "Economic": 0, 63 "Outpost": 0, 64 "Military": 0, 65 "Fortress": 0, 66 "CivCentre": 0, 67 "Wonder": 0, 68 "total": 0 69 }; 70 this.buildingsLost = { 71 "House": 0, 72 "Economic": 0, 73 "Outpost": 0, 74 "Military": 0, 75 "Fortress": 0, 76 "CivCentre": 0, 77 "Wonder": 0, 78 "total": 0 79 }; 17 80 this.buildingsLostValue = 0; 18 this.enemyBuildingsDestroyed = 0; 81 this.enemyBuildingsDestroyed = { 82 "House": 0, 83 "Economic": 0, 84 "Outpost": 0, 85 "Military": 0, 86 "Fortress": 0, 87 "CivCentre": 0, 88 "Wonder": 0, 89 "total": 0 90 }; 19 91 this.enemyBuildingsDestroyedValue = 0; 20 // civ centres21 this.civCentresBuilt = 0;22 this.enemyCivCentresDestroyed = 0;23 92 // resources 24 93 this.resourcesGathered = { 25 26 27 28 29 94 "food": 0, 95 "wood": 0, 96 "metal": 0, 97 "stone": 0, 98 "vegetarianFood": 0 30 99 }; 31 100 this.resourcesUsed = { 32 33 34 35 101 "food": 0, 102 "wood": 0, 103 "metal": 0, 104 "stone": 0 36 105 }; 37 106 this.resourcesSold = { 38 39 40 41 107 "food": 0, 108 "wood": 0, 109 "metal": 0, 110 "stone": 0 42 111 }; 43 112 this.resourcesBought = { 44 45 46 47 113 "food": 0, 114 "wood": 0, 115 "metal": 0, 116 "stone": 0 48 117 }; 49 118 this.tributesSent = 0; 50 119 this.tributesReceived = 0; … … 65 134 "buildingsLostValue": this.buildingsLostValue, 66 135 "enemyBuildingsDestroyed": this.enemyBuildingsDestroyed, 67 136 "enemyBuildingsDestroyedValue": this.enemyBuildingsDestroyedValue, 68 "civCentresBuilt": this.civCentresBuilt,69 "enemyCivCentresDestroyed": this.enemyCivCentresDestroyed,70 137 "resourcesGathered": this.resourcesGathered, 71 138 "resourcesUsed": this.resourcesUsed, 72 139 "resourcesSold": this.resourcesSold, … … 79 146 }; 80 147 }; 81 148 82 StatisticsTracker.prototype.IncreaseTrainedUnitsCounter = function() 149 /** 150 *Increments counter associated with certain entity/counter and type of given entity. 151 *@param entity The entity id 152 *@param counter The name of the counter to increment (e.g. "unitsTrained") 153 *@param type The type of the counter (e.g. "workers") 154 */ 155 StatisticsTracker.prototype.CounterIncrement = function(entity, counter, type) 83 156 { 84 return this.unitsTrained++; 157 var classes = entity.GetClassesList(); 158 if (!classes) 159 return; 160 if (classes.indexOf(type) != -1) 161 this[counter][type]++; 85 162 }; 86 163 87 StatisticsTracker.prototype.IncreaseConstructedBuildingsCounter = function() 164 /** 165 * Counts the total number of units trained as well as an individual count for 166 * each unit type. Based on templates. 167 * @param trainedUnit The unit that has been trained 168 */ 169 StatisticsTracker.prototype.IncreaseTrainedUnitsCounter = function(trainedUnit) 88 170 { 89 return this.buildingsConstructed++; 171 var cmpUnitEntityIdentity = Engine.QueryInterface(trainedUnit, IID_Identity); 172 173 if (!cmpUnitEntityIdentity) 174 return; 175 176 for each (var type in this.unitsClasses) 177 this.CounterIncrement(cmpUnitEntityIdentity, "unitsTrained", type); 178 179 this.unitsTrained.total++; 90 180 }; 91 181 92 StatisticsTracker.prototype.IncreaseBuiltCivCentresCounter = function() 182 /** 183 * Counts the total number of buildings constructed as well as an individual count for 184 * each building type. Based on templates. 185 * @param constructedBuilding The building that has been constructed 186 */ 187 StatisticsTracker.prototype.IncreaseConstructedBuildingsCounter = function(constructedBuilding) 93 188 { 94 return this.civCentresBuilt++; 189 var cmpBuildingEntityIdentity = Engine.QueryInterface(constructedBuilding, IID_Identity); 190 191 if (!cmpBuildingEntityIdentity) 192 return; 193 194 for each(var type in this.buildingsClasses) 195 this.CounterIncrement(cmpBuildingEntityIdentity, "buildingsConstructed", type); 196 197 this.buildingsConstructed.total++; 95 198 }; 96 199 200 97 201 StatisticsTracker.prototype.KilledEntity = function(targetEntity) 98 202 { 99 203 var cmpTargetEntityIdentity = Engine.QueryInterface(targetEntity, IID_Identity); 100 204 var cmpCost = Engine.QueryInterface(targetEntity, IID_Cost); 101 205 var costs = cmpCost.GetResourceCosts(); 102 if (cmpTargetEntityIdentity) 206 if (!cmpTargetEntityIdentity) 207 return; 208 209 var cmpFoundation = Engine.QueryInterface(targetEntity, IID_Foundation); 210 // We want to deal only with real structures, not foundations 211 var targetIsStructure = cmpTargetEntityIdentity.HasClass("Structure") && cmpFoundation == null; 212 var targetIsDomesticAnimal = cmpTargetEntityIdentity.HasClass("Animal") && cmpTargetEntityIdentity.HasClass("Domestic"); 213 // Don't count domestic animals as units 214 var targetIsUnit = cmpTargetEntityIdentity.HasClass("Unit") && !targetIsDomesticAnimal; 215 216 var cmpTargetOwnership = Engine.QueryInterface(targetEntity, IID_Ownership); 217 218 // Don't increase counters if target player is gaia (player 0) 219 if (cmpTargetOwnership.GetOwner() == 0) 220 return; 221 222 if (targetIsUnit) 103 223 { 104 var cmpFoundation = Engine.QueryInterface(targetEntity, IID_Foundation); 105 // We want to deal only with real structures, not foundations 106 var targetIsStructure = cmpTargetEntityIdentity.HasClass("Structure") && cmpFoundation == null; 107 var targetIsDomesticAnimal = cmpTargetEntityIdentity.HasClass("Animal") && cmpTargetEntityIdentity.HasClass("Domestic"); 108 // Don't count domestic animals as units 109 var targetIsUnit = cmpTargetEntityIdentity.HasClass("Unit") && !targetIsDomesticAnimal; 110 var targetIsCivCentre = cmpTargetEntityIdentity.HasClass("CivCentre"); 224 for each (var type in this.unitsClasses) 225 this.CounterIncrement(cmpTargetEntityIdentity, "enemyUnitsKilled", type); 111 226 112 var cmpTargetOwnership = Engine.QueryInterface(targetEntity, IID_Ownership); 113 114 // Don't increase counters if target player is gaia (player 0) 115 if (cmpTargetOwnership.GetOwner() != 0) 116 { 117 if (targetIsUnit) 118 { 119 this.enemyUnitsKilled++; 120 for (var r in costs) 121 { 122 this.enemyUnitsKilledValue += costs[r]; 123 } 124 } 125 if (targetIsStructure) 126 { 127 this.enemyBuildingsDestroyed++; 128 for (var r in costs) 129 { 130 this.enemyBuildingsDestroyedValue += costs[r]; 131 } 132 } 133 if (targetIsCivCentre && targetIsStructure) 134 this.enemyCivCentresDestroyed++; 135 } 227 this.enemyUnitsKilled.total++; 228 229 for each (var cost in costs) 230 this.enemyUnitsKilledValue += cost; 231 } 232 if (targetIsStructure) 233 { 234 for each (var type in this.buildingsClasses) 235 this.CounterIncrement(cmpTargetEntityIdentity, "enemyBuildingsDestroyed", type); 236 237 this.enemyBuildingsDestroyed.total++; 238 239 for each (var cost in costs) 240 this.enemyBuildingsDestroyedValue += cost; 136 241 } 137 242 }; 138 243 … … 141 246 var cmpLostEntityIdentity = Engine.QueryInterface(lostEntity, IID_Identity); 142 247 var cmpCost = Engine.QueryInterface(lostEntity, IID_Cost); 143 248 var costs = cmpCost.GetResourceCosts(); 144 if (cmpLostEntityIdentity) 249 if (!cmpLostEntityIdentity) 250 return; 251 252 var cmpFoundation = Engine.QueryInterface(lostEntity, IID_Foundation); 253 // We want to deal only with real structures, not foundations 254 var lostEntityIsStructure = cmpLostEntityIdentity.HasClass("Structure") && cmpFoundation == null; 255 var lostEntityIsDomesticAnimal = cmpLostEntityIdentity.HasClass("Animal") && cmpLostEntityIdentity.HasClass("Domestic"); 256 // Don't count domestic animals as units 257 var lostEntityIsUnit = cmpLostEntityIdentity.HasClass("Unit") && !lostEntityIsDomesticAnimal; 258 259 if (lostEntityIsUnit) 145 260 { 146 var cmpFoundation = Engine.QueryInterface(lostEntity, IID_Foundation); 147 // We want to deal only with real structures, not foundations 148 var lostEntityIsStructure = cmpLostEntityIdentity.HasClass("Structure") && cmpFoundation == null; 149 var lostEntityIsDomesticAnimal = cmpLostEntityIdentity.HasClass("Animal") && cmpLostEntityIdentity.HasClass("Domestic"); 150 // Don't count domestic animals as units 151 var lostEntityIsUnit = cmpLostEntityIdentity.HasClass("Unit") && !lostEntityIsDomesticAnimal; 261 for each (var type in this.unitsClasses) 262 this.CounterIncrement(cmpLostEntityIdentity, "unitsLost", type); 152 263 153 if (lostEntityIsUnit) 154 { 155 this.unitsLost++; 156 for (var r in costs) 157 { 158 this.unitsLostValue += costs[r]; 159 } 160 } 161 if (lostEntityIsStructure) 162 { 163 this.buildingsLost++; 164 for (var r in costs) 165 { 166 this.buildingsLostValue += costs[r]; 167 } 168 } 264 this.unitsLost.total++; 265 266 for each (var cost in costs) 267 this.unitsLostValue += cost; 268 } 269 if (lostEntityIsStructure) 270 { 271 for each (var type in this.buildingsClasses) 272 this.CounterIncrement(cmpLostEntityIdentity, "buildingsLost", type); 273 274 this.buildingsLost.total++; 275 276 for each (var cost in costs) 277 this.buildingsLostValue += cost; 169 278 } 170 279 }; 171 280 … … 179 288 this.resourcesGathered[type] += amount; 180 289 181 290 if (type == "food" && (specificType == "fruit" || specificType == "grain")) 182 this.resourcesGathered ["vegetarianFood"]+= amount;291 this.resourcesGathered.vegetarianFood += amount; 183 292 }; 184 293 185 294 /** … … 193 302 194 303 StatisticsTracker.prototype.IncreaseTreasuresCollectedCounter = function() 195 304 { 196 returnthis.treasuresCollected++;305 this.treasuresCollected++; 197 306 }; 198 307 199 308 StatisticsTracker.prototype.IncreaseResourcesSoldCounter = function(type, amount) 200 309 { 201 310 this.resourcesSold[type] += amount; 202 } 311 }; 203 312 204 313 StatisticsTracker.prototype.IncreaseResourcesBoughtCounter = function(type, amount) 205 314 { 206 315 this.resourcesBought[type] += amount; 207 } 316 }; 208 317 209 318 StatisticsTracker.prototype.IncreaseTributesSentCounter = function(amount) 210 319 { 211 320 this.tributesSent += amount; 212 } 321 }; 213 322 214 323 StatisticsTracker.prototype.IncreaseTributesReceivedCounter = function(amount) 215 324 { 216 325 this.tributesReceived += amount; 217 } 326 }; 218 327 219 328 StatisticsTracker.prototype.IncreaseTradeIncomeCounter = function(amount) 220 329 { 221 330 this.tradeIncome += amount; 222 } 331 }; 223 332 224 333 StatisticsTracker.prototype.GetPercentMapExplored = function() 225 334 {