Ticket #3321: 3_Statistics-v2.patch

File 3_Statistics-v2.patch, 7.6 KB (added by s0600204, 9 years ago)

Rebased on top of r16932

  • gui/summary/counters.js

     
    314314    return playerState.statistics.percentMapExplored + "%";
    315315}
    316316
     317function 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
     326function 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
    317335function calculateMiscellaneous(counters)
    318336{
    319337    for (var t in g_Teams)
     
    338356                else
    339357                    teamTotal = Math.round((teamMiscHelperData[t][w].enemyUnitsKilled / teamMiscHelperData[t][w].unitsLost)*100)/100;
    340358            }
    341             else if (w == 3)
     359            else if (w >= 3)
    342360                teamTotal = teamMiscHelperData[t][w] + "%";
    343361
    344362            Engine.GetGUIObjectByName("valueDataTeam[" + t + "][" + w + "]").caption = teamTotal;
  • gui/summary/layout.js

     
    124124            { "caption": translate("Vegetarian\nratio"), "yStart": 16, "width": 100 },
    125125            { "caption": translate("Feminisation"), "yStart": 16, "width": 100 },
    126126            { "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 }
    128130        ],
    129         "titleHeadings": [],
     131        "titleHeadings": [
     132            { "caption": translate("Map control"), "xOffset": 400, "yStart": 16, "width": 200 }
     133        ],
    130134        "counters": [   // counters on miscellaneous panel
    131135            {"width": 100, "fn": calculateVegetarianRatio},
    132136            {"width": 100, "fn": calculateFeminisation},
    133137            {"width": 100, "fn": calculateKillDeathRatio},
    134             {"width": 100, "fn": calculateMapExploration}
     138            {"width": 100, "fn": calculateMapExploration},
     139            {"width": 100, "fn": calculateMapPeakControl},
     140            {"width": 100, "fn": calculateMapFinalControl}
    135141        ],
    136142        "teamCounterFn": calculateMiscellaneous
    137143    }
     
    182188        if (th >= MAX_HEADINGTITLE)
    183189            break;
    184190
     191        if (titleHeadings[th].xOffset)
     192            left += titleHeadings[th].xOffset;
     193
    185194        var headerGUI = Engine.GetGUIObjectByName("titleHeading["+ th +"]");
    186195        headerGUI.caption = titleHeadings[th].caption;
    187196        headerGUI.size = left + " " + titleHeadings[th].yStart + " " + (left + titleHeadings[th].width) + " 100%";
    188197        headerGUI.hidden = false;
     198
     199        if (titleHeadings[th].width < LONG_HEADING_WIDTH)
     200            left += titleHeadings[th].width;
    189201    }
    190202}
    191203
  • simulation/components/StatisticsTracker.js

     
    123123    this.tributesReceived = 0;
    124124    this.tradeIncome = 0;
    125125    this.treasuresCollected = 0;
    126     this.lootCollected = 0;
     126    this.lootCollected = 0;
     127    this.peakPercentMapControlled = 0;
     128    this.teamPeakPercentMapControlled = 0;
    127129};
    128130
    129131/**
     
    165167        "treasuresCollected": this.treasuresCollected,
    166168        "lootCollected": this.lootCollected,
    167169        "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
    169175    };
    170176};
    171177
     
    392398    }
    393399
    394400    return cmpRangeManager.GetUnionPercentMapExplored(teamPlayers);
    395 };
    396 
     401};
     402
     403StatisticsTracker.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
     413StatisticsTracker.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
     436StatisticsTracker.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
    397447Engine.RegisterComponentType(IID_StatisticsTracker, "StatisticsTracker", StatisticsTracker);
  • simulation/components/tests/test_GuiInterface.js

     
    132132            "treasuresCollected": 0,
    133133            "lootCollected": 0,
    134134            "percentMapExplored": 10,
    135             "teamPercentMapExplored": 10
     135            "teamPercentMapExplored": 10,
     136            "percentMapControlled": 10,
     137            "teamPercentMapControlled": 10,
     138            "peakPercentOfMapControlled": 10,
     139            "teamPeakPercentOfMapControlled": 10
    136140        };
    137141    },
    138142    IncreaseTrainedUnitsCounter: function() { return 1; },
     
    208212            "treasuresCollected": 0,
    209213            "lootCollected": 0,
    210214            "percentMapExplored": 10,
    211             "teamPercentMapExplored": 10
     215            "teamPercentMapExplored": 10,
     216            "percentMapControlled": 10,
     217            "teamPercentMapControlled": 10,
     218            "peakPercentOfMapControlled": 10,
     219            "teamPeakPercentOfMapControlled": 10
    212220        };
    213221    },
    214222    IncreaseTrainedUnitsCounter: function() { return 1; },
     
    352360                treasuresCollected: 0,
    353361                lootCollected: 0,
    354362                percentMapExplored: 10,
    355                 teamPercentMapExplored: 10
     363                teamPercentMapExplored: 10,
     364                percentMapControlled: 10,
     365                teamPercentMapControlled: 10,
     366                peakPercentOfMapControlled: 10,
     367                teamPeakPercentOfMapControlled: 10
    356368            },
    357369        },
    358370        {
     
    399411                treasuresCollected: 0,
    400412                lootCollected: 0,
    401413                percentMapExplored: 10,
    402                 teamPercentMapExplored: 10
     414                teamPercentMapExplored: 10,
     415                percentMapControlled: 10,
     416                teamPercentMapControlled: 10,
     417                peakPercentOfMapControlled: 10,
     418                teamPeakPercentOfMapControlled: 10
    403419            },
    404420        }
    405421    ],