Ticket #3321: 3_Statistics.patch

File 3_Statistics.patch, 7.8 KB (added by s0600204, 9 years ago)

Use the new functionality in the Statistics component

  • binaries/data/mods/public/simulation/components/StatisticsTracker.js

     
    118118    this.tributesSent = 0;
    119119    this.tributesReceived = 0;
    120120    this.tradeIncome = 0;
    121     this.treasuresCollected = 0;
     121    this.treasuresCollected = 0;
     122    this.peakPercentMapControlled = 0;
     123    this.teamPeakPercentMapControlled = 0;
    122124};
    123125
    124126/**
     
    159161        "tradeIncome": this.tradeIncome,
    160162        "treasuresCollected": this.treasuresCollected,
    161163        "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
    163169    };
    164170};
    165171
     
    380386    }
    381387
    382388    return cmpRangeManager.GetUnionPercentMapExplored(teamPlayers);
    383 };
    384 
     389};
     390
     391StatisticsTracker.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
     401StatisticsTracker.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
     424StatisticsTracker.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
    385435Engine.RegisterComponentType(IID_StatisticsTracker, "StatisticsTracker", StatisticsTracker);
  • binaries/data/mods/public/gui/summary/counters.js

     
    309309    return playerState.statistics.percentMapExplored + "%";
    310310}
    311311
     312function 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
     321function 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
    312330function calculateMiscellaneous(counters)
    313331{
    314332    for (var t in g_Teams)
     
    333351                else
    334352                    teamTotal = Math.round((teamMiscHelperData[t][w].enemyUnitsKilled / teamMiscHelperData[t][w].unitsLost)*100)/100;
    335353            }
    336             else if (w == 3)
     354            else if (w >= 3)
    337355                teamTotal = teamMiscHelperData[t][w] + "%";
    338356
    339357            Engine.GetGUIObjectByName("valueDataTeam[" + t + "][" + w + "]").caption = teamTotal;
  • binaries/data/mods/public/gui/summary/layout.js

     
    120120            { "caption": translate("Vegetarian\nratio"), "yStart": 16, "width": 100 },
    121121            { "caption": translate("Feminisation"), "yStart": 26, "width": 100 },
    122122            { "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 }
    124126        ],
    125         "titleHeadings": [],
     127        "titleHeadings": [
     128            { "caption": translate("Map control"), "xOffset": 400, "yStart": 16, "width": 200 }
     129        ],
    126130        "counters": [   // counters on miscellaneous panel
    127131            {"width": 100, "fn": calculateVegetarianRatio},
    128132            {"width": 100, "fn": calculateFeminisation},
    129133            {"width": 100, "fn": calculateKillDeathRatio},
    130             {"width": 100, "fn": calculateMapExploration}
     134            {"width": 100, "fn": calculateMapExploration},
     135            {"width": 100, "fn": calculateMapPeakControl},
     136            {"width": 100, "fn": calculateMapFinalControl}
    131137        ],
    132138        "teamCounterFn": calculateMiscellaneous
    133139    }
     
    178184        if (th >= MAX_HEADINGTITLE)
    179185            break;
    180186
     187        if (titleHeadings[th].xOffset)
     188            left += titleHeadings[th].xOffset;
     189
    181190        var headerGUI = Engine.GetGUIObjectByName("titleHeading["+ th +"]");
    182191        headerGUI.caption = titleHeadings[th].caption;
    183192        headerGUI.size = left + " " + titleHeadings[th].yStart + " " + (left + titleHeadings[th].width) + " 100%";
    184193        headerGUI.hidden = false;
     194
     195        if (titleHeadings[th].width < LONG_HEADING_WIDTH)
     196            left += titleHeadings[th].width;
    185197    }
    186198}
    187199
  • binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js

     
    131131            },
    132132            "treasuresCollected": 0,
    133133            "percentMapExplored": 10,
    134             "teamPercentMapExplored": 10
     134            "teamPercentMapExplored": 10,
     135            "percentMapControlled": 10,
     136            "teamPercentMapControlled": 10,
     137            "peakPercentOfMapControlled": 10,
     138            "teamPeakPercentOfMapControlled": 10
    135139        };
    136140    },
    137141    IncreaseTrainedUnitsCounter: function() { return 1; },
     
    206210            },
    207211            "treasuresCollected": 0,
    208212            "percentMapExplored": 10,
    209             "teamPercentMapExplored": 10
     213            "teamPercentMapExplored": 10,
     214            "percentMapControlled": 10,
     215            "teamPercentMapControlled": 10,
     216            "peakPercentOfMapControlled": 10,
     217            "teamPeakPercentOfMapControlled": 10
    210218        };
    211219    },
    212220    IncreaseTrainedUnitsCounter: function() { return 1; },
     
    349357                },
    350358                treasuresCollected: 0,
    351359                percentMapExplored: 10,
    352                 teamPercentMapExplored: 10
     360                teamPercentMapExplored: 10,
     361                percentMapControlled: 10,
     362                teamPercentMapControlled: 10,
     363                peakPercentOfMapControlled: 10,
     364                teamPeakPercentOfMapControlled: 10
    353365            },
    354366        },
    355367        {
     
    395407                },
    396408                treasuresCollected: 0,
    397409                percentMapExplored: 10,
    398                 teamPercentMapExplored: 10
     410                teamPercentMapExplored: 10,
     411                percentMapControlled: 10,
     412                teamPercentMapControlled: 10,
     413                peakPercentOfMapControlled: 10,
     414                teamPeakPercentOfMapControlled: 10
    399415            },
    400416        }
    401417    ],