Ticket #686: summary_screen_counters_teams_24XII.patch
File summary_screen_counters_teams_24XII.patch, 132.7 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 { 831 if (!playerStatistics[unitCounterType]) 832 playerStatistics[unitCounterType] = { }; 833 for each (var unitsClass in unitsClasses) 834 playerStatistics[unitCounterType][unitsClass] = ""; 835 } 836 837 playerStatistics.unitsLostValue = ""; 838 playerStatistics.unitsKilledValue = ""; 805 839 // Building stats 806 var playerBuildingsConstructedString = ""; 807 var playerBuildingsLostString = ""; 808 var playerEnemyBuildingsDestroyedString = ""; 809 var playerCivCentersBuiltString = ""; 810 var playerEnemyCivCentersDestroyedString = ""; 840 for each (var buildingCounterType in buildingsCountersTypes) 841 { 842 if (!playerStatistics[buildingCounterType]) 843 playerStatistics[buildingCounterType] = { }; 844 for each (var buildingsClass in buildingsClasses) 845 playerStatistics[buildingCounterType][buildingsClass] = ""; 846 } 847 848 playerStatistics.buildingsLostValue = ""; 849 playerStatistics.enemyBuildingsDestroyedValue = ""; 850 // Resources 851 for each (var resourcesCounterType in resourcesCounterTypes) 852 { 853 if (!playerStatistics[resourcesCounterType]) 854 playerStatistics[resourcesCounterType] = { }; 855 for each (var resourcesType in resourcesTypes) 856 playerStatistics[resourcesCounterType][resourcesType] = ""; 857 } 858 playerStatistics.resourcesGathered.vegetarianFood = ""; 859 860 playerStatistics.tradeIncome = ""; 811 861 // Tribute 812 var playerTributeSentString= "";813 var playerTributeReceivedString= "";862 playerStatistics.tributesSent = ""; 863 playerStatistics.tributesReceived = ""; 814 864 // Various 865 playerStatistics.treasuresCollected = ""; 866 playerStatistics.feminisation = ""; 867 playerStatistics.percentMapExplored = ""; 815 868 var mapName = Engine.GetMapSettings().Name; 816 var playerStatesString = ""; 817 var playerCivsString = ""; 818 var playerPercentMapExploredString = ""; 819 var playerTreasuresCollectedString = ""; 869 var playerStates = ""; 870 var playerCivs = ""; 820 871 821 872 // Serialize the statistics for each player into a comma-separated list. 822 873 for each (var player in extendedSimState.players) 823 874 { 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 + ","; 875 playerStates += player.state + ","; 876 playerCivs += player.civ + ","; 877 for each (var resourcesCounterType in resourcesCounterTypes) 878 for each (var resourcesType in resourcesTypes) 879 playerStatistics[resourcesCounterType][resourcesType] += player.statistics[resourcesCounterType][resourcesType] + ","; 880 playerStatistics.resourcesGathered.vegetarianFood += player.statistics.resourcesGathered.vegetarianFood + ","; 881 882 for each (var unitCounterType in unitsCountersTypes) 883 for each (var unitsClass in unitsClasses) 884 playerStatistics[unitCounterType][unitsClass] += player.statistics[unitCounterType][unitsClass] + ","; 885 886 for each (var buildingCounterType in buildingsCountersTypes) 887 for each (var buildingsClass in buildingsClasses) 888 playerStatistics[buildingCounterType][buildingsClass] += player.statistics[buildingCounterType][buildingsClass] + ","; 889 890 playerStatistics.tradeIncome += player.statistics.tradeIncome + ","; 891 playerStatistics.tributesSent += player.statistics.tributesSent + ","; 892 playerStatistics.tributesReceived += player.statistics.tributesReceived + ","; 893 playerStatistics.percentMapExplored += player.statistics.percentMapExplored + ","; 894 playerStatistics.treasuresCollected += player.statistics.treasuresCollected + ","; 855 895 } 856 896 857 897 // 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 }); 898 var reportObject = { }; 899 reportObject.timeElapsed = extendedSimState.timeElapsed; 900 reportObject.playerStates = playerStates; 901 reportObject.playerID = Engine.GetPlayerID(); 902 reportObject.matchID = g_MatchID; 903 reportObject.civs = playerCivs; 904 reportObject.mapName = mapName; 905 for each (var rct in resourcesCounterTypes) 906 { 907 if (!reportObject[rt+rct.substr(9)]) 908 reportObject[rt+rct.substr(9)] = { }; 909 for each (var rt in resourcesTypes) 910 reportObject[rt+rct.substr(9)] = playerStatistics[rct][rt]; 911 // eg. rt = food rct.substr = Gathered rct = resourcesGathered 912 } 913 reportObject.vegetarianFoodGathered = playerStatistics.resourcesGathered.vegetarianFood; 914 for each (var type in unitsClasses) 915 { 916 // eg. type = Infantry (type.substr(0,1)).toLowerCase()+type.substr(1) = infantry 917 reportObject[(type.substr(0,1)).toLowerCase()+type.substr(1)+"UnitsTrained"] = playerStatistics.unitsTrained[type]; 918 reportObject[(type.substr(0,1)).toLowerCase()+type.substr(1)+"UnitsLost"] = playerStatistics.unitsLost[type]; 919 reportObject["enemy"+type+"UnitsKilled"] = playerStatistics.enemyUnitsKilled[type]; 920 } 921 for each (var type in buildingsClasses) 922 { 923 reportObject[(type.substr(0,1)).toLowerCase()+type.substr(1)+"BuildingsConstructed"] = playerStatistics.buildingsConstructed[type]; 924 reportObject[(type.substr(0,1)).toLowerCase()+type.substr(1)+"BuildingsLost"] = playerStatistics.buildingsLost[type]; 925 reportObject["enemy"+type+"BuildingsDestroyed"] = playerStatistics.enemyBuildingsDestroyed[type]; 926 } 927 reportObject.tributesSent = playerStatistics.tributesSent; 928 reportObject.tributesReceived = playerStatistics.tributesReceived; 929 reportObject.precentMapExplored = playerStatistics.percentMapExplored; 930 reportObject.treasuresCollected = playerStatistics.treasuresCollected; 931 reportObject.tradeIncome = playerStatistics.tradeIncome; 932 933 Engine.SendGameReport(reportObject); 895 934 } -
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 object.caption = TRAINED_COLOR + playerState.statistics.buildingsConstructed[type] + '[/color] / ' + 223 LOST_COLOR + playerState.statistics.buildingsLost[type] + '[/color] / ' + 224 KILLED_COLOR + playerState.statistics.enemyBuildingsDestroyed[type] + '[/color]'; 225 } 226 227 function captionUnits(object, type) 228 { 229 object.caption = TRAINED_COLOR + playerState.statistics.unitsTrained[type] + '[/color] / ' + 230 LOST_COLOR + playerState.statistics.unitsLost[type] + '[/color] / ' + 231 KILLED_COLOR + playerState.statistics.enemyUnitsKilled[type] + '[/color]'; 232 } 233 234 function captionResourcesGathered(object, type) 235 { 236 object.caption = INCOME_COLOR + playerState.statistics.resourcesGathered[type] + '[/color] / ' + 237 OUTCOME_COLOR + (playerState.statistics.resourcesUsed[type] - playerState.statistics.resourcesSold[type]) + '[/color]'; 238 } 239 240 function captionTotalResourcesGathered() 241 { 242 var totalGathered = 0; 243 var totalUsed = 0; 244 245 for each (var type in RESOURCES_TYPES) 246 { 247 totalGathered += playerState.statistics.resourcesGathered[type]; 248 totalUsed += playerState.statistics.resourcesUsed[type] - playerState.statistics.resourcesSold[type]; 249 } 250 251 return INCOME_COLOR + totalGathered + '[/color] / ' + OUTCOME_COLOR + totalUsed + '[/color]'; 252 } 253 254 function captionResourcesTributed() 255 { 256 return INCOME_COLOR + playerState.statistics.tributesSent + "[/color] / " + OUTCOME_COLOR + playerState.statistics.tributesReceived + "[/color]"; 257 } 258 259 function captionResourcesExchanged(object, type) 260 { 261 object.caption = INCOME_COLOR + '+' + playerState.statistics.resourcesBought[type] + '[/color] ' + 262 OUTCOME_COLOR + '-' + playerState.statistics.resourcesSold[type] + '[/color]'; 263 } 264 265 function captionBarterEfficiency() 266 { 267 var totalBought = 0; 268 for each (var boughtAmount in playerState.statistics.resourcesBought) 269 totalBought += boughtAmount; 270 var totalSold = 0; 271 for each (var soldAmount in playerState.statistics.resourcesSold) 272 totalSold += soldAmount; 273 274 return Math.floor(totalSold > 0 ? (totalBought / totalSold) * 100 : 0) + "%"; 275 } 276 277 function captionVegetarianRatio() 278 { 279 if (playerState.statistics.resourcesGathered.vegetarianFood && playerState.statistics.resourcesGathered.food) 280 return Math.floor((playerState.statistics.resourcesGathered.vegetarianFood / playerState.statistics.resourcesGathered.food) * 100) + "%"; 281 else 282 return 0 + "%"; 283 } 284 285 function captionFeminisation() 286 { 287 if (playerState.statistics.unitsTrained.Worker && playerState.statistics.unitsTrained.Female) 288 return Math.floor((playerState.statistics.unitsTrained.Female / playerState.statistics.unitsTrained.Worker) * 100) + "%"; 289 else 290 return 0 + "%"; 291 } 292 293 function captionKillDeathRatio() 294 { 295 if (!playerState.statistics.enemyUnitsKilled.total) 296 return "0.00"; 297 if (!playerState.statistics.unitsLost.total) // and enemyUnitsKilled.total > 0 298 return "\u221E"; // infinity symbol 299 return Math.round((playerState.statistics.enemyUnitsKilled.total / playerState.statistics.unitsLost.total)*100)/100; 300 } 301 302 function sumTeamBuildings(counter, type) 303 { 304 if (counter.teamsScores[playerState.team] == 0) 305 { 306 counter.teamsScores[playerState.team] = { }; 307 counter.teamsScores[playerState.team].buildingsConstructed = 0; 308 counter.teamsScores[playerState.team].buildingsLost = 0; 309 counter.teamsScores[playerState.team].enemyBuildingsDestroyed = 0; 310 } 311 312 counter.teamsScores[playerState.team].buildingsConstructed += playerState.statistics.buildingsConstructed[type]; 313 counter.teamsScores[playerState.team].buildingsLost += playerState.statistics.buildingsLost[type]; 314 counter.teamsScores[playerState.team].enemyBuildingsDestroyed += playerState.statistics.enemyBuildingsDestroyed[type]; 315 316 counter.teamsScoresCaption[playerState.team] = TRAINED_COLOR + counter.teamsScores[playerState.team].buildingsConstructed + '[/color] / ' + 317 LOST_COLOR + counter.teamsScores[playerState.team].buildingsLost + '[/color] / ' + 318 KILLED_COLOR + counter.teamsScores[playerState.team].enemyBuildingsDestroyed + '[/color]'; 319 } 320 321 function sumTeamUnits(counter, type) 322 { 323 if (counter.teamsScores[playerState.team] == 0) 324 { 325 counter.teamsScores[playerState.team] = { }; 326 counter.teamsScores[playerState.team].unitsTrained = 0; 327 counter.teamsScores[playerState.team].unitsLost = 0; 328 counter.teamsScores[playerState.team].enemyUnitsKilled = 0; 329 } 330 331 counter.teamsScores[playerState.team].unitsTrained += playerState.statistics.unitsTrained[type]; 332 counter.teamsScores[playerState.team].unitsLost += playerState.statistics.unitsLost[type]; 333 counter.teamsScores[playerState.team].enemyUnitsKilled += playerState.statistics.enemyUnitsKilled[type]; 334 335 counter.teamsScoresCaption[playerState.team] = TRAINED_COLOR + counter.teamsScores[playerState.team].unitsTrained + '[/color] / ' + 336 LOST_COLOR + counter.teamsScores[playerState.team].unitsLost + '[/color] / ' + 337 KILLED_COLOR + counter.teamsScores[playerState.team].enemyUnitsKilled + '[/color]'; 338 } 339 340 function sumResourcesGathered(counter, type) 341 { 342 if (counter.teamsScores[playerState.team] == 0) 343 { 344 counter.teamsScores[playerState.team] = { }; 345 counter.teamsScores[playerState.team].resourcesGathered = 0; 346 counter.teamsScores[playerState.team].resourcesUsed = 0; 347 } 348 349 counter.teamsScores[playerState.team].resourcesGathered += playerState.statistics.resourcesGathered[type]; 350 counter.teamsScores[playerState.team].resourcesUsed += playerState.statistics.resourcesUsed[type] - playerState.statistics.resourcesSold[type]; 351 352 counter.teamsScoresCaption[playerState.team] = INCOME_COLOR + counter.teamsScores[playerState.team].resourcesGathered + '[/color] / ' + 353 OUTCOME_COLOR + counter.teamsScores[playerState.team].resourcesUsed + '[/color]'; 354 } 355 356 function sumTotalResourcesGathered() 357 { 358 if (panels.resources.counters.totalGathered.teamsScores[playerState.team] == 0) 359 { 360 panels.resources.counters.totalGathered.teamsScores[playerState.team] = { }; 361 panels.resources.counters.totalGathered.teamsScores[playerState.team].resourcesGathered = 0; 362 panels.resources.counters.totalGathered.teamsScores[playerState.team].resourcesUsed = 0; 363 } 364 365 for each (var type in RESOURCES_TYPES) 366 { 367 panels.resources.counters.totalGathered.teamsScores[playerState.team].resourcesGathered += playerState.statistics.resourcesGathered[type]; 368 panels.resources.counters.totalGathered.teamsScores[playerState.team].resourcesUsed += 369 playerState.statistics.resourcesUsed[type] - playerState.statistics.resourcesSold[type]; 370 } 371 372 panels.resources.counters.totalGathered.teamsScoresCaption[playerState.team] = 373 INCOME_COLOR + panels.resources.counters.totalGathered.teamsScores[playerState.team].resourcesGathered + '[/color] / ' + 374 OUTCOME_COLOR + panels.resources.counters.totalGathered.teamsScores[playerState.team].resourcesUsed + '[/color]'; 375 } 376 377 function sumResourcesTributed() 378 { 379 if (panels.resources.counters.resourcesTributed.teamsScores[playerState.team] == 0) 380 { 381 panels.resources.counters.resourcesTributed.teamsScores[playerState.team] = { }; 382 panels.resources.counters.resourcesTributed.teamsScores[playerState.team].tributesSent = 0; 383 panels.resources.counters.resourcesTributed.teamsScores[playerState.team].tributesReceived = 0; 384 } 385 386 panels.resources.counters.resourcesTributed.teamsScores[playerState.team].tributesSent += playerState.statistics.tributesSent; 387 panels.resources.counters.resourcesTributed.teamsScores[playerState.team].tributesReceived += playerState.statistics.tributesReceived; 388 389 panels.resources.counters.resourcesTributed.teamsScoresCaption[playerState.team] = 390 INCOME_COLOR + panels.resources.counters.resourcesTributed.teamsScores[playerState.team].tributesSent + "[/color] / " + 391 OUTCOME_COLOR + panels.resources.counters.resourcesTributed.teamsScores[playerState.team].tributesReceived + "[/color]"; 392 } 393 394 function sumResourcesExchanged(counter, type) 395 { 396 if (counter.teamsScores[playerState.team] == 0) 397 { 398 counter.teamsScores[playerState.team] = { }; 399 counter.teamsScores[playerState.team].resourcesBought = 0; 400 counter.teamsScores[playerState.team].resourcesSold = 0; 401 } 402 403 counter.teamsScores[playerState.team].resourcesBought += playerState.statistics.resourcesBought[type]; 404 counter.teamsScores[playerState.team].resourcesSold += playerState.statistics.resourcesSold[type]; 405 406 counter.teamsScoresCaption[playerState.team] = 407 INCOME_COLOR + '+' + counter.teamsScores[playerState.team].resourcesBought + '[/color] ' + 408 OUTCOME_COLOR + '-' + counter.teamsScores[playerState.team].resourcesSold + '[/color]'; 409 } 410 411 function sumBarterEfficiency() 412 { 413 if (panels.market.counters.barterEfficiency.teamsScores[playerState.team] == 0) 414 { 415 panels.market.counters.barterEfficiency.teamsScores[playerState.team] = { }; 416 panels.market.counters.barterEfficiency.teamsScores[playerState.team].resourcesBought = 0; 417 panels.market.counters.barterEfficiency.teamsScores[playerState.team].resourcesSold = 0; 418 } 419 420 for each (var boughtAmount in playerState.statistics.resourcesBought) 421 panels.market.counters.barterEfficiency.teamsScores[playerState.team].resourcesBought += boughtAmount; 422 for each (var soldAmount in playerState.statistics.resourcesSold) 423 panels.market.counters.barterEfficiency.teamsScores[playerState.team].resourcesSold += soldAmount; 424 425 panels.market.counters.barterEfficiency.teamsScoresCaption[playerState.team] = 426 Math.floor(panels.market.counters.barterEfficiency.teamsScores[playerState.team].resourcesSold > 0 ? 427 (panels.market.counters.barterEfficiency.teamsScores[playerState.team].resourcesBought / 428 panels.market.counters.barterEfficiency.teamsScores[playerState.team].resourcesSold) * 100 : 0) + "%"; 429 } 430 431 function sumVegetarianRatio() 432 { 433 if (panels.miscelanous.counters.vegetarianRatio.teamsScores[playerState.team] == 0) 434 { 435 panels.miscelanous.counters.vegetarianRatio.teamsScores[playerState.team] = { }; 436 panels.miscelanous.counters.vegetarianRatio.teamsScores[playerState.team].vegetarianFood = 0; 437 panels.miscelanous.counters.vegetarianRatio.teamsScores[playerState.team].food = 0; 438 } 439 440 panels.miscelanous.counters.vegetarianRatio.teamsScores[playerState.team].vegetarianFood += playerState.statistics.resourcesGathered.vegetarianFood; 441 panels.miscelanous.counters.vegetarianRatio.teamsScores[playerState.team].food += playerState.statistics.resourcesGathered.food; 442 443 if (panels.miscelanous.counters.vegetarianRatio.teamsScores[playerState.team].food && 444 panels.miscelanous.counters.vegetarianRatio.teamsScores[playerState.team].vegetarianFood) 445 { 446 panels.miscelanous.counters.vegetarianRatio.teamsScoresCaption[playerState.team] = 447 Math.floor((panels.miscelanous.counters.vegetarianRatio.teamsScores[playerState.team].vegetarianFood / 448 panels.miscelanous.counters.vegetarianRatio.teamsScores[playerState.team].food) * 100) + "%"; 449 return; 450 } 451 panels.miscelanous.counters.vegetarianRatio.teamsScoresCaption[playerState.team] = 0 + "%"; 452 } 453 454 function sumFeminisation() 455 { 456 if (panels.miscelanous.counters.feminisation.teamsScores[playerState.team] == 0) 457 { 458 panels.miscelanous.counters.feminisation.teamsScores[playerState.team] = { }; 459 panels.miscelanous.counters.feminisation.teamsScores[playerState.team].femalesTrained = 0; 460 panels.miscelanous.counters.feminisation.teamsScores[playerState.team].workersTrained = 0; 461 } 462 463 panels.miscelanous.counters.feminisation.teamsScores[playerState.team].femalesTrained += playerState.statistics.unitsTrained.Female; 464 panels.miscelanous.counters.feminisation.teamsScores[playerState.team].workersTrained += playerState.statistics.unitsTrained.Worker; 465 466 if (panels.miscelanous.counters.feminisation.teamsScores[playerState.team].femalesTrained && 467 panels.miscelanous.counters.feminisation.teamsScores[playerState.team].workersTrained) 468 { 469 panels.miscelanous.counters.feminisation.teamsScoresCaption[playerState.team] = 470 Math.floor((panels.miscelanous.counters.feminisation.teamsScores[playerState.team].femalesTrained / 471 panels.miscelanous.counters.feminisation.teamsScores[playerState.team].workersTrained) * 100) + "%"; 472 return; 473 } 474 panels.miscelanous.counters.feminisation.teamsScoresCaption[playerState.team] = 0 + "%"; 475 } 476 477 function sumKillDeathRatio() 478 { 479 if (panels.miscelanous.counters.killDeathRatio.teamsScores[playerState.team] == 0) 480 { 481 panels.miscelanous.counters.killDeathRatio.teamsScores[playerState.team] = { }; 482 panels.miscelanous.counters.killDeathRatio.teamsScores[playerState.team].enemyUnitsKilled = 0; 483 panels.miscelanous.counters.killDeathRatio.teamsScores[playerState.team].unitsLost = 0; 484 } 485 486 panels.miscelanous.counters.killDeathRatio.teamsScores[playerState.team].enemyUnitsKilled += playerState.statistics.enemyUnitsKilled.total; 487 panels.miscelanous.counters.killDeathRatio.teamsScores[playerState.team].unitsLost += playerState.statistics.unitsLost.total; 488 489 if (!panels.miscelanous.counters.killDeathRatio.teamsScores[playerState.team].enemyUnitsKilled) 490 { 491 panels.miscelanous.counters.killDeathRatio.teamsScoresCaption[playerState.team] = "0.00"; 492 return; 493 } 494 if (!panels.miscelanous.counters.killDeathRatio.teamsScores[playerState.team].unitsLost) 495 { 496 panels.miscelanous.counters.killDeathRatio.teamsScoresCaption[playerState.team] = "\u221E"; // infinity symbol 497 return; 498 } 499 panels.miscelanous.counters.killDeathRatio.teamsScoresCaption[playerState.team] = 500 Math.round((panels.miscelanous.counters.killDeathRatio.teamsScores[playerState.team].enemyUnitsKilled / 501 panels.miscelanous.counters.killDeathRatio.teamsScores[playerState.team].unitsLost) * 100)/100; 502 } 503 504 // FUNCTION BODY 505 // Load data 39 506 var civData = loadCivData(); 507 // Map 40 508 var mapSize = "Scenario"; 41 509 42 510 getGUIObjectByName("timeElapsed").caption = "Time elapsed: " + timeToString(data.timeElapsed); … … 61 529 } 62 530 63 531 getGUIObjectByName("mapName").caption = data.mapSettings.Name + " - " + mapSize; 532 533 // Panels 534 // Align headers 535 var left = 50; 536 for each (var panel in panels) // for all panels 537 alignHeaders(panel.headings); 64 538 65 // Space player boxes 66 var boxSpacing = 32; 67 for (var i = 0; i < panelNames.length; ++i) 539 // TODO set maxPlayers as playerCounters.length 540 var maxPlayers = data.playerStates.length - 1; 541 var maxTeams = 0; 542 543 var teams = [ ]; 544 if (data.mapSettings.LockTeams) // teams ARE locked 68 545 { 69 for (var j = 0; j < MAX_SLOTS; ++j) 546 // count teams 547 for(var t = 0; t < maxPlayers; ++t) 70 548 { 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;549 if (!teams[data.playerStates[t+1].team]) 550 { 551 teams[data.playerStates[t+1].team] = 1; 552 continue; 553 } 554 teams[data.playerStates[t+1].team]++; 77 555 } 556 557 if (teams.length == maxPlayers) 558 teams = false; // Each player has his own team. Displaying teams makes no sense. 78 559 } 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; 560 else // teams are NOT locked 561 teams = false; 94 562 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) 563 // Erase teams data if teams are not displayed 564 if (!teams) 132 565 { 133 if (i < maxPlayers) 566 for(var p = 0; p < maxPlayers; ++p) 567 data.playerStates[p+1].team = -1; 568 } 569 570 // Count players without team (or all if teams are not displayed) 571 var withoutTeam = maxPlayers; 572 if (teams) 573 { 574 // count players without team (or all if teams are not displayed) 575 for (var i = 0; i < teams.length; ++i) 576 withoutTeam -= teams[i]; 577 578 // Display teams boxes 579 var p = 0; 580 for each (var panel in panels) 134 581 { 135 var playerState = data.playerStates[i+1]; 136 137 for (var k = 0; k < panelNames.length; ++k) 582 var yStart = TEAMS_BOX_Y_START + withoutTeam * (PLAYER_BOX_Y_SIZE + PLAYER_BOX_GAP); 583 for (var i = 0; i < teams.length; ++i) 138 584 { 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; 585 var teamBox = getGUIObjectByName("teamBox"+p+"t"+i); 586 teamBox.hidden = false; 587 var teamBoxSize = teamBox.size; 588 teamBoxSize.top = yStart; 589 teamBox.size = teamBoxSize; 590 591 yStart += 30 + teams[i] * (PLAYER_BOX_Y_SIZE + PLAYER_BOX_GAP) + 32; 592 593 getGUIObjectByName("teamNameHeading"+p+"t"+i).caption = "Team "+(i+1); 594 595 // Make place to store team scores 596 for each (var counter in panel.counters) 597 { 598 counter.teamsScores[i] = 0; 599 counter.teamsScoresCaption[i] = "0"; 600 } 157 601 } 602 603 // If there are no players without team, hide "player name" heading 604 if (!withoutTeam) 605 getGUIObjectByName("playerName"+p+"Heading").caption = ""; 606 607 p++; 608 } 609 } 610 611 if (withoutTeam) 612 { 613 // Show boxes for no teams 614 for (var b = 0; b < PANELS_COUNT; ++b) 615 getGUIObjectByName("noTeamsBox"+b).hidden = false; 616 } 158 617 159 var economyScore = getGUIObjectByName("economyScore["+i+"]"); 160 var militaryScore = getGUIObjectByName("militaryScore["+i+"]"); 161 var explorationScore = getGUIObjectByName("explorationScore["+i+"]"); 162 var totalScore = getGUIObjectByName("totalScore["+i+"]"); 618 var playerBoxesCounts = [ ]; 619 for (var i = 0; i < maxPlayers; ++i) 620 { 621 var tn = ""; 622 var playerState = data.playerStates[i+1]; 623 624 if (!playerBoxesCounts[playerState.team+1]) 625 playerBoxesCounts[playerState.team+1] = 1; 626 else 627 playerBoxesCounts[playerState.team+1] += 1; 163 628 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+"]"); 629 if (playerState.team != -1) 630 tn = "t"+playerState.team+"p"; 170 631 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; 632 var j = 0; 633 for each (var panel in panels) 634 { 635 var playerIdentityString = tn+"["+(playerBoxesCounts[playerState.team+1]-1)+"]"; 636 // Display boxes for players 637 var playerBox = getGUIObjectByName("playerBox"+j+playerIdentityString); 638 playerBox.hidden = false; 201 639 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; 640 var boxSize = playerBox.size; 641 boxSize.top += (playerBoxesCounts[playerState.team+1] - 1) * (PLAYER_BOX_Y_SIZE + PLAYER_BOX_GAP); 642 boxSize.bottom = boxSize.top + PLAYER_BOX_Y_SIZE; 643 playerBox.size = boxSize; 644 645 var colourString = "colour: " 646 + Math.floor(playerState.colour.r * 255) + " " 647 + Math.floor(playerState.colour.g * 255) + " " 648 + Math.floor(playerState.colour.b * 255); 649 650 playerBox.sprite = colourString + PLAYER_BOX_ALPHA; 651 652 var playerColourBox = getGUIObjectByName("playerColourBox"+j+playerIdentityString); 653 playerColourBox.sprite = colourString + PLAYER_COLOUR_BOX_ALPHA; 654 655 // Show the multiplayer name, e.g. "Foobar" rather than "Player 1". 656 // TODO: Perhaps show both the multiplayer and map-specific name? 657 var playerName = getGUIObjectByName("playerName"+j+playerIdentityString); 658 playerName.caption = data.players[i+1].name; 212 659 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); 660 var civIcon = getGUIObjectByName("civIcon"+j+playerIdentityString); 661 civIcon.sprite = "stretched:"+civData[playerState.civ].Emblem; 662 civIcon.tooltip = civData[playerState.civ].Name; 250 663 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; 664 // Get counters 665 for (var c in panel.counters) 666 { 667 panel.counters[c].objects[i] = getGUIObjectByName(c+playerIdentityString); 668 } 669 670 // Align counters 671 var right = alignCounters(panel.counters, i); 672 boxSize.right = right; 673 playerBox.size = boxSize; 674 675 j++; 294 676 } 295 else 677 678 // Assign counters 679 // score panel 680 panels.score.counters.economyScore.objects[i].caption = captionEconomyScore(); 681 panels.score.counters.militaryScore.objects[i].caption = Math.round((playerState.statistics.enemyUnitsKilledValue + 682 playerState.statistics.enemyBuildingsDestroyedValue) / 10); 683 panels.score.counters.explorationScore.objects[i].caption = playerState.statistics.percentMapExplored * 10; 684 panels.score.counters.totalScore.objects[i].caption = (+panels.score.counters.economyScore.objects[i].caption) + 685 (+panels.score.counters.militaryScore.objects[i].caption) + 686 (+panels.score.counters.explorationScore.objects[i].caption); 687 // buildings panel 688 var t = 0; 689 for each (var counter in panels.buildings.counters) 296 690 { 297 // hide player boxes 298 for (var k = 0; k < panelNames.length; ++k) 691 captionBuildings(counter.objects[i], BUILDINGS_TYPES[t]); 692 t++; 693 } 694 // units panel 695 t = 0; 696 for each (var counter in panels.units.counters) 697 { 698 captionUnits(counter.objects[i], UNITS_TYPES[t]); 699 t++; 700 } 701 // resources panel 702 t = 0; 703 for each (var counter in panels.resources.counters) 704 { 705 if (t >= 4) // only 4 first counters 706 break; 707 708 captionResourcesGathered(counter.objects[i], RESOURCES_TYPES[t]); 709 t++; 710 } 711 panels.resources.counters.totalGathered.objects[i].caption = captionTotalResourcesGathered(); 712 panels.resources.counters.treasuresCollected.objects[i].caption = playerState.statistics.treasuresCollected; 713 panels.resources.counters.resourcesTributed.objects[i].caption = captionResourcesTributed(); 714 // market panel 715 t = 0; 716 for (var c in panels.market.counters) 717 { 718 if (t >= 4) // only 4 first counters 719 break; 720 721 captionResourcesExchanged(panels.market.counters[c].objects[i], RESOURCES_TYPES[t]); 722 t++; 723 } 724 panels.market.counters.barterEfficiency.objects[i].caption = captionBarterEfficiency(); 725 panels.market.counters.tradeIncome.objects[i].caption = playerState.statistics.tradeIncome; 726 // miscelanous panel 727 panels.miscelanous.counters.vegetarianRatio.objects[i].caption = captionVegetarianRatio(); 728 panels.miscelanous.counters.feminisation.objects[i].caption = captionFeminisation(); 729 panels.miscelanous.counters.killDeathRatio.objects[i].caption = captionKillDeathRatio(); 730 panels.miscelanous.counters.mapExploration.objects[i].caption = playerState.statistics.percentMapExplored + "%"; 731 732 if (!teams) 733 continue; 734 735 if (playerState.team == -1) 736 continue; 737 738 // Evaluate team total score 739 // score panel 740 for (var c in panels.score.counters) 741 { 742 panels.score.counters[c].teamsScores[playerState.team] += (+panels.score.counters[c].objects[i].caption); 743 panels.score.counters[c].teamsScoresCaption[playerState.team] = panels.score.counters[c].teamsScores[playerState.team]; 744 } 745 // buildings panel 746 var t = 0; 747 for each (var counter in panels.buildings.counters) 748 { 749 sumTeamBuildings(counter, BUILDINGS_TYPES[t]); 750 t++; 751 } 752 // units panel 753 t = 0; 754 for each (var counter in panels.units.counters) 755 { 756 sumTeamUnits(counter, UNITS_TYPES[t]); 757 t++; 758 } 759 // resources panel 760 t = 0; 761 for each (var counter in panels.resources.counters) 762 { 763 if (t >= 4) // only 4 first counters 764 break; 765 766 sumResourcesGathered(counter, RESOURCES_TYPES[t]); 767 t++; 768 } 769 sumTotalResourcesGathered(); 770 panels.resources.counters.treasuresCollected.teamsScores[playerState.team] += playerState.statistics.treasuresCollected; 771 panels.resources.counters.treasuresCollected.teamsScoresCaption[playerState.team] = panels.resources.counters.treasuresCollected.teamsScores[playerState.team]; 772 sumResourcesTributed(); 773 // market panel 774 t = 0; 775 for (var c in panels.market.counters) 776 { 777 if (t >= 4) // only 4 first counters 778 break; 779 780 sumResourcesExchanged(panels.market.counters[c], RESOURCES_TYPES[t]); 781 t++; 782 } 783 sumBarterEfficiency(); 784 panels.market.counters.tradeIncome.teamsScores[playerState.team] += playerState.statistics.tradeIncome; 785 panels.market.counters.tradeIncome.teamsScoresCaption[playerState.team] = panels.market.counters.tradeIncome.teamsScores[playerState.team]; 786 // miscelanous panel 787 sumVegetarianRatio(); 788 sumFeminisation(); 789 sumKillDeathRatio(); 790 // TODO: probably change from simple sum to union from range manager 791 panels.miscelanous.counters.mapExploration.teamsScores[playerState.team] += playerState.statistics.percentMapExplored; 792 panels.miscelanous.counters.mapExploration.teamsScoresCaption[playerState.team] = panels.miscelanous.counters.mapExploration.teamsScores[playerState.team] + "%"; 793 } 794 795 if (!teams) 796 { 797 selectPanel(0); 798 return; 799 } 800 801 // Display teams totals counters 802 for (var i = 0; i < teams.length; ++i) 803 { 804 var pn = 0; 805 for each (var panel in panels) 806 { 807 var teamHeading = getGUIObjectByName("teamHeading"+pn+"t"+i); 808 var yStart = 30 + teams[i] * (PLAYER_BOX_Y_SIZE + PLAYER_BOX_GAP) + 2; 809 teamHeading.size = "50 "+yStart+" 100% "+(yStart+20); 810 teamHeading.caption = "Team total"; 811 812 var left = 250; 813 for (var c in panel.counters) 299 814 { 300 var playerBox = getGUIObjectByName("playerBox"+k+"["+i+"]"); 301 playerBox.hidden = true; 815 var counter = getGUIObjectByName(c+"t"+i); 816 counter.size = left + " " + yStart + " " + (left + panel.counters[c].width) + " " + (yStart+20); 817 counter.caption = panel.counters[c].teamsScoresCaption[i]; 818 819 left += panel.counters[c].width; 302 820 } 821 pn++; 303 822 } 304 823 } 305 824 -
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
551 551 } 552 552 553 553 var cmpPlayerStatisticsTracker = QueryOwnerInterface(this.entity, IID_StatisticsTracker); 554 cmpPlayerStatisticsTracker.IncreaseTrainedUnitsCounter( );554 cmpPlayerStatisticsTracker.IncreaseTrainedUnitsCounter(ent); 555 555 556 556 // Play a sound, but only for the first in the batch (to avoid nasty phasing effects) 557 557 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 //buildings 15 this.buildingsConstructed = 0; 16 this.buildingsLost = 0; 50 // buildings 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 97 200 StatisticsTracker.prototype.KilledEntity = function(targetEntity) … … 99 202 var cmpTargetEntityIdentity = Engine.QueryInterface(targetEntity, IID_Identity); 100 203 var cmpCost = Engine.QueryInterface(targetEntity, IID_Cost); 101 204 var costs = cmpCost.GetResourceCosts(); 102 if (cmpTargetEntityIdentity) 205 if (!cmpTargetEntityIdentity) 206 return; 207 208 var cmpFoundation = Engine.QueryInterface(targetEntity, IID_Foundation); 209 // We want to deal only with real structures, not foundations 210 var targetIsStructure = cmpTargetEntityIdentity.HasClass("Structure") && cmpFoundation == null; 211 var targetIsDomesticAnimal = cmpTargetEntityIdentity.HasClass("Animal") && cmpTargetEntityIdentity.HasClass("Domestic"); 212 // Don't count domestic animals as units 213 var targetIsUnit = cmpTargetEntityIdentity.HasClass("Unit") && !targetIsDomesticAnimal; 214 215 var cmpTargetOwnership = Engine.QueryInterface(targetEntity, IID_Ownership); 216 217 // Don't increase counters if target player is gaia (player 0) 218 if (cmpTargetOwnership.GetOwner() == 0) 219 return; 220 221 if (targetIsUnit) 103 222 { 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"); 223 for each (var type in this.unitsClasses) 224 this.CounterIncrement(cmpTargetEntityIdentity, "enemyUnitsKilled", type); 111 225 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 } 226 this.enemyUnitsKilled.total++; 227 228 for each (var cost in costs) 229 this.enemyUnitsKilledValue += cost; 230 } 231 if (targetIsStructure) 232 { 233 for each (var type in this.buildingsClasses) 234 this.CounterIncrement(cmpTargetEntityIdentity, "enemyBuildingsDestroyed", type); 235 236 this.enemyBuildingsDestroyed.total++; 237 238 for each (var cost in costs) 239 this.enemyBuildingsDestroyedValue += cost; 136 240 } 137 241 }; 138 242 … … 141 245 var cmpLostEntityIdentity = Engine.QueryInterface(lostEntity, IID_Identity); 142 246 var cmpCost = Engine.QueryInterface(lostEntity, IID_Cost); 143 247 var costs = cmpCost.GetResourceCosts(); 144 if (cmpLostEntityIdentity) 248 if (!cmpLostEntityIdentity) 249 return; 250 251 var cmpFoundation = Engine.QueryInterface(lostEntity, IID_Foundation); 252 // We want to deal only with real structures, not foundations 253 var lostEntityIsStructure = cmpLostEntityIdentity.HasClass("Structure") && cmpFoundation == null; 254 var lostEntityIsDomesticAnimal = cmpLostEntityIdentity.HasClass("Animal") && cmpLostEntityIdentity.HasClass("Domestic"); 255 // Don't count domestic animals as units 256 var lostEntityIsUnit = cmpLostEntityIdentity.HasClass("Unit") && !lostEntityIsDomesticAnimal; 257 258 if (lostEntityIsUnit) 145 259 { 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; 260 for each (var type in this.unitsClasses) 261 this.CounterIncrement(cmpLostEntityIdentity, "unitsLost", type); 152 262 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 } 263 this.unitsLost.total++; 264 265 for each (var cost in costs) 266 this.unitsLostValue += cost; 267 } 268 if (lostEntityIsStructure) 269 { 270 for each (var type in this.buildingsClasses) 271 this.CounterIncrement(cmpLostEntityIdentity, "buildingsLost", type); 272 273 this.buildingsLost.total++; 274 275 for each (var cost in costs) 276 this.buildingsLostValue += cost; 169 277 } 170 278 }; 171 279 … … 179 287 this.resourcesGathered[type] += amount; 180 288 181 289 if (type == "food" && (specificType == "fruit" || specificType == "grain")) 182 this.resourcesGathered ["vegetarianFood"]+= amount;290 this.resourcesGathered.vegetarianFood += amount; 183 291 }; 184 292 185 293 /** … … 193 301 194 302 StatisticsTracker.prototype.IncreaseTreasuresCollectedCounter = function() 195 303 { 196 returnthis.treasuresCollected++;304 this.treasuresCollected++; 197 305 }; 198 306 199 307 StatisticsTracker.prototype.IncreaseResourcesSoldCounter = function(type, amount) 200 308 { 201 309 this.resourcesSold[type] += amount; 202 } 310 }; 203 311 204 312 StatisticsTracker.prototype.IncreaseResourcesBoughtCounter = function(type, amount) 205 313 { 206 314 this.resourcesBought[type] += amount; 207 } 315 }; 208 316 209 317 StatisticsTracker.prototype.IncreaseTributesSentCounter = function(amount) 210 318 { 211 319 this.tributesSent += amount; 212 } 320 }; 213 321 214 322 StatisticsTracker.prototype.IncreaseTributesReceivedCounter = function(amount) 215 323 { 216 324 this.tributesReceived += amount; 217 } 325 }; 218 326 219 327 StatisticsTracker.prototype.IncreaseTradeIncomeCounter = function(amount) 220 328 { 221 329 this.tradeIncome += amount; 222 } 330 }; 223 331 224 332 StatisticsTracker.prototype.GetPercentMapExplored = function() 225 333 {