Ticket #3150: team_exploration_score_v5.patch

File team_exploration_score_v5.patch, 9.5 KB (added by Imarok, 8 years ago)

Move teamHelperData calcuations into an seperate file and fix the map exploration score

  • binaries/data/mods/public/gui/credits/texts/programming.json

     
    8383            {"nick": "h20", "name": "Daniel Wilhelm"},
    8484            {"nick": "historic_bruno", "name": "Ben Brian"},
    8585            {"nick": "idanwin"},
     86            {"nick": "Imarok", "name": "J. S."},
    8687            {"nick": "infyquest", "name": "Vijay Kiran Kamuju"},
    8788            {"nick": "IronNerd", "name": "Matthew McMullan"},
    8889            {"nick": "Itms", "name": "Nicolas Auvray"},
  • binaries/data/mods/public/gui/summary/counters.js

     
    11// FUNCTIONS FOR CALCULATING SCORES
    2 var g_TeamMiscHelperData = [];
     2var g_TeamHelperData = [];
    33
    44function resetDataHelpers()
    55{
    6     g_TeamMiscHelperData = [];
     6    g_TeamHelperData = [];
    77}
    88
    99function updateCountersPlayer(playerState, counters, idGUI)
     
    1515    }
    1616}
    1717
     18function calculateTeamCounters(playerState)
     19{
     20    if (!g_TeamHelperData[playerState.team])
     21        g_TeamHelperData[playerState.team] = {};
     22
     23    if (!g_TeamHelperData[playerState.team].food)
     24        g_TeamHelperData[playerState.team].food = 0;
     25
     26    g_TeamHelperData[playerState.team].food += playerState.statistics.resourcesGathered.food;
     27
     28    if (!g_TeamHelperData[playerState.team].vegetarianFood)
     29        g_TeamHelperData[playerState.team].vegetarianFood = 0;
     30
     31    g_TeamHelperData[playerState.team].vegetarianFood += playerState.statistics.resourcesGathered.vegetarianFood;
     32
     33    if (!g_TeamHelperData[playerState.team].female)
     34        g_TeamHelperData[playerState.team].female = 0;
     35
     36    g_TeamHelperData[playerState.team].female = playerState.statistics.unitsTrained.Female;
     37
     38    if (!g_TeamHelperData[playerState.team].worker)
     39        g_TeamHelperData[playerState.team].worker = 0;
     40
     41    g_TeamHelperData[playerState.team].worker = playerState.statistics.unitsTrained.Worker;
     42
     43    if (!g_TeamHelperData[playerState.team].enemyUnitsKilled)
     44        g_TeamHelperData[playerState.team].enemyUnitsKilled = 0;
     45
     46    g_TeamHelperData[playerState.team].enemyUnitsKilled = playerState.statistics.enemyUnitsKilled.total;
     47
     48    if (!g_TeamHelperData[playerState.team].unitsLost)
     49        g_TeamHelperData[playerState.team].unitsLost = 0;
     50
     51    g_TeamHelperData[playerState.team].unitsLost = playerState.statistics.unitsLost.total;
     52
     53    if (!g_TeamHelperData[playerState.team].percentMapControlled)
     54        g_TeamHelperData[playerState.team].percentMapControlled = 0;
     55
     56    g_TeamHelperData[playerState.team].percentMapControlled = playerState.statistics.teamPercentMapControlled;
     57
     58    if (!g_TeamHelperData[playerState.team].peakPercentMapControlled)
     59        g_TeamHelperData[playerState.team].peakPercentMapControlled = 0;
     60
     61    g_TeamHelperData[playerState.team].peakPercentMapControlled = playerState.statistics.teamPeakPercentMapControlled;
     62
     63    if (!g_TeamHelperData[playerState.team].percentMapExplored)
     64        g_TeamHelperData[playerState.team].percentMapExplored = 0;
     65
     66    g_TeamHelperData[playerState.team].percentMapExplored = playerState.statistics.teamPercentMapExplored;
     67}
     68
    1869function calculateEconomyScore(playerState, position)
    1970{
    2071    let total = 0;
     
    52103        for (let w in counters)
    53104        {
    54105            let total = 0;
    55             for (let p = 0; p < g_Teams[t]; ++p)
    56                 total += (+Engine.GetGUIObjectByName("valueDataTeam[" + t + "][" + p + "][" + w + "]").caption);
     106            //w == 2 is the team exploration score
     107            //the players exploration score can't be added because there might be regions both players explored
     108            if(w == 2) 
     109                total = g_TeamHelperData[t].percentMapExplored * 10;
     110            else
     111                for (let p = 0; p < g_Teams[t]; ++p)
     112                    total += (+Engine.GetGUIObjectByName("valueDataTeam[" + t + "][" + p + "][" + w + "]").caption);
    57113
    58114            Engine.GetGUIObjectByName("valueDataTeam[" + t + "][" + w + "]").caption = total;
    59115        }
     
    262318
    263319function calculateVegetarianRatio(playerState, position)
    264320{
    265     if (!g_TeamMiscHelperData[playerState.team])
    266         g_TeamMiscHelperData[playerState.team] = [];
    267 
    268     if (!g_TeamMiscHelperData[playerState.team][position])
    269         g_TeamMiscHelperData[playerState.team][position] = { "food": 0, "vegetarianFood": 0 };
    270 
    271321    if (playerState.statistics.resourcesGathered.vegetarianFood && playerState.statistics.resourcesGathered.food)
    272     {
    273         g_TeamMiscHelperData[playerState.team][position].food += playerState.statistics.resourcesGathered.food;
    274         g_TeamMiscHelperData[playerState.team][position].vegetarianFood += playerState.statistics.resourcesGathered.vegetarianFood;
    275322        return Math.floor((playerState.statistics.resourcesGathered.vegetarianFood / playerState.statistics.resourcesGathered.food) * 100) + "%";
    276     }
    277323    else
    278324        return 0 + "%";
    279325}
     
    280326
    281327function calculateFeminization(playerState, position)
    282328{
    283     if (!g_TeamMiscHelperData[playerState.team])
    284         g_TeamMiscHelperData[playerState.team] = [];
    285 
    286     if (!g_TeamMiscHelperData[playerState.team][position])
    287         g_TeamMiscHelperData[playerState.team][position] = { "Female": 0, "Worker": 0 };
    288 
    289329    if (playerState.statistics.unitsTrained.Worker && playerState.statistics.unitsTrained.Female)
    290     {
    291         g_TeamMiscHelperData[playerState.team][position].Female = playerState.statistics.unitsTrained.Female;
    292         g_TeamMiscHelperData[playerState.team][position].Worker = playerState.statistics.unitsTrained.Worker;
    293330        return Math.floor((playerState.statistics.unitsTrained.Female / playerState.statistics.unitsTrained.Worker) * 100) + "%";
    294     }
    295331    else
    296332        return 0 + "%";
    297333}
     
    298334
    299335function calculateKillDeathRatio(playerState, position)
    300336{
    301     if (!g_TeamMiscHelperData[playerState.team])
    302         g_TeamMiscHelperData[playerState.team] = [];
    303 
    304     if (!g_TeamMiscHelperData[playerState.team][position])
    305         g_TeamMiscHelperData[playerState.team][position] = { "enemyUnitsKilled": 0, "unitsLost": 0 };
    306 
    307     g_TeamMiscHelperData[playerState.team][position].enemyUnitsKilled = playerState.statistics.enemyUnitsKilled.total;
    308     g_TeamMiscHelperData[playerState.team][position].unitsLost = playerState.statistics.unitsLost.total;
    309 
    310337    if (!playerState.statistics.enemyUnitsKilled.total)
    311338        return g_DefaultDecimal;
    312339
     
    318345
    319346function calculateMapExploration(playerState, position)
    320347{
    321     if (!g_TeamMiscHelperData[playerState.team])
    322         g_TeamMiscHelperData[playerState.team] = [];
    323 
    324     g_TeamMiscHelperData[playerState.team][position] = playerState.statistics.teamPercentMapExplored;
    325 
    326348    return playerState.statistics.percentMapExplored + "%";
    327349}
    328350
    329351function calculateMapFinalControl(playerState, position)
    330352{
    331     if (!g_TeamMiscHelperData[playerState.team])
    332         g_TeamMiscHelperData[playerState.team] = [];
    333 
    334     g_TeamMiscHelperData[playerState.team][position] = playerState.statistics.teamPercentMapControlled;
    335 
    336353    return playerState.statistics.percentMapControlled + "%";
    337354}
    338355
    339356function calculateMapPeakControl(playerState, position)
    340357{
    341     if (!g_TeamMiscHelperData[playerState.team])
    342         g_TeamMiscHelperData[playerState.team] = [];
    343 
    344     g_TeamMiscHelperData[playerState.team][position] = playerState.statistics.teamPeakPercentMapControlled;
    345 
    346358    return playerState.statistics.peakPercentMapControlled + "%";
    347359}
    348360
     
    358370            let teamTotal = "undefined";
    359371
    360372            if (w == 0)
    361                 teamTotal = (g_TeamMiscHelperData[t][w].food == 0 ? "0" : Math.floor((g_TeamMiscHelperData[t][w].vegetarianFood / g_TeamMiscHelperData[t][w].food) * 100)) + "%";
     373                teamTotal = (g_TeamHelperData[t].food == 0 ? "0" : Math.floor((g_TeamHelperData[t].vegetarianFood / g_TeamHelperData[t].food) * 100)) + "%";
    362374            else if (w == 1)
    363                 teamTotal = (g_TeamMiscHelperData[t][w].Worker == 0 ? "0" : Math.floor((g_TeamMiscHelperData[t][w].Female / g_TeamMiscHelperData[t][w].Worker) * 100)) + "%";
     375                teamTotal = (g_TeamHelperData[t].worker == 0 ? "0" : Math.floor((g_TeamHelperData[t].female / g_TeamHelperData[t].worker) * 100)) + "%";
    364376            else if (w == 2)
    365377            {
    366                 if (!g_TeamMiscHelperData[t][w].enemyUnitsKilled)
     378                if (!g_TeamHelperData[t].enemyUnitsKilled)
    367379                    teamTotal = g_DefaultDecimal;
    368                 else if (!g_TeamMiscHelperData[t][w].unitsLost) // and enemyUnitsKilled.total > 0
     380                else if (!g_TeamHelperData[t].unitsLost)    // and enemyUnitsKilled.total > 0
    369381                    teamTotal = g_InfiniteSymbol; // infinity symbol
    370382                else
    371                     teamTotal = Math.round((g_TeamMiscHelperData[t][w].enemyUnitsKilled / g_TeamMiscHelperData[t][w].unitsLost) * 100) / 100;
     383                    teamTotal = Math.round((g_TeamHelperData[t].enemyUnitsKilled / g_TeamHelperData[t].unitsLost) * 100) / 100;
    372384            }
    373             else if (w >= 3)
    374                 teamTotal = g_TeamMiscHelperData[t][w] + "%";
     385            else if (w == 3)
     386                teamTotal = g_TeamHelperData[t].percentMapExplored + "%";
     387            else if (w == 4)
     388                teamTotal = g_TeamHelperData[t].percentMapControlled + "%";
     389            else if (w == 5)
     390                teamTotal = g_TeamHelperData[t].peakPercentMapControlled + "%";
    375391
    376392            Engine.GetGUIObjectByName("valueDataTeam[" + t + "][" + w + "]").caption = teamTotal;
    377393        }
  • binaries/data/mods/public/gui/summary/summary.js

     
    119119
    120120        // Update counters
    121121        updateCountersPlayer(playerState, panelInfo.counters, playerCounterValue);
     122
     123        // Calculate g_TeamHelperData
     124        calculateTeamCounters(playerState);
    122125    }
    123126    // Update team counters
    124127    let teamCounterFn = panelInfo.teamCounterFn;