Ticket #3321: 3_Statistics-v2.patch
File 3_Statistics-v2.patch, 7.6 KB (added by , 9 years ago) |
---|
-
gui/summary/counters.js
314 314 return playerState.statistics.percentMapExplored + "%"; 315 315 } 316 316 317 function calculateMapFinalControl(playerState, position) 318 { 319 if (!teamMiscHelperData[playerState.team]) 320 teamMiscHelperData[playerState.team] = []; 321 322 teamMiscHelperData[playerState.team][position] = playerState.statistics.teamPercentMapControlled; 323 return playerState.statistics.percentMapControlled + "%"; 324 } 325 326 function calculateMapPeakControl(playerState, position) 327 { 328 if (!teamMiscHelperData[playerState.team]) 329 teamMiscHelperData[playerState.team] = []; 330 331 teamMiscHelperData[playerState.team][position] = playerState.statistics.teamPeakPercentMapControlled; 332 return playerState.statistics.peakPercentMapControlled + "%"; 333 } 334 317 335 function calculateMiscellaneous(counters) 318 336 { 319 337 for (var t in g_Teams) … … 338 356 else 339 357 teamTotal = Math.round((teamMiscHelperData[t][w].enemyUnitsKilled / teamMiscHelperData[t][w].unitsLost)*100)/100; 340 358 } 341 else if (w == 3)359 else if (w >= 3) 342 360 teamTotal = teamMiscHelperData[t][w] + "%"; 343 361 344 362 Engine.GetGUIObjectByName("valueDataTeam[" + t + "][" + w + "]").caption = teamTotal; -
gui/summary/layout.js
124 124 { "caption": translate("Vegetarian\nratio"), "yStart": 16, "width": 100 }, 125 125 { "caption": translate("Feminisation"), "yStart": 16, "width": 100 }, 126 126 { "caption": translate("Kill / Death\nratio"), "yStart": 16, "width": 100 }, 127 { "caption": translate("Map\nexploration"), "yStart": 16, "width": 100 } 127 { "caption": translate("Map\nexploration"), "yStart": 16, "width": 100 }, 128 { "caption": translate("At peak"), "yStart": 34, "width": 100 }, 129 { "caption": translate("At finish"), "yStart": 34, "width": 100 } 128 130 ], 129 "titleHeadings": [], 131 "titleHeadings": [ 132 { "caption": translate("Map control"), "xOffset": 400, "yStart": 16, "width": 200 } 133 ], 130 134 "counters": [ // counters on miscellaneous panel 131 135 {"width": 100, "fn": calculateVegetarianRatio}, 132 136 {"width": 100, "fn": calculateFeminisation}, 133 137 {"width": 100, "fn": calculateKillDeathRatio}, 134 {"width": 100, "fn": calculateMapExploration} 138 {"width": 100, "fn": calculateMapExploration}, 139 {"width": 100, "fn": calculateMapPeakControl}, 140 {"width": 100, "fn": calculateMapFinalControl} 135 141 ], 136 142 "teamCounterFn": calculateMiscellaneous 137 143 } … … 182 188 if (th >= MAX_HEADINGTITLE) 183 189 break; 184 190 191 if (titleHeadings[th].xOffset) 192 left += titleHeadings[th].xOffset; 193 185 194 var headerGUI = Engine.GetGUIObjectByName("titleHeading["+ th +"]"); 186 195 headerGUI.caption = titleHeadings[th].caption; 187 196 headerGUI.size = left + " " + titleHeadings[th].yStart + " " + (left + titleHeadings[th].width) + " 100%"; 188 197 headerGUI.hidden = false; 198 199 if (titleHeadings[th].width < LONG_HEADING_WIDTH) 200 left += titleHeadings[th].width; 189 201 } 190 202 } 191 203 -
simulation/components/StatisticsTracker.js
123 123 this.tributesReceived = 0; 124 124 this.tradeIncome = 0; 125 125 this.treasuresCollected = 0; 126 this.lootCollected = 0; 126 this.lootCollected = 0; 127 this.peakPercentMapControlled = 0; 128 this.teamPeakPercentMapControlled = 0; 127 129 }; 128 130 129 131 /** … … 165 167 "treasuresCollected": this.treasuresCollected, 166 168 "lootCollected": this.lootCollected, 167 169 "percentMapExplored": this.GetPercentMapExplored(), 168 "teamPercentMapExplored": this.GetTeamPercentMapExplored() 170 "teamPercentMapExplored": this.GetTeamPercentMapExplored(), 171 "percentMapControlled": this.GetPercentMapControlled(), 172 "teamPercentMapControlled": this.GetTeamPercentMapControlled(), 173 "peakPercentMapControlled": this.peakPercentMapControlled, 174 "teamPeakPercentMapControlled": this.teamPeakPercentMapControlled 169 175 }; 170 176 }; 171 177 … … 392 398 } 393 399 394 400 return cmpRangeManager.GetUnionPercentMapExplored(teamPlayers); 395 }; 396 401 }; 402 403 StatisticsTracker.prototype.GetPercentMapControlled = function() 404 { 405 var cmpPlayer = Engine.QueryInterface(this.entity, IID_Player); 406 var cmpTerritoryManager = Engine.QueryInterface(SYSTEM_ENTITY, IID_TerritoryManager); 407 if (!cmpPlayer || !cmpTerritoryManager) 408 return 0; 409 410 return cmpTerritoryManager.GetTerritoryPercentage(cmpPlayer.GetPlayerID()); 411 }; 412 413 StatisticsTracker.prototype.GetTeamPercentMapControlled = function() 414 { 415 var cmpPlayer = Engine.QueryInterface(this.entity, IID_Player); 416 var cmpPlayerManager = Engine.QueryInterface(SYSTEM_ENTITY, IID_PlayerManager); 417 var cmpTerritoryManager = Engine.QueryInterface(SYSTEM_ENTITY, IID_TerritoryManager); 418 if (!cmpPlayer || !cmpTerritoryManager) 419 return 0; 420 421 var team = cmpPlayer.GetTeam(); 422 if (team == -1 || !cmpPlayer.GetLockTeams()) 423 return cmpTerritoryManager.GetTerritoryPercentage(cmpPlayer.GetPlayerID()); 424 425 var teamPercent = 0; 426 for (let i = 1; i < cmpPlayerManager.GetNumPlayers(); ++i) 427 { 428 let cmpOtherPlayer = Engine.QueryInterface(cmpPlayerManager.GetPlayerByID(i), IID_Player); 429 if (cmpOtherPlayer && cmpOtherPlayer.GetTeam() == team) 430 teamPercent += cmpTerritoryManager.GetTerritoryPercentage(i); 431 } 432 433 return teamPercent; 434 }; 435 436 StatisticsTracker.prototype.OnTerritoriesChanged = function(msg) 437 { 438 var newPercent = this.GetPercentMapControlled(); 439 if (newPercent > this.peakPercentMapControlled) 440 this.peakPercentMapControlled = newPercent; 441 442 newPercent = this.GetTeamPercentMapControlled(); 443 if (newPercent > this.teamPeakPercentMapControlled) 444 this.teamPeakPercentMapControlled = newPercent; 445 }; 446 397 447 Engine.RegisterComponentType(IID_StatisticsTracker, "StatisticsTracker", StatisticsTracker); -
simulation/components/tests/test_GuiInterface.js
132 132 "treasuresCollected": 0, 133 133 "lootCollected": 0, 134 134 "percentMapExplored": 10, 135 "teamPercentMapExplored": 10 135 "teamPercentMapExplored": 10, 136 "percentMapControlled": 10, 137 "teamPercentMapControlled": 10, 138 "peakPercentOfMapControlled": 10, 139 "teamPeakPercentOfMapControlled": 10 136 140 }; 137 141 }, 138 142 IncreaseTrainedUnitsCounter: function() { return 1; }, … … 208 212 "treasuresCollected": 0, 209 213 "lootCollected": 0, 210 214 "percentMapExplored": 10, 211 "teamPercentMapExplored": 10 215 "teamPercentMapExplored": 10, 216 "percentMapControlled": 10, 217 "teamPercentMapControlled": 10, 218 "peakPercentOfMapControlled": 10, 219 "teamPeakPercentOfMapControlled": 10 212 220 }; 213 221 }, 214 222 IncreaseTrainedUnitsCounter: function() { return 1; }, … … 352 360 treasuresCollected: 0, 353 361 lootCollected: 0, 354 362 percentMapExplored: 10, 355 teamPercentMapExplored: 10 363 teamPercentMapExplored: 10, 364 percentMapControlled: 10, 365 teamPercentMapControlled: 10, 366 peakPercentOfMapControlled: 10, 367 teamPeakPercentOfMapControlled: 10 356 368 }, 357 369 }, 358 370 { … … 399 411 treasuresCollected: 0, 400 412 lootCollected: 0, 401 413 percentMapExplored: 10, 402 teamPercentMapExplored: 10 414 teamPercentMapExplored: 10, 415 percentMapControlled: 10, 416 teamPercentMapControlled: 10, 417 peakPercentOfMapControlled: 10, 418 teamPeakPercentOfMapControlled: 10 403 419 }, 404 420 } 405 421 ],