Ticket #686: summary_screen_improvements.patch
File summary_screen_improvements.patch, 51.7 KB (added by , 13 years ago) |
---|
-
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 = [ ' unitsBuildingsPanel', 'conquestPanel', 'resourcesPanel' ];5 var panelButtonNames = [ ' unitsBuildingsPanelButton', 'conquestPanelButton', 'resourcesPanelButton' ];4 var panelNames = [ 'conquestPanel', 'armyPanel', 'navyPanel', 'buildingsPanel', 'economyPanel', 'lootTreasurePanel' ]; 5 var panelButtonNames = [ 'conquestPanelButton', 'armyPanelButton', 'navyPanelButton', 'buildingsPanelButton', 'economyPanelButton', 'lootTreasurePanelButton' ]; 6 6 7 7 /** 8 8 * @param time Time period in milliseconds (integer) … … 62 62 var maxPlayers = data.playerStates.length - 1; 63 63 64 64 // align headers 65 var left = 50;66 var width = 100;65 var numericWidth = 100; 66 var textWidth = 170; 67 67 var playerNameHeadingWidth = 200; 68 getGUIObjectByName("playerName0Heading").size = left + " 26 " + (left + playerNameHeadingWidth) + " 100%"; left += playerNameHeadingWidth;69 getGUIObjectByName("unitsTrainedHeading").size = left + " 16 " + (left + width) + " 100%"; left += width;70 getGUIObjectByName("unitsLostHeading").size = left + " 16 " + (left + width) + " 100%"; left += width;71 getGUIObjectByName("enemyUnitsKilledHeading").size = left + " 16 " + (left + width) + " 100%"; left += width;72 getGUIObjectByName("buildingsConstructedHeading").size = left + " 16 " + (left + width) + " 100%"; left += width;73 getGUIObjectByName("buildingsLostHeading").size = left + " 16 " + (left + width) + " 100%"; left += width;74 getGUIObjectByName("enemyBuildingsDestroyedHeading").size = left + " 6 " + (left + width) + " 100%"; left += width;75 68 76 69 var left = 50; 70 getGUIObjectByName("playerName0Heading").size = left + " 26 " + (left + playerNameHeadingWidth) + " 100%"; left += playerNameHeadingWidth; 71 getGUIObjectByName("civCentresBuiltHeading").size = left + " 16 " + (left + numericWidth) + " 100%"; left += numericWidth; 72 getGUIObjectByName("enemyCivCentresRazedHeading").size = left + " 16 " + (left + numericWidth) + " 100%"; left += numericWidth; 73 getGUIObjectByName("mapExplorationHeading").size = left + " 16 " + (left + numericWidth) + " 100%"; left += numericWidth; 74 75 var left = 50; 77 76 getGUIObjectByName("playerName1Heading").size = left + " 26 " + (left + playerNameHeadingWidth) + " 100%"; left += playerNameHeadingWidth; 78 getGUIObjectByName("civCentresBuiltHeading").size = left + " 16 " + (left + width) + " 100%"; left += width; 79 getGUIObjectByName("enemyCivCentresDestroyedHeading").size = left + " 6 " + (left + width) + " 100%"; left += width; 80 getGUIObjectByName("mapExplorationHeading").size = left + " 6 " + (left + width) + " 100%"; left += width; 77 getGUIObjectByName("soldiersTrainedHeading").size = left + " 16 " + (left + numericWidth) + " 100%"; left += numericWidth; 78 getGUIObjectByName("soldiersLostHeading").size = left + " 16 " + (left + numericWidth) + " 100%"; left += numericWidth; 79 getGUIObjectByName("enemySoldiersKilledHeading").size = left + " 16 " + (left + numericWidth) + " 100%"; left += numericWidth; 80 getGUIObjectByName("armyKillDeathRatioHeading").size = left + " 16 " + (left + numericWidth) + " 100%"; left += numericWidth; 81 getGUIObjectByName("favouriteSoldierHeading").size = left + " 16 " + (left + textWidth) + " 100%"; left += textWidth; 81 82 82 83 var left = 50; 83 getGUIObjectByName("playerName2Heading").size = left + " 26 " + (left + playerNameHeadingWidth) + " 100%"; left += playerNameHeadingWidth; 84 getGUIObjectByName("foodGatheredHeading").size = left + " 16 " + (left + width) + " 100%"; left += width; 85 getGUIObjectByName("vegetarianRatioHeading").size = left + " 16 " + (left + width) + " 100%"; left += width; 86 getGUIObjectByName("woodGatheredHeading").size = left + " 16 " + (left + width) + " 100%"; left += width; 87 getGUIObjectByName("metalGatheredHeading").size = left + " 16 " + (left + width) + " 100%"; left += width; 88 getGUIObjectByName("stoneGatheredHeading").size = left + " 16 " + (left + width) + " 100%"; left += width; 89 getGUIObjectByName("treasuresCollectedHeading").size = left + " 16 " + (left + width) + " 100%"; left += width; 84 getGUIObjectByName("playerName2Heading").size = left + " 26 " + (left + playerNameHeadingWidth) + " 100%"; left += playerNameHeadingWidth; 85 getGUIObjectByName("warshipsBuiltHeading").size = left + " 16 " + (left + numericWidth) + " 100%"; left += numericWidth; 86 getGUIObjectByName("warshipsLostHeading").size = left + " 16 " + (left + numericWidth) + " 100%"; left += numericWidth; 87 getGUIObjectByName("enemyWarshipsDestroyedHeading").size = left + " 16 " + (left + numericWidth) + " 100%"; left += numericWidth; 88 getGUIObjectByName("navyKillDeathRatioHeading").size = left + " 16 " + (left + numericWidth) + " 100%"; left += numericWidth; 89 getGUIObjectByName("favouriteWarshipHeading").size = left + " 16 " + (left + textWidth) + " 100%"; left += textWidth; 90 91 var left = 50; 92 getGUIObjectByName("playerName3Heading").size = left + " 26 " + (left + playerNameHeadingWidth) + " 100%"; left += playerNameHeadingWidth; 93 getGUIObjectByName("buildingsBuiltHeading").size = left + " 16 " + (left + numericWidth) + " 100%"; left += numericWidth; 94 getGUIObjectByName("buildingsLostHeading").size = left + " 16 " + (left + numericWidth) + " 100%"; left += numericWidth; 95 getGUIObjectByName("enemyBuildingsRazedHeading").size = left + " 16 " + (left + numericWidth) + " 100%"; left += numericWidth; 96 getGUIObjectByName("templesBuiltHeading").size = left + " 16 " + (left + numericWidth) + " 100%"; left += numericWidth; 97 getGUIObjectByName("specialBuildingsBuiltHeading").size = left + " 16 " + (left + numericWidth) + " 100%"; left += numericWidth; 90 98 99 var left = 50; 100 getGUIObjectByName("playerName4Heading").size = left + " 26 " + (left + playerNameHeadingWidth) + " 100%"; left += playerNameHeadingWidth; 101 getGUIObjectByName("workersTrainedHeading").size = left + " 16 " + (left + numericWidth) + " 100%"; left += numericWidth; 102 getGUIObjectByName("foodGatheredHeading").size = left + " 16 " + (left + numericWidth) + " 100%"; left += numericWidth; 103 getGUIObjectByName("woodGatheredHeading").size = left + " 16 " + (left + numericWidth) + " 100%"; left += numericWidth; 104 getGUIObjectByName("metalGatheredHeading").size = left + " 16 " + (left + numericWidth) + " 100%"; left += numericWidth; 105 getGUIObjectByName("stoneGatheredHeading").size = left + " 16 " + (left + numericWidth) + " 100%"; left += numericWidth; 106 getGUIObjectByName("totalGatheredHeading").size = left + " 16 " + (left + numericWidth) + " 100%"; left += numericWidth; 107 getGUIObjectByName("vegetarianRatioHeading").size = left + " 16 " + (left + numericWidth) + " 100%"; left += numericWidth; 108 109 var left = 50; 110 getGUIObjectByName("playerName5Heading").size = left + " 26 " + (left + playerNameHeadingWidth) + " 100%"; left += playerNameHeadingWidth; 111 getGUIObjectByName("foodLootedHeading").size = left + " 16 " + (left + numericWidth) + " 100%"; left += numericWidth; 112 getGUIObjectByName("woodLootedHeading").size = left + " 16 " + (left + numericWidth) + " 100%"; left += numericWidth; 113 getGUIObjectByName("metalLootedHeading").size = left + " 16 " + (left + numericWidth) + " 100%"; left += numericWidth; 114 getGUIObjectByName("stoneLootedHeading").size = left + " 16 " + (left + numericWidth) + " 100%"; left += numericWidth; 115 getGUIObjectByName("totalLootedHeading").size = left + " 16 " + (left + numericWidth) + " 100%"; left += numericWidth; 116 getGUIObjectByName("treasuresCollectedHeading").size = left + " 16 " + (left + numericWidth) + " 100%"; left += numericWidth; 117 91 118 // Show counters 92 119 for (var i = 0; i < MAX_SLOTS; ++i) 93 120 { … … 115 142 getGUIObjectByName("civIcon"+k+"["+i+"]").sprite = "stretched:"+civData[playerState.civ].Emblem; 116 143 } 117 144 118 var unitsTrained = getGUIObjectByName("unitsTrained["+i+"]"); 119 var unitsLost = getGUIObjectByName("unitsLost["+i+"]"); 120 var enemyUnitsKilled = getGUIObjectByName("enemyUnitsKilled["+i+"]"); 121 var buildingsConstructed = getGUIObjectByName("buildingsConstructed["+i+"]"); 122 var buildingsLost = getGUIObjectByName("buildingsLost["+i+"]"); 123 var enemyBuildingsDestroyed = getGUIObjectByName("enemyBuildingsDestroyed["+i+"]"); 124 145 //Conquest panel 125 146 var civCentresBuilt = getGUIObjectByName("civCentresBuilt["+i+"]"); 126 var enemyCivCentres Destroyed = getGUIObjectByName("enemyCivCentresDestroyed["+i+"]");147 var enemyCivCentresRazed = getGUIObjectByName("enemyCivCentresRazed["+i+"]"); 127 148 var mapExploration = getGUIObjectByName("mapExploration["+i+"]"); 128 149 150 //Army panel 151 var soldiersTrained = getGUIObjectByName("soldiersTrained["+i+"]"); 152 var soldiersLost = getGUIObjectByName("soldiersLost["+i+"]"); 153 var enemySoldiersKilled = getGUIObjectByName("enemySoldiersKilled["+i+"]"); 154 var armyKillDeathRatio = getGUIObjectByName("armyKillDeathRatio["+i+"]"); 155 var favouriteSoldier = getGUIObjectByName("favouriteSoldier["+i+"]"); 156 157 //Navy panel 158 var warshipsBuilt = getGUIObjectByName("warshipsBuilt["+i+"]"); 159 var warshipsLost = getGUIObjectByName("warshipsLost["+i+"]"); 160 var enemyWarshipsDestroyed = getGUIObjectByName("enemyWarshipsDestroyed["+i+"]"); 161 var navyKillDeathRatio = getGUIObjectByName("navyKillDeathRatio["+i+"]"); 162 var favouriteWarship = getGUIObjectByName("favouriteWarship["+i+"]"); 163 164 //Buildings panel 165 var buildingsBuilt = getGUIObjectByName("buildingsBuilt["+i+"]"); 166 var buildingsLost = getGUIObjectByName("buildingsLost["+i+"]"); 167 var enemyBuildingsRazed = getGUIObjectByName("enemyBuildingsRazed["+i+"]"); 168 var templesBuilt = getGUIObjectByName("templesBuilt["+i+"]"); 169 var specialBuildingsBuilt = getGUIObjectByName("specialBuildingsBuilt["+i+"]"); 170 171 //Economy panel 172 var workersTrained = getGUIObjectByName("workersTrained["+i+"]"); 129 173 var foodGathered = getGUIObjectByName("foodGathered["+i+"]"); 130 var vegetarianRatio = getGUIObjectByName("vegetarianRatio["+i+"]");131 174 var woodGathered = getGUIObjectByName("woodGathered["+i+"]"); 132 175 var metalGathered = getGUIObjectByName("metalGathered["+i+"]"); 133 176 var stoneGathered = getGUIObjectByName("stoneGathered["+i+"]"); 177 var totalGathered = getGUIObjectByName("totalGathered["+i+"]"); 178 var vegetarianRatio = getGUIObjectByName("vegetarianRatio["+i+"]"); 179 180 //Loot and Treasure panel 181 var foodLooted = getGUIObjectByName("foodLooted["+i+"]"); 182 var woodLooted = getGUIObjectByName("woodLooted["+i+"]"); 183 var metalLooted = getGUIObjectByName("metalLooted["+i+"]"); 184 var stoneLooted = getGUIObjectByName("stoneLooted["+i+"]"); 185 var totalLooted = getGUIObjectByName("totalLooted["+i+"]"); 134 186 var treasuresCollected = getGUIObjectByName("treasuresCollected["+i+"]"); 135 187 136 // align counters137 188 189 // Cell widths 190 var numericWidth = 100; 191 var textWidth = 170; 192 193 // Align Conquest panel cells 138 194 var left = 240; 139 var width = 100; 140 unitsTrained.size = left + " 2 " + (left + width) + " 100%"; left += width; 141 unitsLost.size = left + " 2 " + (left + width) + " 100%"; left += width; 142 enemyUnitsKilled.size = left + " 2 " + (left + width) + " 100%"; left += width; 143 buildingsConstructed.size = left + " 2 " + (left + width) + " 100%"; left += width; 144 buildingsLost.size = left + " 2 " + (left + width) + " 100%"; left += width; 145 enemyBuildingsDestroyed.size = left + " 2 " + (left + width) + " 100%"; left += width; 195 civCentresBuilt.size = left + " 2 " + (left + numericWidth) + " 100%"; left += numericWidth; 196 enemyCivCentresRazed.size = left + " 2 " + (left + numericWidth) + " 100%"; left += numericWidth; 197 mapExploration.size = left + " 2 " + (left + numericWidth) + " 100%"; left += numericWidth; 198 146 199 var size = getGUIObjectByName("playerBox0["+i+"]").size; 147 200 size.right = left + 10; 148 201 getGUIObjectByName("playerBox0["+i+"]").size = size; 149 202 203 // Align Army panel cells 150 204 var left = 240; 151 civCentresBuilt.size = left + " 2 " + (left + width) + " 100%"; left += width; 152 enemyCivCentresDestroyed.size = left + " 2 " + (left + width) + " 100%"; left += width; 153 mapExploration.size = left + " 2 " + (left + width) + " 100%"; left += width; 205 soldiersTrained.size = left + " 2 " + (left + numericWidth) + " 100%"; left += numericWidth; 206 soldiersLost.size = left + " 2 " + (left + numericWidth) + " 100%"; left += numericWidth; 207 enemySoldiersKilled.size = left + " 2 " + (left + numericWidth) + " 100%"; left += numericWidth; 208 armyKillDeathRatio.size = left + " 2 " + (left + numericWidth) + " 100%"; left += numericWidth; 209 favouriteSoldier.size = left + " 2 " + (left + textWidth) + " 100%"; left += textWidth; 210 154 211 var size = getGUIObjectByName("playerBox1["+i+"]").size; 155 212 size.right = left + 10; 156 213 getGUIObjectByName("playerBox1["+i+"]").size = size; 157 214 215 //Align Navy panel cells 158 216 var left = 240; 159 foodGathered.size = left + " 2 " + (left + width) + " 100%"; left += width;160 vegetarianRatio.size = left + " 2 " + (left + width) + " 100%"; left += width;161 woodGathered.size = left + " 2 " + (left + width) + " 100%"; left += width;162 metalGathered.size = left + " 2 " + (left + width) + " 100%"; left += width;163 stoneGathered.size = left + " 2 " + (left + width) + " 100%"; left += width;164 treasuresCollected.size = left + " 2 " + (left + width) + " 100%"; left += width;217 warshipsBuilt.size = left + " 2 " + (left + numericWidth) + " 100%"; left += numericWidth; 218 warshipsLost.size = left + " 2 " + (left + numericWidth) + " 100%"; left += numericWidth; 219 enemyWarshipsDestroyed.size = left + " 2 " + (left + numericWidth) + " 100%"; left += numericWidth; 220 navyKillDeathRatio.size = left + " 2 " + (left + numericWidth) + " 100%"; left += numericWidth; 221 favouriteWarship.size = left + " 2 " + (left + textWidth) + " 100%"; left += textWidth; 222 165 223 var size = getGUIObjectByName("playerBox2["+i+"]").size; 166 224 size.right = left + 10; 167 225 getGUIObjectByName("playerBox2["+i+"]").size = size; 168 226 169 // display counters170 unitsTrained.caption = playerState.statistics.unitsTrained;171 unitsLost.caption = playerState.statistics.unitsLost;172 enemyUnitsKilled.caption = playerState.statistics.enemyUnitsKilled;173 buildingsConstructed.caption = playerState.statistics.buildingsConstructed;174 buildingsLost.caption = playerState.statistics.buildingsLost;175 enemyBuildingsDestroyed.caption = playerState.statistics.enemyBuildingsDestroyed;227 //Align Building panel cells 228 var left = 240; 229 buildingsBuilt.size = left + " 2 " + (left + numericWidth) + " 100%"; left += numericWidth; 230 buildingsLost.size = left + " 2 " + (left + numericWidth) + " 100%"; left += numericWidth; 231 enemyBuildingsRazed.size = left + " 2 " + (left + numericWidth) + " 100%"; left += numericWidth; 232 templesBuilt.size = left + " 2 " + (left + numericWidth) + " 100%"; left += numericWidth; 233 specialBuildingsBuilt.size = left + " 2 " + (left + numericWidth) + " 100%"; left += numericWidth; 176 234 235 var size = getGUIObjectByName("playerBox3["+i+"]").size; 236 size.right = left + 10; 237 getGUIObjectByName("playerBox3["+i+"]").size = size; 238 239 //Align Economy panel cells 240 var left = 240; 241 workersTrained.size = left + " 2 " + (left + numericWidth) + " 100%"; left += numericWidth; 242 foodGathered.size = left + " 2 " + (left + numericWidth) + " 100%"; left += numericWidth; 243 woodGathered.size = left + " 2 " + (left + numericWidth) + " 100%"; left += numericWidth; 244 metalGathered.size = left + " 2 " + (left + numericWidth) + " 100%"; left += numericWidth; 245 stoneGathered.size = left + " 2 " + (left + numericWidth) + " 100%"; left += numericWidth; 246 totalGathered.size = left + " 2 " + (left + numericWidth) + " 100%"; left += numericWidth; 247 vegetarianRatio.size = left + " 2 " + (left + numericWidth) + " 100%"; left += numericWidth; 248 249 var size = getGUIObjectByName("playerBox4["+i+"]").size; 250 size.right = left + 10; 251 getGUIObjectByName("playerBox4["+i+"]").size = size; 252 253 //Align Loot and Treasure panel cells 254 var left = 240; 255 foodLooted.size = left + " 2 " + (left + numericWidth) + " 100%"; left += numericWidth; 256 woodLooted.size = left + " 2 " + (left + numericWidth) + " 100%"; left += numericWidth; 257 metalLooted.size = left + " 2 " + (left + numericWidth) + " 100%"; left += numericWidth; 258 stoneLooted.size = left + " 2 " + (left + numericWidth) + " 100%"; left += numericWidth; 259 totalLooted.size = left + " 2 " + (left + numericWidth) + " 100%"; left += numericWidth; 260 treasuresCollected.size = left + " 2 " + (left + numericWidth) + " 100%"; left += numericWidth; 261 262 var size = getGUIObjectByName("playerBox5["+i+"]").size; 263 size.right = left + 10; 264 getGUIObjectByName("playerBox5["+i+"]").size = size; 265 266 //Display statistics 177 267 civCentresBuilt.caption = playerState.statistics.civCentresBuilt; 178 enemyCivCentres Destroyed.caption = playerState.statistics.enemyCivCentresDestroyed;268 enemyCivCentresRazed.caption = playerState.statistics.enemyCivCentresRazed; 179 269 mapExploration.caption = playerState.statistics.percentMapExplored + "%"; 180 270 271 soldiersTrained.caption = playerState.statistics.soldiersTrained; 272 soldiersLost.caption = playerState.statistics.soldiersLost; 273 enemySoldiersKilled.caption = playerState.statistics.enemySoldiersKilled; 274 armyKillDeathRatio.caption = playerState.statistics.armyKillDeathRatio; 275 favouriteSoldier.caption = playerState.statistics.favouriteSoldier; 276 277 warshipsBuilt.caption = playerState.statistics.warshipsBuilt; 278 warshipsLost.caption = playerState.statistics.warshipsLost; 279 enemyWarshipsDestroyed.caption = playerState.statistics.enemyWarshipsDestroyed; 280 navyKillDeathRatio.caption = playerState.statistics.navyKillDeathRatio; 281 favouriteWarship.caption = playerState.statistics.favouriteWarship; 282 283 buildingsBuilt.caption = playerState.statistics.buildingsBuilt; 284 buildingsLost.caption = playerState.statistics.buildingsLost; 285 enemyBuildingsRazed.caption = playerState.statistics.enemyBuildingsRazed; 286 templesBuilt.caption = playerState.statistics.templesBuilt; 287 specialBuildingsBuilt.caption = playerState.statistics.specialBuildingsBuilt; 288 289 workersTrained.caption = playerState.statistics.workersTrained; 181 290 foodGathered.caption = playerState.statistics.resourcesGathered.food; 182 vegetarianRatio.caption = Math.floor(playerState.statistics.resourcesGathered.food > 0 ?183 (playerState.statistics.resourcesGathered.vegetarianFood / playerState.statistics.resourcesGathered.food) * 100 : 0) + "%";184 291 woodGathered.caption = playerState.statistics.resourcesGathered.wood; 185 292 metalGathered.caption = playerState.statistics.resourcesGathered.metal; 186 293 stoneGathered.caption = playerState.statistics.resourcesGathered.stone; 294 totalGathered.caption = 295 playerState.statistics.resourcesGathered.food 296 + playerState.statistics.resourcesGathered.wood 297 + playerState.statistics.resourcesGathered.metal 298 + playerState.statistics.resourcesGathered.stone; 299 vegetarianRatio.caption = Math.floor(playerState.statistics.resourcesGathered.food > 0 ? 300 (playerState.statistics.resourcesGathered.vegetarianFood / playerState.statistics.resourcesGathered.food) * 100 : 0) + "%"; 301 302 foodLooted.caption = playerState.statistics.resourcesLooted.food; 303 woodLooted.caption = playerState.statistics.resourcesLooted.wood; 304 metalLooted.caption = playerState.statistics.resourcesLooted.metal; 305 stoneLooted.caption = playerState.statistics.resourcesLooted.stone; 306 totalLooted.caption = 307 playerState.statistics.resourcesLooted.food 308 + playerState.statistics.resourcesLooted.wood 309 + playerState.statistics.resourcesLooted.metal 310 + playerState.statistics.resourcesLooted.stone; 187 311 treasuresCollected.caption = playerState.statistics.treasuresCollected; 312 188 313 } 189 314 else 190 315 { -
gui/summary/summary.xml
38 38 text_align="center" 39 39 /> 40 40 </object> 41 42 43 <object name="unitsBuildingsPanelButton" type="button" sprite="bgInfoBox" text_align="center" size="10 75 160 101"> 41 42 <object name="conquestPanelButton" type="button" sprite="bgInfoBox" text_align="center" size="10 75 160 101"> 44 43 <action on="Press">selectPanel(0);</action> 45 Units/buildings44 Conquest 46 45 </object> 47 <object name=" conquestPanelButton" type="button" sprite="bgInfoHeading" text_align="center" size="160 75 310 101">46 <object name="armyPanelButton" type="button" sprite="bgInfoHeading" text_align="center" size="160 75 310 101"> 48 47 <action on="Press">selectPanel(1);</action> 49 Conquest48 Army 50 49 </object> 51 <object name=" resourcesPanelButton" type="button" sprite="bgInfoHeading" text_align="center" size="310 75 460 101">50 <object name="navyPanelButton" type="button" sprite="bgInfoHeading" text_align="center" size="310 75 460 101"> 52 51 <action on="Press">selectPanel(2);</action> 53 Resources52 Navy 54 53 </object> 55 <object name="unitsBuildingsPanel" type="image" sprite="bgInfoBox" size="10 100 100%-10 100%-50"> 54 <object name="buildingsPanelButton" type="button" sprite="bgInfoHeading" text_align="center" size="460 75 610 101"> 55 <action on="Press">selectPanel(3);</action> 56 Buildings 57 </object> 58 <object name="economyPanelButton" type="button" sprite="bgInfoHeading" text_align="center" size="610 75 760 101"> 59 <action on="Press">selectPanel(4);</action> 60 Economy 61 </object> 62 <object name="lootTreasurePanelButton" type="button" sprite="bgInfoHeading" text_align="center" size="760 75 910 101"> 63 <action on="Press">selectPanel(5);</action> 64 Loot and Treasure 65 </object> 66 67 <object name="conquestPanel" type="image" sprite="bgInfoBox" size="10 100 100%-10 100%-50"> 68 <object size="0 0 100% 100%-50"> 69 <object name="playerName0Heading" type="text" text_align="left" font="serif-bold-14" > 70 Player Name 71 </object> 72 <object name="civCentresBuiltHeading" type="text" text_align="center" font="serif-bold-14" > 73 Civ Centres Built 74 </object> 75 <object name="enemyCivCentresRazedHeading" type="text" text_align="center" font="serif-bold-14" > 76 Enemy Civ Centres Razed 77 </object> 78 <object name="mapExplorationHeading" type="text" text_align="center" font="serif-bold-14" > 79 Map Exploration 80 </object> 81 </object> 56 82 83 <object size="0 65 100% 100%-50"> 84 <repeat count="8"> 85 <object type="image" name="playerBox0[n]" size="10 0 10 30"> 86 <object name="playerColourBox0[n]" type="image" size="10 4 30 24" /> 87 <object name="playerName0[n]" type="text" text_align="left" size="40 2 208 100%" /> 88 <object name="civIcon0[n]" type="image" size="208 0 240 32"/> 89 <object name="civCentresBuilt[n]" type="text" text_align="center" /> 90 <object name="enemyCivCentresRazed[n]" type="text" text_align="center" /> 91 <object name="mapExploration[n]" type="text" text_align="center" /> 92 </object> 93 </repeat> 94 </object> 95 </object> 96 97 <object name="armyPanel" type="image" sprite="bgInfoBox" size="10 100 100%-10 100%-50" hidden="true"> 57 98 <object size="0 0 100% 100%-50"> 58 <object name="playerName 0Heading" type="text" text_align="left" font="serif-bold-14" >59 Player name99 <object name="playerName1Heading" type="text" text_align="left" font="serif-bold-14" > 100 Player Name 60 101 </object> 61 <object name=" unitsTrainedHeading" type="text" text_align="center" font="serif-bold-14" >62 Units trained102 <object name="soldiersTrainedHeading" type="text" text_align="center" font="serif-bold-14" > 103 Soldiers Trained 63 104 </object> 64 <object name=" unitsLostHeading" type="text" text_align="center" font="serif-bold-14" >65 Units lost105 <object name="soldiersLostHeading" type="text" text_align="center" font="serif-bold-14" > 106 Soldiers Lost 66 107 </object> 67 <object name="enemy UnitsKilledHeading" type="text" text_align="center" font="serif-bold-14" >68 Enemy units killed108 <object name="enemySoldiersKilledHeading" type="text" text_align="center" font="serif-bold-14" > 109 Enemy Soldiers Killed 69 110 </object> 70 <object name=" buildingsConstructedHeading" type="text" text_align="center" font="serif-bold-14" >71 Buildings constructed111 <object name="armyKillDeathRatioHeading" type="text" text_align="center" font="serif-bold-14" > 112 Kill/Death Ratio 72 113 </object> 73 <object name=" buildingsLostHeading" type="text" text_align="center" font="serif-bold-14" >74 Buildings lost114 <object name="favouriteSoldierHeading" type="text" text_align="center" font="serif-bold-14" > 115 Favourite Soldier 75 116 </object> 76 <object name="enemyBuildingsDestroyedHeading" type="text" text_align="center" font="serif-bold-14" > 77 Enemy buildings destroyed 117 </object> 118 119 <object size="0 65 100% 100%-50"> 120 <repeat count="8"> 121 <object type="image" name="playerBox1[n]" size="10 0 10 30" hidden="true"> 122 <object name="playerColourBox1[n]" type="image" size="10 4 30 24" /> 123 <object name="playerName1[n]" type="text" text_align="left" size="40 2 208 100%" /> 124 <object name="civIcon1[n]" type="image" size="208 0 240 32"/> 125 <object name="soldiersTrained[n]" type="text" text_align="center" /> 126 <object name="soldiersLost[n]" type="text" text_align="center" /> 127 <object name="enemySoldiersKilled[n]" type="text" text_align="center" /> 128 <object name="armyKillDeathRatio[n]" type="text" text_align="center" /> 129 <object name="favouriteSoldier[n]" type="text" text_align="center" /> 130 </object> 131 </repeat> 132 </object> 133 </object> 134 135 <object name="navyPanel" type="image" sprite="bgInfoBox" size="10 100 100%-10 100%-50" hidden="true"> 136 <object size="0 0 100% 100%-50"> 137 <object name="playerName2Heading" type="text" text_align="left" font="serif-bold-14" > 138 Player Name 78 139 </object> 79 140 <object name="warshipsBuiltHeading" type="text" text_align="center" font="serif-bold-14" > 141 Warships Built 142 </object> 143 <object name="warshipsLostHeading" type="text" text_align="center" font="serif-bold-14" > 144 Warships Lost 145 </object> 146 <object name="enemyWarshipsDestroyedHeading" type="text" text_align="center" font="serif-bold-14" > 147 Enemy Warships Destroyed 148 </object> 149 <object name="navyKillDeathRatioHeading" type="text" text_align="center" font="serif-bold-14" > 150 Kill/Death Ratio 151 </object> 152 <object name="favouriteWarshipHeading" type="text" text_align="center" font="serif-bold-14" > 153 Favourite Warship 154 </object> 80 155 </object> 81 156 82 157 <object size="0 65 100% 100%-50"> 83 158 <repeat count="8"> 84 <object type="image" name="playerBox0[n]" size="10 0 10 30" hidden="true"> 85 <object name="playerColourBox0[n]" type="image" size="10 4 30 24" /> 86 <object name="playerName0[n]" type="text" text_align="left" size="40 2 208 100%" /> 87 <object name="civIcon0[n]" type="image" size="208 0 240 32"/> 88 <object name="unitsTrained[n]" type="text" text_align="center" /> 89 <object name="unitsLost[n]" type="text" text_align="center" /> 90 <object name="enemyUnitsKilled[n]" type="text" text_align="center" /> 91 <object name="buildingsConstructed[n]" type="text" text_align="center" /> 92 <object name="buildingsLost[n]" type="text" text_align="center" /> 93 <object name="enemyBuildingsDestroyed[n]" type="text" text_align="center" /> 159 <object type="image" name="playerBox2[n]" size="10 0 10 30" hidden="true"> 160 <object name="playerColourBox2[n]" type="image" size="10 4 30 24" /> 161 <object name="playerName2[n]" type="text" text_align="left" size="40 2 208 100%" /> 162 <object name="civIcon2[n]" type="image" size="208 0 240 32"/> 163 <object name="warshipsBuilt[n]" type="text" text_align="center" /> 164 <object name="warshipsLost[n]" type="text" text_align="center" /> 165 <object name="enemyWarshipsDestroyed[n]" type="text" text_align="center" /> 166 <object name="navyKillDeathRatio[n]" type="text" text_align="center" /> 167 <object name="favouriteWarship[n]" type="text" text_align="center" /> 94 168 </object> 95 169 </repeat> 96 170 </object> 171 </object> 97 172 98 </object> 99 <object name="conquestPanel" type="image" sprite="bgInfoBox" size="10 100 100%-10 100%-50" hidden="true"> 100 173 <object name="buildingsPanel" type="image" sprite="bgInfoBox" size="10 100 100%-10 100%-50" hidden="true"> 101 174 <object size="0 0 100% 100%-50"> 102 <object name="playerName 1Heading" type="text" text_align="left" font="serif-bold-14" >103 Player name175 <object name="playerName3Heading" type="text" text_align="left" font="serif-bold-14" > 176 Player Name 104 177 </object> 105 <object name=" civCentresBuiltHeading" type="text" text_align="center" font="serif-bold-14" >106 Civ centres built178 <object name="buildingsBuiltHeading" type="text" text_align="center" font="serif-bold-14" > 179 Buildings Built 107 180 </object> 108 <object name=" enemyCivCentresDestroyedHeading" type="text" text_align="center" font="serif-bold-14" >109 Enemy civ centres destroyed181 <object name="buildingsLostHeading" type="text" text_align="center" font="serif-bold-14" > 182 Buildings Lost 110 183 </object> 111 <object name=" mapExplorationHeading" type="text" text_align="center" font="serif-bold-14" >112 Map exploration184 <object name="enemyBuildingsRazedHeading" type="text" text_align="center" font="serif-bold-14" > 185 Enemy Buildings Razed 113 186 </object> 187 <object name="templesBuiltHeading" type="text" text_align="center" font="serif-bold-14" > 188 Temples Built 189 </object> 190 <object name="specialBuildingsBuiltHeading" type="text" text_align="center" font="serif-bold-14" > 191 Special Buildings Built 192 </object> 114 193 </object> 115 194 116 195 <object size="0 65 100% 100%-50"> 117 196 <repeat count="8"> 118 <object type="image" name="playerBox1[n]" size="10 0 10 30" hidden="true"> 119 <object name="playerColourBox1[n]" type="image" size="10 4 30 24" /> 120 <object name="playerName1[n]" type="text" text_align="left" size="40 2 208 100%" /> 121 <object name="civIcon1[n]" type="image" size="208 0 240 32"/> 122 <object name="civCentresBuilt[n]" type="text" text_align="center" /> 123 <object name="enemyCivCentresDestroyed[n]" type="text" text_align="center" /> 124 <object name="mapExploration[n]" type="text" text_align="center" /> 197 <object type="image" name="playerBox3[n]" size="10 0 10 30" hidden="true"> 198 <object name="playerColourBox3[n]" type="image" size="10 4 30 24" /> 199 <object name="playerName3[n]" type="text" text_align="left" size="40 2 208 100%" /> 200 <object name="civIcon3[n]" type="image" size="208 0 240 32"/> 201 <object name="buildingsBuilt[n]" type="text" text_align="center" /> 202 <object name="buildingsLost[n]" type="text" text_align="center" /> 203 <object name="enemyBuildingsRazed[n]" type="text" text_align="center" /> 204 <object name="templesBuilt[n]" type="text" text_align="center" /> 205 <object name="specialBuildingsBuilt[n]" type="text" text_align="center" /> 125 206 </object> 126 207 </repeat> 127 208 </object> 128 129 209 </object> 130 <object name="resourcesPanel" type="image" sprite="bgInfoBox" size="10 100 100%-10 100%-50" hidden="true">131 210 211 <object name="economyPanel" type="image" sprite="bgInfoBox" size="10 100 100%-10 100%-50" hidden="true"> 132 212 <object size="0 0 100% 100%-50"> 133 <object name="playerName 2Heading" type="text" text_align="left" font="serif-bold-14" >134 Player name213 <object name="playerName4Heading" type="text" text_align="left" font="serif-bold-14" > 214 Player Name 135 215 </object> 216 <object name="workersTrainedHeading" type="text" text_align="center" font="serif-bold-14" > 217 Workers Trained 218 </object> 136 219 <object name="foodGatheredHeading" type="text" text_align="center" font="serif-bold-14" > 137 Food gathered220 Food Gathered 138 221 </object> 139 <object name="vegetarianRatioHeading" type="text" text_align="center" font="serif-bold-14" >140 Vegetarian ratio141 </object>142 222 <object name="woodGatheredHeading" type="text" text_align="center" font="serif-bold-14" > 143 Wood gathered223 Wood Gathered 144 224 </object> 145 225 <object name="metalGatheredHeading" type="text" text_align="center" font="serif-bold-14" > 146 Metal gathered226 Metal Gathered 147 227 </object> 148 228 <object name="stoneGatheredHeading" type="text" text_align="center" font="serif-bold-14" > 149 Stone gathered229 Stone Gathered 150 230 </object> 231 <object name="totalGatheredHeading" type="text" text_align="center" font="serif-bold-14" > 232 Total Gathered 233 </object> 234 <object name="vegetarianRatioHeading" type="text" text_align="center" font="serif-bold-14" > 235 Vegetarian Ratio 236 </object> 237 </object> 238 239 <object size="0 65 100% 100%-50"> 240 <repeat count="8"> 241 <object type="image" name="playerBox4[n]" size="10 0 10 30" hidden="true"> 242 <object name="playerColourBox4[n]" type="image" size="10 4 30 24" /> 243 <object name="playerName4[n]" type="text" text_align="left" size="40 2 208 100%" /> 244 <object name="civIcon4[n]" type="image" size="208 0 240 32"/> 245 <object name="workersTrained[n]" type="text" text_align="center" /> 246 <object name="foodGathered[n]" type="text" text_align="center" /> 247 <object name="woodGathered[n]" type="text" text_align="center" /> 248 <object name="metalGathered[n]" type="text" text_align="center" /> 249 <object name="stoneGathered[n]" type="text" text_align="center" /> 250 <object name="totalGathered[n]" type="text" text_align="center" /> 251 <object name="vegetarianRatio[n]" type="text" text_align="center" /> 252 </object> 253 </repeat> 254 </object> 255 </object> 256 257 <object name="lootTreasurePanel" type="image" sprite="bgInfoBox" size="10 100 100%-10 100%-50" hidden="true"> 258 <object size="0 0 100% 100%-50"> 259 <object name="playerName5Heading" type="text" text_align="left" font="serif-bold-14" > 260 Player Name 261 </object> 262 <object name="foodLootedHeading" type="text" text_align="center" font="serif-bold-14" > 263 Food Looted 264 </object> 265 <object name="woodLootedHeading" type="text" text_align="center" font="serif-bold-14" > 266 Wood Looted 267 </object> 268 <object name="metalLootedHeading" type="text" text_align="center" font="serif-bold-14" > 269 Metal Looted 270 </object> 271 <object name="stoneLootedHeading" type="text" text_align="center" font="serif-bold-14" > 272 Stone Looted 273 </object> 274 <object name="totalLootedHeading" type="text" text_align="center" font="serif-bold-14" > 275 Total Looted 276 </object> 151 277 <object name="treasuresCollectedHeading" type="text" text_align="center" font="serif-bold-14" > 152 Treasures collected278 Treasures Collected 153 279 </object> 154 280 </object> 155 281 156 282 <object size="0 65 100% 100%-50"> 157 283 <repeat count="8"> 158 <object type="image" name="playerBox 2[n]" size="10 0 10 30" hidden="true">159 <object name="playerColourBox 2[n]"type="image" size="10 4 30 24" />160 <object name="playerName 2[n]"type="text" text_align="left" size="40 2 208 100%" />161 <object name="civIcon 2[n]"type="image" size="208 0 240 32"/>162 <object name="food Gathered[n]"type="text" text_align="center" />163 <object name=" vegetarianRatio[n]"type="text" text_align="center" />164 <object name=" woodGathered[n]"type="text" text_align="center" />165 <object name=" metalGathered[n]"type="text" text_align="center" />166 <object name=" stoneGathered[n]"type="text" text_align="center" />167 <object name="treasuresCollected[n]" 284 <object type="image" name="playerBox5[n]" size="10 0 10 30" hidden="true"> 285 <object name="playerColourBox5[n]" type="image" size="10 4 30 24" /> 286 <object name="playerName5[n]" type="text" text_align="left" size="40 2 208 100%" /> 287 <object name="civIcon5[n]" type="image" size="208 0 240 32"/> 288 <object name="foodLooted[n]" type="text" text_align="center" /> 289 <object name="woodLooted[n]" type="text" text_align="center" /> 290 <object name="metalLooted[n]" type="text" text_align="center" /> 291 <object name="stoneLooted[n]" type="text" text_align="center" /> 292 <object name="totalLooted[n]" type="text" text_align="center" /> 293 <object name="treasuresCollected[n]" type="text" text_align="center" /> 168 294 </object> 169 295 </repeat> 170 296 </object> 171 172 297 </object> 173 298 174 299 <object type="button" style="wheatButton" size="100%-150 100%-40 100% 100%"> -
simulation/components/Foundation.js
184 184 cmpBuildingOwnership.SetOwner(cmpOwnership.GetOwner()); 185 185 186 186 var cmpPlayerStatisticsTracker = QueryOwnerInterface(this.entity, IID_StatisticsTracker); 187 cmpPlayerStatisticsTracker.IncreaseConstructedBuildingsCounter( );187 cmpPlayerStatisticsTracker.IncreaseConstructedBuildingsCounter(building); 188 188 189 189 var cmpIdentity = Engine.QueryInterface(building, IID_Identity); 190 190 if (cmpIdentity.GetClassesList().indexOf("CivCentre") != -1) cmpPlayerStatisticsTracker.IncreaseBuiltCivCentresCounter(); -
simulation/components/Identity.js
33 33 "</element>" + 34 34 "</optional>" + 35 35 "<optional>" + 36 "<element name='StatisticsGroupName' a:help='Name used to group entities for statistic counting'>" + 37 "<text/>" + 38 "</element>" + 39 "</optional>" + 40 "<optional>" + 36 41 "<element name='Tooltip'>" + 37 42 "<text/>" + 38 43 "</element>" + … … 189 194 return (this.template.SelectionGroupName || ""); 190 195 } 191 196 197 Identity.prototype.GetStatisticsGroupName = function() 198 { 199 return (this.template.StatisticsGroupName || ""); 200 } 201 202 203 Identity.prototype.GetSpecificName = function() 204 { 205 return (this.template.SpecificName || this.template.GenericName || ""); 206 } 207 208 Identity.prototype.GetGenericName = function() 209 { 210 return (this.template.GenericName || ""); 211 } 212 192 213 Engine.RegisterComponentType(IID_Identity, "Identity", Identity); -
simulation/components/Looter.js
21 21 } 22 22 var cmpPlayer = QueryOwnerInterface(this.entity, IID_Player); 23 23 cmpPlayer.AddResources(cmpLoot.GetResources()); 24 25 var cmpPlayerStatisticsTracker = QueryOwnerInterface(this.entity, IID_StatisticsTracker); 26 cmpPlayerStatisticsTracker.IncreaseResourceLootedCounters(cmpLoot.GetResources()); 24 27 } 25 28 26 29 Engine.RegisterComponentType(IID_Looter, "Looter", Looter); -
simulation/components/StatisticsTracker.js
5 5 6 6 StatisticsTracker.prototype.Init = function() 7 7 { 8 // units9 8 this.unitsTrained = 0; 10 this.unitsLost = 0; 11 this.enemyUnitsKilled = 0; 12 //buildings 13 this.buildingsConstructed = 0; 9 // Conquest 10 this.civCentresBuilt = 0; 11 this.enemyCivCentresRazed = 0; 12 // Army 13 this.soldierTypeCount = new Object(); 14 this.soldiersTrained = 0; 15 this.soldiersLost = 0; 16 this.enemySoldiersKilled = 0; 17 // Navy 18 this.warshipTypeCount = new Object(); 19 this.warshipsBuilt = 0; 20 this.warshipsLost = 0; 21 this.enemyWarshipsDestroyed = 0; 22 // Buildings 23 this.buildingsBuilt = 0; 14 24 this.buildingsLost = 0; 15 this.enemyBuildings Destroyed = 0;16 // civ centres17 this. civCentresBuilt = 0;18 this.enemyCivCentresDestroyed = 0;19 // resources25 this.enemyBuildingsRazed = 0; 26 this.templesBuilt = 0; 27 this.specialBuildingsBuilt = 0; 28 // Economy 29 this.workersTrained = 0; 20 30 this.resourcesGathered = { 21 31 "food": 0, 22 32 "wood": 0, … … 24 34 "stone": 0, 25 35 "vegetarianFood": 0 26 36 } 37 // Loot and Treasures 38 this.resourcesLooted = { 39 "food": 0, 40 "wood": 0, 41 "metal": 0, 42 "stone": 0 43 } 27 44 this.treasuresCollected = 0; 28 45 }; 29 46 30 47 StatisticsTracker.prototype.GetStatistics = function() 31 48 { 32 49 return { 33 "unitsTrained": this.unitsTrained, 34 "unitsLost": this.unitsLost, 35 "enemyUnitsKilled": this.enemyUnitsKilled, 36 "buildingsConstructed": this.buildingsConstructed, 50 // Conquest 51 "civCentresBuilt": this.civCentresBuilt, 52 "enemyCivCentresRazed": this.enemyCivCentresRazed, 53 "percentMapExplored": this.GetPercentMapExplored(), 54 // Army 55 "soldiersTrained": this.soldiersTrained, 56 "soldiersLost": this.soldiersLost, 57 "enemySoldiersKilled": this.enemySoldiersKilled, 58 "armyKillDeathRatio": this.CalculateKillDeathRatio(this.enemySoldiersKilled, this.soldiersLost), 59 "favouriteSoldier": this.CalculateFavouriteSoldier(), 60 // Navy 61 "warshipsBuilt": this.warshipsBuilt, 62 "warshipsLost": this.warshipsLost, 63 "enemyWarshipsDestroyed": this.enemyWarshipsDestroyed, 64 "navyKillDeathRatio": this.CalculateKillDeathRatio(this.enemyWarshipsDestroyed, this.warshipsLost), 65 "favouriteWarship": this.CalculateFavouriteWarship(), 66 // Buildings 67 "buildingsBuilt": this.buildingsBuilt, 37 68 "buildingsLost": this.buildingsLost, 38 "enemyBuildingsDestroyed": this.enemyBuildingsDestroyed, 39 "civCentresBuilt": this.civCentresBuilt, 40 "enemyCivCentresDestroyed": this.enemyCivCentresDestroyed, 69 "enemyBuildingsRazed": this.enemyBuildingsRazed, 70 "templesBuilt": this.templesBuilt, 71 "specialBuildingsBuilt": this.specialBuildingsBuilt, 72 // Economy 73 "workersTrained": this.workersTrained, 41 74 "resourcesGathered": this.resourcesGathered, 42 "treasuresCollected": this.treasuresCollected, 43 "percentMapExplored": this.GetPercentMapExplored() 75 // Loot and Treasure 76 "resourcesLooted": this.resourcesLooted, 77 "treasuresCollected": this.treasuresCollected 44 78 }; 45 79 }; 46 80 47 StatisticsTracker.prototype.IncreaseTrainedUnitsCounter = function() 81 /** 82 * Counts the total number of units trained as well as an individual count for 83 * each unit type. 84 * @param trainedUnit The unit that has been trained 85 * @return The total count of units trained so far 86 */ 87 StatisticsTracker.prototype.IncreaseTrainedUnitsCounter = function(trainedUnit) 48 88 { 89 var cmpUnitIdentity = Engine.QueryInterface(trainedUnit, IID_Identity); 90 if(cmpUnitIdentity) 91 { 92 var name = cmpUnitIdentity.GetSpecificName(); 93 var classes = cmpUnitIdentity.GetClassesList(); 94 95 var unitIsWorker = classes.indexOf("Worker") != -1 || classes.indexOf("CitizenSoldier") != -1; 96 var unitIsInfantry = classes.indexOf("Infantry") != -1; 97 var unitIsCavalry = classes.indexOf("Cavalry") != -1; 98 var unitIsWarship = classes.indexOf("Warship") != -1; 99 100 if(unitIsWorker) 101 { 102 this.workersTrained++; 103 } 104 105 if(unitIsInfantry || unitIsCavalry) 106 { 107 if(this.soldierTypeCount.hasOwnProperty(name)) 108 { 109 this.soldierTypeCount[name]++ 110 } 111 else 112 { 113 this.soldierTypeCount[name] = 1; 114 } 115 this.soldiersTrained++; 116 } 117 else if(unitIsWarship) 118 { 119 if(this.warshipTypeCount.hasOwnProperty(name)) 120 { 121 this.warshipTypeCount[name]++ 122 } 123 else 124 { 125 this.warshipTypeCount[name] = 1; 126 } 127 this.warshipsBuilt++; 128 } 129 } 49 130 return this.unitsTrained++; 50 131 }; 51 132 52 StatisticsTracker.prototype.IncreaseConstructedBuildingsCounter = function() 133 /** 134 * Counts the total number of buildings built, as well as separately tracking 135 * temples and special buildings. 136 * @param building The building that has been built 137 * @return The total count of buildings built so far 138 */ 139 StatisticsTracker.prototype.IncreaseConstructedBuildingsCounter = function(building) 53 140 { 141 var cmpBuildingIdentity = Engine.QueryInterface(building, IID_Identity); 142 if(cmpBuildingIdentity) 143 { 144 var statsName = cmpBuildingIdentity.GetStatisticsGroupName(); 145 if(statsName == "Temple") 146 { 147 this.templesConstructed++; 148 } 149 else if(statsName == "Special") 150 { 151 this.specialsConstructed++; 152 } 153 } 54 154 return this.buildingsConstructed++; 55 155 }; 56 156 … … 59 159 return this.civCentresBuilt++; 60 160 }; 61 161 162 62 163 StatisticsTracker.prototype.KilledEntity = function(targetEntity) 63 164 { 64 165 var cmpTargetEntityIdentity = Engine.QueryInterface(targetEntity, IID_Identity); … … 67 168 var classes = cmpTargetEntityIdentity.GetClassesList(); 68 169 // we want to deal only with real structures, not foundations 69 170 var cmpFoundation = Engine.QueryInterface(targetEntity, IID_Foundation); 171 70 172 var targetIsStructure = classes.indexOf("Structure") != -1 && cmpFoundation == null; 71 var targetIsUnit = classes.indexOf("Unit") != -1; 173 var targetIsSoldier = classes.indexOf("Infantry") != -1 || classes.indexOf("Cavalry") != -1 ; 174 var targetIsWarship = classes.indexOf("Warship") != -1; 72 175 var targetIsCivCentre = classes.indexOf("CivCentre") != -1; 73 176 74 177 var cmpTargetOwnership = Engine.QueryInterface(targetEntity, IID_Ownership); … … 76 179 // don't increase counters if target player is gaia (player 0) 77 180 if (cmpTargetOwnership.GetOwner() != 0) 78 181 { 79 if (targetIsUnit) this.enemyUnitsKilled++; 80 if (targetIsStructure) this.enemyBuildingsDestroyed++; 81 if (targetIsCivCentre) this.enemyCivCentresDestroyed++; 182 if (targetIsSoldier) this.enemySoldiersKilled++; 183 if (targetIsWarship) this.enemyWarshipsDestroyed++; 184 if (targetIsStructure) this.enemyBuildingsRazed++; 185 if (targetIsCivCentre) this.enemyCivCentresRazed++; 82 186 } 83 187 } 84 188 }; … … 92 196 // we want to deal only with real structures, not foundations 93 197 var cmpFoundation = Engine.QueryInterface(lostEntity, IID_Foundation); 94 198 var lostEntityIsStructure = classes.indexOf("Structure") != -1 && cmpFoundation == null; 95 var lostEntityIsUnit = classes.indexOf("Unit") != -1; 199 var lostEntityIsSoldier = classes.indexOf("Infantry") != -1 || classes.indexOf("Cavalry") != -1; 200 var lostEntityIsWarship = classes.indexOf("Warship") != -1; 96 201 97 if (lostEntityIsUnit) this.unitsLost++; 202 if (lostEntityIsSoldier) this.soldiersLost++; 203 if (lostEntityIsWarship) this.warshipsLost++; 98 204 if (lostEntityIsStructure) this.buildingsLost++; 99 205 } 100 206 }; 101 207 102 208 /** 103 209 * @param type Generic type of resource (string) 104 * @param amount Amount of resource, whic kshould be added (integer)210 * @param amount Amount of resource, which should be added (integer) 105 211 * @param specificType Specific type of resource (string, optional) 106 212 */ 107 213 StatisticsTracker.prototype.IncreaseResourceGatheredCounter = function(type, amount, specificType) … … 112 218 this.resourcesGathered["vegetarianFood"] += amount; 113 219 }; 114 220 221 /** 222 * @param resourceAmounts Array of resource types with the amount collected 223 */ 224 StatisticsTracker.prototype.IncreaseResourceLootedCounters = function(resourceAmounts) 225 { 226 for (var type in resourceAmounts) 227 { 228 this.resourcesLooted[type] += resourceAmounts[type]; 229 } 230 }; 231 115 232 StatisticsTracker.prototype.IncreaseTreasuresCollectedCounter = function() 116 233 { 117 234 return this.treasuresCollected++; … … 124 241 return cmpRangeManager.GetPercentMapExplored(cmpPlayer.GetPlayerID()); 125 242 }; 126 243 244 /** 245 * Cycles through the total soldier counts to find the soldier most often trained 246 * by the player. 247 * @return The soldier most often trained by the player during the game 248 */ 249 StatisticsTracker.prototype.CalculateFavouriteSoldier = function() 250 { 251 var favouriteSoldier = ""; 252 var favouriteSoldierCount = 0; 253 for(var soldierType in this.soldierTypeCount) 254 { 255 if(this.soldierTypeCount[soldierType] > favouriteSoldierCount) 256 { 257 favouriteSoldier = soldierType; 258 favouriteSoldierCount = this.soldierTypeCount[soldierType]; 259 } 260 } 261 return favouriteSoldier 262 }; 263 264 /** 265 * Cycles through the total warship counts to find the warship most often trained 266 * by the player. 267 * @return The warship most often trained by the player during the game 268 */ 269 StatisticsTracker.prototype.CalculateFavouriteWarship = function() 270 { 271 var favouriteWarship = ""; 272 var favouriteWarshipCount = 0; 273 for(var warshipType in this.warshipTypeCount) 274 { 275 if(this.warshipTypeCount[warshipType] > favouriteWarshipCount) 276 { 277 favouriteWarship = warshipType; 278 favouriteWarshipCount = this.warshipTypeCount[warshipType]; 279 } 280 } 281 return favouriteWarship; 282 }; 283 284 /** 285 * Calculates the kill/death ratio 286 * @param kills The kills to calculate from 287 * @param deaths The deaths to calculate from 288 * @return The kill/death ratio of the player 289 */ 290 StatisticsTracker.prototype.CalculateKillDeathRatio = function(kills, deaths) 291 { 292 if(kills <= 0) return 0; 293 if(deaths <= 0) return kills; 294 return Math.round((kills / deaths) * 1000) / 1000; 295 }; 296 127 297 Engine.RegisterComponentType(IID_StatisticsTracker, "StatisticsTracker", StatisticsTracker); -
simulation/components/TrainingQueue.js
228 228 cmpNewOwnership.SetOwner(cmpOwnership.GetOwner()); 229 229 230 230 var cmpPlayerStatisticsTracker = QueryOwnerInterface(this.entity, IID_StatisticsTracker); 231 cmpPlayerStatisticsTracker.IncreaseTrainedUnitsCounter(); 232 231 cmpPlayerStatisticsTracker.IncreaseTrainedUnitsCounter(ent); 233 232 ents.push(ent); 234 233 235 234 // Play a sound, but only for the first in the batch (to avoid nasty phasing effects) -
simulation/templates/template_structure_civic_temple.xml
2 2 <Entity parent="template_structure_civic"> 3 3 <Identity> 4 4 <GenericName>Temple</GenericName> 5 <StatisticsGroupName>Temple</StatisticsGroupName> 5 6 <Tooltip>Train physicians. (Currently a useless structure)</Tooltip> 6 7 <Classes datatype="tokens">Town</Classes> 7 8 <Icon>structures/temple.png</Icon> -
simulation/templates/template_structure_special.xml
2 2 <Entity parent="template_structure"> 3 3 <Identity> 4 4 <GenericName>Special Building</GenericName> 5 <StatisticsGroupName>Special</StatisticsGroupName> 5 6 <Tooltip>This is a special building unique to a particular civilisation.</Tooltip> 6 7 <Classes datatype="tokens">City</Classes> 7 8 <Icon>.png</Icon>