Index: binaries/data/mods/public/gui/summary/summary.js
===================================================================
--- binaries/data/mods/public/gui/summary/summary.js
+++ binaries/data/mods/public/gui/summary/summary.js
@@ -127,6 +127,8 @@
"type": [0, 0]
};
+var g_ShowTeamCharts = false;
+
/**
* Array of the panel button names.
*/
@@ -145,14 +147,18 @@
g_PanelButtons = Object.keys(g_ScorePanelsData).concat(["charts"]).map(panel => panel + "PanelButton");
g_SelectedPanel = g_PanelButtons[0];
+
+ initTeamData();
+ calculateTeamCounterDataHelper();
+
if (data && data.selectedData)
{
g_SelectedPanel = data.selectedData.panel;
g_SelectedChart = data.selectedData.charts;
+ g_ShowTeamCharts = g_Teams && data.selectedData.teamCharts;
}
- initTeamData();
- calculateTeamCounterDataHelper();
+ updateToggleTeamButton();
// Output globals
initGUIWindow();
@@ -216,13 +222,28 @@
g_SelectedPanel = panel.name;
}
-function initGUICharts()
+function updateToggleTeamButton()
+{
+ Engine.GetGUIObjectByName("toggleTeam").caption = g_ShowTeamCharts ?
+ translate("Show Players") : translate("Show Teams");
+}
+
+function toggleTeamCharts()
+{
+ g_ShowTeamCharts = !g_ShowTeamCharts;
+ updateToggleTeamButton();
+ updateChartColorAndLegend();
+ updateCategoryDropdown(0);
+ updateCategoryDropdown(1);
+}
+
+function updateChartColorAndLegend()
{
- let player_colors = [];
+ let playerColors = [];
for (let i = 1; i <= g_PlayerCount; ++i)
{
let playerState = g_GameData.sim.playerStates[i];
- player_colors.push(
+ playerColors.push(
Math.floor(playerState.color.r * 255) + " " +
Math.floor(playerState.color.g * 255) + " " +
Math.floor(playerState.color.b * 255)
@@ -230,13 +251,25 @@
}
for (let i = 0; i < 2; ++i)
- Engine.GetGUIObjectByName("chart[" + i + "]").series_color = player_colors;
+ Engine.GetGUIObjectByName("chart[" + i + "]").series_color = g_ShowTeamCharts ?
+ g_Teams.filter(el => el !== null).map(players => playerColors[players[0] - 1]) :
+ playerColors;
let chartLegend = Engine.GetGUIObjectByName("chartLegend");
- chartLegend.caption = g_GameData.sim.playerStates.slice(1).map(
- (state, index) => coloredText("■", player_colors[index]) + " " + state.name
- ).join(" ");
+ chartLegend.caption = g_ShowTeamCharts ?
+ g_Teams.filter(el => el !== null).map(
+ players => coloredText("■", playerColors[players[0] - 1]) + " " + players.map(player =>
+ g_GameData.sim.playerStates[player].name
+ ).join(translateWithContext("Player listing", ", "))
+ ).join(" ") :
+ g_GameData.sim.playerStates.slice(1).map(
+ (state, index) => coloredText("■", playerColors[index]) + " " + state.name
+ ).join(" ");
+}
+function initGUICharts()
+{
+ updateChartColorAndLegend();
let chart1Part = Engine.GetGUIObjectByName("chart[1]Part");
let chart1PartSize = chart1Part.size;
chart1PartSize.rright += 50;
@@ -244,6 +277,7 @@
chart1PartSize.right -= 5;
chart1PartSize.left -= 5;
chart1Part.size = chart1PartSize;
+ Engine.GetGUIObjectByName("toggleTeam").hidden = !g_Teams;
}
function resizeDropdown(dropdown)
@@ -333,20 +367,37 @@
let chart = Engine.GetGUIObjectByName("chart[" + number + "]");
chart.format_y = g_ScorePanelsData[category].headings[itemNumber + 1].format || "INTEGER";
Engine.GetGUIObjectByName("chart[" + number + "]XAxisLabel").caption = translate("Time elapsed");
+
let series = [];
- for (let j = 1; j <= g_PlayerCount; ++j)
- {
- let playerState = g_GameData.sim.playerStates[j];
- let data = [];
- for (let index in playerState.sequences.time)
+ if (g_ShowTeamCharts)
+ for (let team in g_Teams)
{
- let value = g_ScorePanelsData[category].counters[itemNumber].fn(playerState, index, item);
- if (type)
- value = value[type];
- data.push([playerState.sequences.time[index], value]);
+ let data = [];
+ for (let index in g_GameData.sim.playerStates[1].sequences.time)
+ {
+ let value = g_ScorePanelsData[category].teamCounterFn(team, index, item,
+ g_ScorePanelsData[category].counters, g_ScorePanelsData[category].headings);
+ if (type)
+ value = value[type];
+ data.push([g_GameData.sim.playerStates[1].sequences.time[index], value]);
+ }
+ series.push(data);
}
- series.push(data);
- }
+ else
+ for (let j = 1; j <= g_PlayerCount; ++j)
+ {
+ let playerState = g_GameData.sim.playerStates[j];
+ let data = [];
+ for (let index in playerState.sequences.time)
+ {
+ let value = g_ScorePanelsData[category].counters[itemNumber].fn(playerState, index, item);
+ if (type)
+ value = value[type];
+ data.push([playerState.sequences.time[index], value]);
+ }
+ series.push(data);
+ }
+
chart.series = series;
}
@@ -440,7 +491,8 @@
{
let summarySelectedData = {
"panel": g_SelectedPanel,
- "charts": g_SelectedChart
+ "charts": g_SelectedChart,
+ "teamCharts": g_ShowTeamCharts
};
if (g_GameData.gui.isInGame)
Engine.PopGuiPageCB({
Index: binaries/data/mods/public/gui/summary/summary.xml
===================================================================
--- binaries/data/mods/public/gui/summary/summary.xml
+++ binaries/data/mods/public/gui/summary/summary.xml
@@ -207,6 +207,12 @@
+
+