Make the resource/pop tooltips sortable
Patch By: ffffffff Differential Revision: https://code.wildfiregames.com/D1113 This was SVN commit r21071.
This commit is contained in:
parent
99dc7c8f1c
commit
7e14a33411
@ -364,6 +364,7 @@ woundedunithotkeythreshold = 33 ; The wounded unit hotkey considers the select
|
||||
attackrange = true ; Display attack range overlays of selected defensive structures
|
||||
aurasrange = true ; Display aura range overlays of selected units and structures
|
||||
healrange = true ; Display heal range overlays of selected units
|
||||
respoptooltipsort = 0 ; Sorting players in the resources and population tooltip by value (0 - no sort, -1 - ascending, 1 - descending)
|
||||
|
||||
[gui.session.minimap]
|
||||
blinkduration = 1.7 ; The blink duration while pinging
|
||||
|
@ -1,7 +1,7 @@
|
||||
/**
|
||||
* Used to highlight hotkeys in tooltip descriptions.
|
||||
*/
|
||||
var g_HotkeyColor = "255 251 131";
|
||||
var g_HotkeyTags = {"color": "255 251 131" };
|
||||
|
||||
/**
|
||||
* Concatenate integer color values to a string (for use in GUI objects)
|
||||
@ -151,7 +151,7 @@ function colorizeHotkey(text, hotkey)
|
||||
});
|
||||
|
||||
return sprintf(text, {
|
||||
"hotkey": coloredText("\\[" + key + "]", g_HotkeyColor)
|
||||
"hotkey": setStringTags("\\[" + key + "]", g_HotkeyTags)
|
||||
});
|
||||
}
|
||||
|
||||
@ -163,7 +163,7 @@ function colorizeAutocompleteHotkey(string)
|
||||
{
|
||||
return sprintf(string || translate("Press %(hotkey)s to autocomplete playernames."), {
|
||||
"hotkey":
|
||||
coloredText("\\[" + translateWithContext("hotkey", "Tab") + "]", g_HotkeyColor)
|
||||
setStringTags("\\[" + translateWithContext("hotkey", "Tab") + "]", g_HotkeyTags)
|
||||
});
|
||||
}
|
||||
|
||||
|
@ -127,6 +127,17 @@
|
||||
"label": "Heal Range Visualization",
|
||||
"tooltip": "Display the healing range of selected units (can also be toggled in-game with the hotkey).",
|
||||
"config": "gui.session.healrange"
|
||||
},
|
||||
{
|
||||
"type": "dropdown",
|
||||
"label": "Sort resources and population tooltip",
|
||||
"tooltip": "Dynamically sort players in the resources and population tooltip by value.",
|
||||
"config": "gui.session.respoptooltipsort",
|
||||
"list": [
|
||||
{ "value": 0, "label": "Unordered" },
|
||||
{ "value": -1, "label": "Ascending" },
|
||||
{ "value": 1, "label": "Descending" }
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
|
@ -162,14 +162,14 @@ function formatBatchTrainingString(buildingsCountToTrainFullBatch, fullBatchSize
|
||||
batchString = translate("%(action)s to train %(number)s.");
|
||||
|
||||
return "[font=\"sans-13\"]" +
|
||||
coloredText(
|
||||
setStringTags(
|
||||
sprintf(batchString, {
|
||||
"action": "[font=\"sans-bold-13\"]" + translate("Shift-click") + "[/font]",
|
||||
"number": totalBatchTrainingCount,
|
||||
"fullBatch": fullBatchesString,
|
||||
"remainderBatch": remainderBatch
|
||||
}),
|
||||
g_HotkeyColor) +
|
||||
g_HotkeyTags) +
|
||||
"[/font]";
|
||||
}
|
||||
|
||||
|
@ -1123,34 +1123,56 @@ function updateDebug()
|
||||
debug.caption = text.replace(/\[/g, "\\[");
|
||||
}
|
||||
|
||||
function getAllyStatTooltip(resource)
|
||||
/**
|
||||
* Create ally player stat tooltip.
|
||||
* @param {string} resource - Resource type, on which values will be sorted.
|
||||
* @param {object} playerStates - Playerstates from players whos stats are viewed in the tooltip.
|
||||
* @param {number} sort - 0 no order, -1 descending, 1 ascending order.
|
||||
* @returns {string} Tooltip string.
|
||||
*/
|
||||
function getAllyStatTooltip(resource, playerStates, sort)
|
||||
{
|
||||
let playersState = GetSimState().players;
|
||||
let ret = "";
|
||||
let tooltip = [];
|
||||
|
||||
for (let player in playersState)
|
||||
if (player != 0 &&
|
||||
player != g_ViewedPlayer &&
|
||||
g_Players[player].state != "defeated" &&
|
||||
(g_IsObserver ||
|
||||
playersState[g_ViewedPlayer].hasSharedLos &&
|
||||
g_Players[player].isMutualAlly[g_ViewedPlayer]))
|
||||
ret += "\n" + sprintf(translate("%(playername)s: %(statValue)s"), {
|
||||
"playername": colorizePlayernameHelper("■", player) + " " + g_Players[player].name,
|
||||
"statValue": resource == "pop" ?
|
||||
sprintf(translate("%(popCount)s/%(popLimit)s/%(popMax)s"), playersState[player]) :
|
||||
Math.round(playersState[player].resourceCounts[resource])
|
||||
});
|
||||
|
||||
return ret;
|
||||
for (let player in playerStates)
|
||||
tooltip.push({
|
||||
"playername": colorizePlayernameHelper("■", player) + " " + g_Players[player].name,
|
||||
"statValue": resource == "pop" ?
|
||||
sprintf(translate("%(popCount)s/%(popLimit)s/%(popMax)s"), playerStates[player]) :
|
||||
Math.round(playerStates[player].resourceCounts[resource]),
|
||||
"orderValue": resource == "pop" ? playerStates[player].popCount :
|
||||
Math.round(playerStates[player].resourceCounts[resource])
|
||||
});
|
||||
if (sort)
|
||||
tooltip.sort((a, b) => sort * (b.orderValue - a.orderValue));
|
||||
return "\n" + tooltip.map(stat => sprintf(translate("%(playername)s: %(statValue)s"), stat)).join("\n");
|
||||
}
|
||||
|
||||
function updatePlayerDisplay()
|
||||
{
|
||||
let playerState = GetSimState().players[g_ViewedPlayer];
|
||||
if (!playerState)
|
||||
let allPlayerStates = GetSimState().players;
|
||||
let viewedPlayerState = allPlayerStates[g_ViewedPlayer];
|
||||
let viewablePlayerStates = {};
|
||||
for (let player in allPlayerStates)
|
||||
if (player != 0 &&
|
||||
player != g_ViewedPlayer &&
|
||||
g_Players[player].state != "defeated" &&
|
||||
(g_IsObserver ||
|
||||
viewedPlayerState.hasSharedLos &&
|
||||
g_Players[player].isMutualAlly[g_ViewedPlayer]))
|
||||
viewablePlayerStates[player] = allPlayerStates[player];
|
||||
|
||||
if (!viewedPlayerState)
|
||||
return;
|
||||
|
||||
let tooltipSort = +Engine.ConfigDB_GetValue("user", "gui.session.respoptooltipsort");
|
||||
|
||||
let orderHotkeyTooltip = Object.keys(viewablePlayerStates).length <= 1 ? "" :
|
||||
"\n" + sprintf(translate("%(order)s: %(hotkey)s to change order."), {
|
||||
"hotkey": setStringTags("\\[Click]", g_HotkeyTags),
|
||||
"order": tooltipSort == 0 ? translate("Unordered") : tooltipSort == 1 ? translate("Descending") : translate("Ascending")
|
||||
});
|
||||
|
||||
let resCodes = g_ResourceData.GetCodes();
|
||||
for (let r = 0; r < resCodes.length; ++r)
|
||||
{
|
||||
@ -1167,19 +1189,20 @@ function updatePlayerDisplay()
|
||||
if (descr)
|
||||
tooltip += "\n" + translate(descr);
|
||||
|
||||
tooltip += getAllyStatTooltip(res);
|
||||
tooltip += orderHotkeyTooltip + getAllyStatTooltip(res, viewablePlayerStates, tooltipSort);
|
||||
|
||||
resourceObj.tooltip = tooltip;
|
||||
|
||||
Engine.GetGUIObjectByName("resource[" + r + "]_count").caption = Math.floor(playerState.resourceCounts[res]);
|
||||
Engine.GetGUIObjectByName("resource[" + r + "]_count").caption = Math.floor(viewedPlayerState.resourceCounts[res]);
|
||||
}
|
||||
|
||||
Engine.GetGUIObjectByName("resourcePop").caption = sprintf(translate("%(popCount)s/%(popLimit)s"), playerState);
|
||||
Engine.GetGUIObjectByName("resourcePop").caption = sprintf(translate("%(popCount)s/%(popLimit)s"), viewedPlayerState);
|
||||
Engine.GetGUIObjectByName("population").tooltip = translate("Population (current / limit)") + "\n" +
|
||||
sprintf(translate("Maximum population: %(popCap)s"), { "popCap": playerState.popMax }) +
|
||||
getAllyStatTooltip("pop");
|
||||
sprintf(translate("Maximum population: %(popCap)s"), { "popCap": viewedPlayerState.popMax }) +
|
||||
orderHotkeyTooltip +
|
||||
getAllyStatTooltip("pop", viewablePlayerStates, tooltipSort);
|
||||
|
||||
g_IsTrainingBlocked = playerState.trainingBlocked;
|
||||
g_IsTrainingBlocked = viewedPlayerState.trainingBlocked;
|
||||
}
|
||||
|
||||
function selectAndMoveTo(ent)
|
||||
|
@ -1,6 +1,10 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
|
||||
<object name="population" size="0 0 50%-52 100%" type="image" style="resourceCounter" tooltip_style="sessionToolTipBold">
|
||||
<object name="population" size="0 0 50%-52 100%" type="button" style="resourceCounter" tooltip_style="sessionToolTipBold">
|
||||
<object size="0 -2 40 38" type="image" sprite="stretched:session/icons/resources/population.png" ghost="true"/>
|
||||
<object size="32 0 100% 100%-2" type="text" style="resourceText" name="resourcePop"/>
|
||||
<action on="Press">
|
||||
saveSettingAndWriteToUserConfig("gui.session.respoptooltipsort", (+Engine.ConfigDB_GetValue("user", "gui.session.respoptooltipsort") + 2) % 3 - 1);
|
||||
updatePlayerDisplay();
|
||||
</action>
|
||||
</object>
|
||||
|
@ -2,9 +2,13 @@
|
||||
|
||||
<object size="0 0 50%-90-52 100%" name="resourceCounts">
|
||||
<repeat count="4">
|
||||
<object name="resource[n]" size="0 0 89 100%" type="image" style="resourceCounter" tooltip_style="sessionToolTipBold">
|
||||
<object name="resource[n]" size="0 0 89 100%" type="button" style="resourceCounter" tooltip_style="sessionToolTipBold">
|
||||
<object size="0 -2 40 38" type="image" name="resource[n]_icon" ghost="true"/>
|
||||
<object size="34 0 100%-2 100%-2" type="text" style="resourceText" name="resource[n]_count"/>
|
||||
<action on="Press">
|
||||
saveSettingAndWriteToUserConfig("gui.session.respoptooltipsort", (+Engine.ConfigDB_GetValue("user", "gui.session.respoptooltipsort") + 2) % 3 - 1);
|
||||
updatePlayerDisplay();
|
||||
</action>
|
||||
</object>
|
||||
</repeat>
|
||||
</object>
|
||||
|
Loading…
Reference in New Issue
Block a user