Changeset View
Changeset View
Standalone View
Standalone View
binaries/data/mods/public/gui/common/tooltips.js
Show First 20 Lines • Show All 275 Lines • ▼ Show 20 Lines | |||||
} | } | ||||
function giveStatusDetails(giveStatusTemplate) | function giveStatusDetails(giveStatusTemplate) | ||||
{ | { | ||||
if (!giveStatusTemplate) | if (!giveStatusTemplate) | ||||
return ""; | return ""; | ||||
return sprintf(translate("gives %(name)s"), { | return sprintf(translate("gives %(name)s"), { | ||||
"name": Object.keys(giveStatusTemplate).map(x => unitFont(translateWithContext("status effect", x))).join(', '), | "name": Object.keys(giveStatusTemplate).map(x => unitFont(translateWithContext("status effect", giveStatusTemplate[x].Name))).join(', '), | ||||
elexis: (`Object.keys().map()` creates an array that `for...in` doesn't create, I think that was my… | |||||
}); | }); | ||||
} | } | ||||
function attackEffectsDetails(attackTypeTemplate) | function attackEffectsDetails(attackTypeTemplate) | ||||
{ | { | ||||
if (!attackTypeTemplate) | if (!attackTypeTemplate) | ||||
return ""; | return ""; | ||||
Show All 27 Lines | for (let attackType in template.attack) | ||||
// ToDo: This ought to be extended to include units which fire multiple projectiles. | // ToDo: This ought to be extended to include units which fire multiple projectiles. | ||||
if (template.buildingAI) | if (template.buildingAI) | ||||
projectiles = template.buildingAI.arrowCount || template.buildingAI.defaultArrowCount; | projectiles = template.buildingAI.arrowCount || template.buildingAI.defaultArrowCount; | ||||
// Show the effects of status effects below | // Show the effects of status effects below | ||||
let statusEffectsDetails = []; | let statusEffectsDetails = []; | ||||
if (attackTypeTemplate.GiveStatus) | if (attackTypeTemplate.GiveStatus) | ||||
for (let status in attackTypeTemplate.GiveStatus) | for (let status in attackTypeTemplate.GiveStatus) | ||||
statusEffectsDetails.push("\n " + getStatusEffectsTooltip(status, attackTypeTemplate.GiveStatus[status])); | statusEffectsDetails.push("\n " + getStatusEffectsTooltip(attackTypeTemplate.GiveStatus[status])); | ||||
statusEffectsDetails = statusEffectsDetails.join(""); | statusEffectsDetails = statusEffectsDetails.join(""); | ||||
tooltips.push(sprintf(translate("%(attackLabel)s: %(effects)s, %(range)s, %(rate)s%(statusEffects)s"), { | tooltips.push(sprintf(translate("%(attackLabel)s: %(effects)s, %(range)s, %(rate)s%(statusEffects)s"), { | ||||
"attackLabel": attackLabel, | "attackLabel": attackLabel, | ||||
"effects": attackEffectsDetails(attackTypeTemplate), | "effects": attackEffectsDetails(attackTypeTemplate), | ||||
"range": rangeDetails(attackTypeTemplate), | "range": rangeDetails(attackTypeTemplate), | ||||
"rate": attackRateDetails(attackTypeTemplate.repeatTime, projectiles), | "rate": attackRateDetails(attackTypeTemplate.repeatTime, projectiles), | ||||
"statusEffects": statusEffectsDetails | "statusEffects": statusEffectsDetails | ||||
Show All 29 Lines | for (let attackType in template.attack) | ||||
tooltips.push(splashDamageTooltip); | tooltips.push(splashDamageTooltip); | ||||
} | } | ||||
// If multiple attack types deal splash damage, the attack type should be shown to differentiate. | // If multiple attack types deal splash damage, the attack type should be shown to differentiate. | ||||
return tooltips.join("\n"); | return tooltips.join("\n"); | ||||
} | } | ||||
function getStatusEffectsTooltip(name, template) | function getStatusEffectsTooltip(template) | ||||
Not Done Inline ActionsThis can be improved I guess. Freagarach: This can be improved I guess. | |||||
{ | { | ||||
let tooltipAttributes = []; | |||||
let tooltipString = ""; | |||||
if (template.Tooltip) | |||||
{ | |||||
tooltipAttributes.push("%(tooltip)s"); | |||||
tooltipString = translate(template.Tooltip); | |||||
} | |||||
let attackEffectsString = ""; | |||||
if (template.Damage || template.Capture) | |||||
{ | |||||
tooltipAttributes.push("%(effects)s"); | |||||
attackEffectsString = attackEffectsDetails(template); | |||||
} | |||||
let intervalString = ""; | |||||
if (template.Interval) | |||||
{ | |||||
tooltipAttributes.push("%(rate)s"); | |||||
intervalString = sprintf(translate("%(interval)s"), { | |||||
"interval": attackRateDetails(+template.Interval) | |||||
}); | |||||
} | |||||
let durationString = ""; | let durationString = ""; | ||||
if (template.Duration) | if (template.Duration) | ||||
durationString = sprintf(translate(", %(durName)s: %(duration)s"), { | { | ||||
tooltipAttributes.push("%(duration)s"); | |||||
durationString = sprintf(translate("%(durName)s: %(duration)s"), { | |||||
"durName": headerFont(translate("Duration")), | "durName": headerFont(translate("Duration")), | ||||
"duration": getSecondsString((template.TimeElapsed ? +template.Duration - template.TimeElapsed : +template.Duration) / 1000), | "duration": getSecondsString((template._timeElapsed ? +template.Duration - template._timeElapsed : +template.Duration) / 1000), | ||||
}); | }); | ||||
} | |||||
return sprintf(translate("%(statusName)s: %(effects)s, %(rate)s%(durationString)s"), { | return sprintf(translate("%(statusName)s: " + tooltipAttributes.join(translate(commaFont(", ")))), { | ||||
"statusName": headerFont(translateWithContext("status effect", name)), | "statusName": headerFont(translateWithContext("status effect", template.Name)), | ||||
"effects": attackEffectsDetails(template), | "tooltip": tooltipString, | ||||
"rate": attackRateDetails(+template.Interval), | "effects": attackEffectsString, | ||||
"durationString": durationString | "rate": intervalString, | ||||
"duration": durationString | |||||
}); | }); | ||||
} | } | ||||
function getGarrisonTooltip(template) | function getGarrisonTooltip(template) | ||||
{ | { | ||||
if (!template.garrisonHolder) | if (!template.garrisonHolder) | ||||
return ""; | return ""; | ||||
▲ Show 20 Lines • Show All 497 Lines • Show Last 20 Lines |
Wildfire Games · Phabricator
(Object.keys().map() creates an array that for...in doesn't create, I think that was my fault, same for using join to comma separate requiring an object that += doesnt need)