Ticket #3321: 3_Statistics.patch
File 3_Statistics.patch, 7.8 KB (added by , 9 years ago) |
---|
-
binaries/data/mods/public/simulation/components/StatisticsTracker.js
118 118 this.tributesSent = 0; 119 119 this.tributesReceived = 0; 120 120 this.tradeIncome = 0; 121 this.treasuresCollected = 0; 121 this.treasuresCollected = 0; 122 this.peakPercentMapControlled = 0; 123 this.teamPeakPercentMapControlled = 0; 122 124 }; 123 125 124 126 /** … … 159 161 "tradeIncome": this.tradeIncome, 160 162 "treasuresCollected": this.treasuresCollected, 161 163 "percentMapExplored": this.GetPercentMapExplored(), 162 "teamPercentMapExplored": this.GetTeamPercentMapExplored() 164 "teamPercentMapExplored": this.GetTeamPercentMapExplored(), 165 "percentMapControlled": this.GetPercentMapControlled(), 166 "teamPercentMapControlled": this.GetTeamPercentMapControlled(), 167 "peakPercentMapControlled": this.peakPercentMapControlled, 168 "teamPeakPercentMapControlled": this.teamPeakPercentMapControlled 163 169 }; 164 170 }; 165 171 … … 380 386 } 381 387 382 388 return cmpRangeManager.GetUnionPercentMapExplored(teamPlayers); 383 }; 384 389 }; 390 391 StatisticsTracker.prototype.GetPercentMapControlled = function() 392 { 393 var cmpPlayer = Engine.QueryInterface(this.entity, IID_Player); 394 var cmpTerritoryManager = Engine.QueryInterface(SYSTEM_ENTITY, IID_TerritoryManager); 395 if (!cmpPlayer || !cmpTerritoryManager) 396 return 0; 397 398 return cmpTerritoryManager.GetTerritoryPercentage(cmpPlayer.GetPlayerID()); 399 }; 400 401 StatisticsTracker.prototype.GetTeamPercentMapControlled = function() 402 { 403 var cmpPlayer = Engine.QueryInterface(this.entity, IID_Player); 404 var cmpPlayerManager = Engine.QueryInterface(SYSTEM_ENTITY, IID_PlayerManager); 405 var cmpTerritoryManager = Engine.QueryInterface(SYSTEM_ENTITY, IID_TerritoryManager); 406 if (!cmpPlayer || !cmpTerritoryManager) 407 return 0; 408 409 var team = cmpPlayer.GetTeam(); 410 if (team == -1 || !cmpPlayer.GetLockTeams()) 411 return cmpTerritoryManager.GetTerritoryPercentage(cmpPlayer.GetPlayerID()); 412 413 var teamPercent = 0; 414 for (let i = 1; i < cmpPlayerManager.GetNumPlayers(); ++i) 415 { 416 let cmpOtherPlayer = Engine.QueryInterface(cmpPlayerManager.GetPlayerByID(i), IID_Player); 417 if (cmpOtherPlayer && cmpOtherPlayer.GetTeam() == team) 418 teamPercent += cmpTerritoryManager.GetTerritoryPercentage(i); 419 } 420 421 return teamPercent; 422 }; 423 424 StatisticsTracker.prototype.OnTerritoriesChanged = function(msg) 425 { 426 var newPercent = this.GetPercentMapControlled(); 427 if (newPercent > this.peakPercentMapControlled) 428 this.peakPercentMapControlled = newPercent; 429 430 newPercent = this.GetTeamPercentMapControlled(); 431 if (newPercent > this.teamPeakPercentMapControlled) 432 this.teamPeakPercentMapControlled = newPercent; 433 }; 434 385 435 Engine.RegisterComponentType(IID_StatisticsTracker, "StatisticsTracker", StatisticsTracker); -
binaries/data/mods/public/gui/summary/counters.js
309 309 return playerState.statistics.percentMapExplored + "%"; 310 310 } 311 311 312 function calculateMapFinalControl(playerState, position) 313 { 314 if (!teamMiscHelperData[playerState.team]) 315 teamMiscHelperData[playerState.team] = []; 316 317 teamMiscHelperData[playerState.team][position] = playerState.statistics.teamPercentMapControlled; 318 return playerState.statistics.percentMapControlled + "%"; 319 } 320 321 function calculateMapPeakControl(playerState, position) 322 { 323 if (!teamMiscHelperData[playerState.team]) 324 teamMiscHelperData[playerState.team] = []; 325 326 teamMiscHelperData[playerState.team][position] = playerState.statistics.teamPeakPercentMapControlled; 327 return playerState.statistics.peakPercentMapControlled + "%"; 328 } 329 312 330 function calculateMiscellaneous(counters) 313 331 { 314 332 for (var t in g_Teams) … … 333 351 else 334 352 teamTotal = Math.round((teamMiscHelperData[t][w].enemyUnitsKilled / teamMiscHelperData[t][w].unitsLost)*100)/100; 335 353 } 336 else if (w == 3)354 else if (w >= 3) 337 355 teamTotal = teamMiscHelperData[t][w] + "%"; 338 356 339 357 Engine.GetGUIObjectByName("valueDataTeam[" + t + "][" + w + "]").caption = teamTotal; -
binaries/data/mods/public/gui/summary/layout.js
120 120 { "caption": translate("Vegetarian\nratio"), "yStart": 16, "width": 100 }, 121 121 { "caption": translate("Feminisation"), "yStart": 26, "width": 100 }, 122 122 { "caption": translate("Kill / Death\nratio"), "yStart": 16, "width": 100 }, 123 { "caption": translate("Map\nexploration"), "yStart": 16, "width": 100 } 123 { "caption": translate("Map\nexploration"), "yStart": 16, "width": 100 }, 124 { "caption": translate("At peak"), "yStart": 34, "width": 100 }, 125 { "caption": translate("At finish"), "yStart": 34, "width": 100 } 124 126 ], 125 "titleHeadings": [], 127 "titleHeadings": [ 128 { "caption": translate("Map control"), "xOffset": 400, "yStart": 16, "width": 200 } 129 ], 126 130 "counters": [ // counters on miscellaneous panel 127 131 {"width": 100, "fn": calculateVegetarianRatio}, 128 132 {"width": 100, "fn": calculateFeminisation}, 129 133 {"width": 100, "fn": calculateKillDeathRatio}, 130 {"width": 100, "fn": calculateMapExploration} 134 {"width": 100, "fn": calculateMapExploration}, 135 {"width": 100, "fn": calculateMapPeakControl}, 136 {"width": 100, "fn": calculateMapFinalControl} 131 137 ], 132 138 "teamCounterFn": calculateMiscellaneous 133 139 } … … 178 184 if (th >= MAX_HEADINGTITLE) 179 185 break; 180 186 187 if (titleHeadings[th].xOffset) 188 left += titleHeadings[th].xOffset; 189 181 190 var headerGUI = Engine.GetGUIObjectByName("titleHeading["+ th +"]"); 182 191 headerGUI.caption = titleHeadings[th].caption; 183 192 headerGUI.size = left + " " + titleHeadings[th].yStart + " " + (left + titleHeadings[th].width) + " 100%"; 184 193 headerGUI.hidden = false; 194 195 if (titleHeadings[th].width < LONG_HEADING_WIDTH) 196 left += titleHeadings[th].width; 185 197 } 186 198 } 187 199 -
binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
131 131 }, 132 132 "treasuresCollected": 0, 133 133 "percentMapExplored": 10, 134 "teamPercentMapExplored": 10 134 "teamPercentMapExplored": 10, 135 "percentMapControlled": 10, 136 "teamPercentMapControlled": 10, 137 "peakPercentOfMapControlled": 10, 138 "teamPeakPercentOfMapControlled": 10 135 139 }; 136 140 }, 137 141 IncreaseTrainedUnitsCounter: function() { return 1; }, … … 206 210 }, 207 211 "treasuresCollected": 0, 208 212 "percentMapExplored": 10, 209 "teamPercentMapExplored": 10 213 "teamPercentMapExplored": 10, 214 "percentMapControlled": 10, 215 "teamPercentMapControlled": 10, 216 "peakPercentOfMapControlled": 10, 217 "teamPeakPercentOfMapControlled": 10 210 218 }; 211 219 }, 212 220 IncreaseTrainedUnitsCounter: function() { return 1; }, … … 349 357 }, 350 358 treasuresCollected: 0, 351 359 percentMapExplored: 10, 352 teamPercentMapExplored: 10 360 teamPercentMapExplored: 10, 361 percentMapControlled: 10, 362 teamPercentMapControlled: 10, 363 peakPercentOfMapControlled: 10, 364 teamPeakPercentOfMapControlled: 10 353 365 }, 354 366 }, 355 367 { … … 395 407 }, 396 408 treasuresCollected: 0, 397 409 percentMapExplored: 10, 398 teamPercentMapExplored: 10 410 teamPercentMapExplored: 10, 411 percentMapControlled: 10, 412 teamPercentMapControlled: 10, 413 peakPercentOfMapControlled: 10, 414 teamPeakPercentOfMapControlled: 10 399 415 }, 400 416 } 401 417 ],