diff --git a/binaries/data/mods/public/gui/common/tooltips.js b/binaries/data/mods/public/gui/common/tooltips.js index 29d0314131..bd5f88032a 100644 --- a/binaries/data/mods/public/gui/common/tooltips.js +++ b/binaries/data/mods/public/gui/common/tooltips.js @@ -339,6 +339,7 @@ function getEntityCostComponentsTooltipString(template, trainNum, entity) return costs; } + function getGatherTooltip(template) { if (!template.gather) @@ -356,6 +357,16 @@ function getGatherTooltip(template) }); } +function getRequiredTechnologyTooltip(technologyEnabled, requiredTechnology) +{ + if (technologyEnabled) + return ""; + + return sprintf(translate("Requires %(technology)s"), { + "technology": getEntityNames(GetTechnologyData(requiredTechnology)) + }); +} + /** * Returns an array of strings for a set of wall pieces. If the pieces share * resource type requirements, output will be of the form '10 to 30 Stone', diff --git a/binaries/data/mods/public/gui/session/input.js b/binaries/data/mods/public/gui/session/input.js index 4b1b0ecc68..c9b9dfcd12 100644 --- a/binaries/data/mods/public/gui/session/input.js +++ b/binaries/data/mods/public/gui/session/input.js @@ -687,10 +687,11 @@ function handleInputBeforeGui(ev, hoveredObject) if (result && result.cost) { - placementSupport.tooltipMessage = getEntityCostTooltip(result); var neededResources = Engine.GuiInterfaceCall("GetNeededResources", { "cost": result.cost }); - if (neededResources) - placementSupport.tooltipMessage += getNeededResourcesTooltip(neededResources); + placementSupport.tooltipMessage = [ + getEntityCostTooltip(result), + getNeededResourcesTooltip(neededResources) + ].filter(tip => tip).join("\n"); } break; @@ -716,9 +717,7 @@ function handleInputBeforeGui(ev, hoveredObject) } } else - { placementSupport.tooltipMessage = translate("Cannot build wall here!"); - } updateBuildingPlacementPreview(); return true; diff --git a/binaries/data/mods/public/gui/session/selection_panels.js b/binaries/data/mods/public/gui/session/selection_panels.js index 1e184d2525..2f2cefbe68 100644 --- a/binaries/data/mods/public/gui/session/selection_panels.js +++ b/binaries/data/mods/public/gui/session/selection_panels.js @@ -344,14 +344,10 @@ g_SelectionPanels.Construction = { ].map(func => func(template)); let limits = getEntityLimitAndCount(data.playerState, data.item); - tooltips.push(formatLimitString(limits.entLimit, limits.entCount, limits.entLimitChangers)); - - if (!technologyEnabled) - tooltips.push(sprintf(translate("Requires %(technology)s"), { - "technology": getEntityNames(GetTechnologyData(template.requiredTechnology)) - })); - - tooltips.push(getNeededResourcesTooltip(neededResources)); + tooltips.push( + formatLimitString(limits.entLimit, limits.entCount, limits.entLimitChangers), + getRequiredTechnologyTooltip(technologyEnabled, template.requiredTechnology), + getNeededResourcesTooltip(neededResources)); data.button.tooltip = tooltips.filter(tip => tip).join("\n"); @@ -1058,15 +1054,9 @@ g_SelectionPanels.Training = { tooltips.push( "[color=\"" + g_HotkeyColor + "\"]" + formatBatchTrainingString(buildingsCountToTrainFullBatch, fullBatchSize, remainderBatch) + - "[/color]"); - - if (!technologyEnabled) - tooltips.push(sprintf(translate("Requires %(technology)s"), { - "technology": getEntityNames(GetTechnologyData(template.requiredTechnology)) - })); - - if (neededResources) - tooltips.push(getNeededResourcesTooltip(neededResources)); + "[/color]", + getRequiredTechnologyTooltip(technologyEnabled, template.requiredTechnology), + getNeededResourcesTooltip(neededResources)); data.button.tooltip = tooltips.filter(tip => tip).join("\n"); @@ -1141,26 +1131,24 @@ g_SelectionPanels.Upgrade = { let tooltip; if (!progress) { + let tooltips = []; if (data.item.tooltip) - tooltip = sprintf(translate("Upgrade into a %(name)s. %(tooltip)s"), { + tooltips.push(sprintf(translate("Upgrade into a %(name)s. %(tooltip)s"), { "name": template.name.generic, - "tooltip": data.item.tooltip - }); + "tooltip": translate(data.item.tooltip) + })); else - tooltip = sprintf(translate("Upgrade into a %(name)s."), { + tooltips.push(sprintf(translate("Upgrade into a %(name)s."), { "name": template.name.generic - }); + })); - if (data.item.cost) - tooltip += "\n" + getEntityCostTooltip(data.item); + tooltips.push( + getEntityCostTooltip(data.item), + formatLimitString(limits.entLimit, limits.entCount, limits.entLimitChangers), + getRequiredTechnologyTooltip(technologyEnabled, data.item.requiredTechnology), + getNeededResourcesTooltip(neededResources)); - tooltip += "\n" + formatLimitString(limits.entLimit, limits.entCount, limits.entLimitChangers); - if (!technologyEnabled) - tooltip += "\n" + sprintf(translate("Requires %(technology)s"), { - "technology": getEntityNames(GetTechnologyData(data.item.requiredTechnology)) - }); - - tooltip += getNeededResourcesTooltip(neededResources); + tooltip = tooltips.filter(tip => tip).join("\n"); data.button.onPress = function() { upgradeEntity(data.item.entity); }; }