1
0
forked from 0ad/0ad

Adds a config option for more detailed tooltips. Fixes #2549.

This was SVN commit r15161.
This commit is contained in:
scythetwirler 2014-05-19 00:01:47 +00:00
parent 8e6b624ea5
commit 61b6eba4c1
3 changed files with 27 additions and 12 deletions

View File

@ -9,6 +9,7 @@ var options = {
[translate("Windowed Mode"), translate("Start 0 A.D. in a window"), {"config":"windowed"}, "boolean"],
[translate("Background Pause"), translate("Pause single player games when window loses focus"), {"config":"pauseonfocusloss"}, "boolean"],
[translate("Disable Welcome Screen"), translate("If you disable this screen completely, you may miss important announcements.\nYou can still launch it using the main menu."), {"config":"splashscreendisable"}, "boolean"],
[translate("Detailed Tooltips"), translate("Show detailed tooltips for trainable units in unit-producing buildings."), {"config":"showdetailedtooltips"}, "boolean"],
[translate("Developer Overlay"), translate("Show overlay in-game with options such as reveal map, control all units, and change perspective. Designed for use by developers"), {"config":"developeroverlay.enable"}, "boolean"],
],
"graphicsSetting":

View File

@ -514,7 +514,17 @@ function setupUnitPanel(guiName, usedPanels, unitEntState, playerState, items, c
var [trainEntLimit, trainEntCount, canBeAddedCount, trainEntLimitChangers] =
getEntityLimitAndCount(playerState, entType);
tooltip += formatLimitString(trainEntLimit, trainEntCount, trainEntLimitChangers);
if (Engine.ConfigDB_GetValue("user", "showdetailedtooltips") === "true")
{
if (template.health)
tooltip += "\n[font=\"sans-bold-13\"]" + translate("Health:") + "[/font] " + template.health;
if (template.attack)
tooltip += "\n" + getEntityAttack(template);
if (template.armour)
tooltip += "\n[font=\"sans-bold-13\"]" + translate("Armour") + ":[/font] " + armorTypesToText(template.armour);
if (template.speed)
tooltip += "\n" + getEntitySpeed(template);
}
tooltip += "[color=\"255 251 131\"]" + formatBatchTrainingString(buildingsCountToTrainFullBatch, fullBatchSize, remainderBatch) + "[/color]";
break;

View File

@ -234,17 +234,17 @@ function damageTypesToText(dmg)
if (dmg.hack)
dmgArray.push(sprintf(translate("%(damage)s %(damageType)s"), {
damage: dmg.hack,
damageType: "[font=\"sans-12\"]" + translate("Hack") + "[/font]"
damageType: "[font=\"sans-10\"][color=\"orange\"]" + translate("Hack") + "[/color][/font]"
}));
if (dmg.pierce)
dmgArray.push(sprintf(translate("%(damage)s %(damageType)s"), {
damage: dmg.pierce,
damageType: "[font=\"sans-12\"]" + translate("Pierce") + "[/font]"
damageType: "[font=\"sans-10\"][color=\"orange\"]" + translate("Pierce") + "[/color][/font]"
}));
if (dmg.crush)
dmgArray.push(sprintf(translate("%(damage)s %(damageType)s"), {
damage: dmg.crush,
damageType: "[font=\"sans-12\"]" + translate("Crush") + "[/font]"
damageType: "[font=\"sans-10\"][color=\"orange\"]" + translate("Crush") + "[/color][/font]"
}));
return dmgArray.join("[font=\"sans-12\"]" + translate(", ") + "[/font]");
@ -260,19 +260,19 @@ function armorTypesToText(dmg)
if (dmg.hack)
dmgArray.push(sprintf(translate("%(damage)s %(damageType)s %(armorPercentage)s"), {
damage: dmg.hack,
damageType: "[font=\"sans-12\"]" + translate("Hack") + "[/font]",
damageType: "[font=\"sans-10\"][color=\"orange\"]" + translate("Hack") + "[/color][/font]",
armorPercentage: "[font=\"sans-10\"]" + sprintf(translate("(%(armorPercentage)s)"), { armorPercentage: armorLevelToPercentageString(dmg.hack) }) + "[/font]"
}));
if (dmg.pierce)
dmgArray.push(sprintf(translate("%(damage)s %(damageType)s %(armorPercentage)s"), {
damage: dmg.pierce,
damageType: "[font=\"sans-12\"]" + translate("Pierce") + "[/font]",
damageType: "[font=\"sans-10\"][color=\"orange\"]" + translate("Pierce") + "[/color][/font]",
armorPercentage: "[font=\"sans-10\"]" + sprintf(translate("(%(armorPercentage)s)"), { armorPercentage: armorLevelToPercentageString(dmg.pierce) }) + "[/font]"
}));
if (dmg.crush)
dmgArray.push(sprintf(translate("%(damage)s %(damageType)s %(armorPercentage)s"), {
damage: dmg.crush,
damageType: "[font=\"sans-12\"]" + translate("Crush") + "[/font]",
damageType: "[font=\"sans-10\"][color=\"orange\"]" + translate("Crush") + "[/color][/font]",
armorPercentage: "[font=\"sans-10\"]" + sprintf(translate("(%(armorPercentage)s)"), { armorPercentage: armorLevelToPercentageString(dmg.crush) }) + "[/font]"
}));
@ -574,8 +574,10 @@ function getEntitySpeed(template)
{
var label = "[font=\"sans-bold-13\"]" + translate("Speed:") + "[/font]";
var speeds = [];
if (template.speed.walk) speeds.push(sprintf(translate("%(speed)s %(movementType)s"), { speed: template.speed.walk, movementType: "[font=\"sans-12\"]" + translate("Walk") + "[/font]"}));
if (template.speed.run) speeds.push(sprintf(translate("%(speed)s %(movementType)s"), { speed: template.speed.run, movementType: "[font=\"sans-12\"]" + translate("Run") + "[/font]"}));
if (template.speed.walk)
speeds.push(sprintf(translate("%(speed)s %(movementType)s"), { speed: template.speed.walk, movementType: "[font=\"sans-10\"][color=\"orange\"]" + translate("Walk") + "[/color][/font]"}));
if (template.speed.run)
speeds.push(sprintf(translate("%(speed)s %(movementType)s"), { speed: template.speed.run, movementType: "[font=\"sans-10\"][color=\"orange\"]" + translate("Run") + "[/color][/font]"}));
speed = sprintf(translate("%(label)s %(speeds)s"), { label: label, speeds: speeds.join(translate(", ")) })
}
@ -591,6 +593,8 @@ function getEntityAttack(template)
delete template.attack['Slaughter'];
for (var type in template.attack)
{
if (type == "Charge")
continue; // Charging isn't implemented yet and shouldn't be displayed.
var attack = "";
var attackLabel = "[font=\"sans-bold-13\"]" + getAttackTypeLabel(type) + "[/font]";
if (type == "Ranged")
@ -600,7 +604,7 @@ function getEntityAttack(template)
attackLabel: attackLabel,
damageTypes: damageTypesToText(template.attack[type]),
rangeLabel: "[font=\"sans-bold-13\"]" + translate("Range:") + "[/font]",
range: Math.round(template.attack[type].maxRange/4)
range: Math.round(template.attack[type].maxRange) + "[font=\"sans-10\"][color=\"orange\"] " + translate("meters") + "[/color][/font]"
});
}
else
@ -613,7 +617,7 @@ function getEntityAttack(template)
attacks.push(attack);
}
}
return attacks.join("\n");
return attacks.join(translate(", "));
}
function getEntityNames(template)
@ -808,4 +812,4 @@ function getLocalizedResourceName(resourceCode, context)
warn(sprintf("Internationalization: Unexpected context for resource type localization found: ‘%(context)s’. This context is not supported.", { context: context }));
return resourceCode; // It should never get here.
}
}
}