Index: binaries/data/mods/mod/gui/common/modern/sprites.xml =================================================================== --- binaries/data/mods/mod/gui/common/modern/sprites.xml +++ binaries/data/mods/mod/gui/common/modern/sprites.xml @@ -153,6 +153,59 @@ /> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Close + + + + + Index: binaries/data/mods/public/gui/session/selection_details.js =================================================================== --- binaries/data/mods/public/gui/session/selection_details.js +++ binaries/data/mods/public/gui/session/selection_details.js @@ -302,6 +302,8 @@ // TODO: we should require all entities to have icons Engine.GetGUIObjectByName("icon").sprite = template.icon ? ("stretched:session/portraits/" + template.icon) : "BackgroundBlack"; + if (template.icon) + Engine.GetGUIObjectByName("iconBorder").onpressright = function () { showTemplateDetails(entState.template, playerState.civ); }; Engine.GetGUIObjectByName("attackAndArmorStats").tooltip = [ getAttackTooltip, @@ -326,7 +328,8 @@ iconTooltips = iconTooltips.concat([ getVisibleEntityClassesFormatted, getAurasTooltip, - getEntityTooltip + getEntityTooltip, + getRightClickMessage ].map(func => func(template))); Engine.GetGUIObjectByName("iconBorder").tooltip = iconTooltips.filter(tip => tip).join("\n"); Index: binaries/data/mods/public/gui/session/selection_panels.js =================================================================== --- binaries/data/mods/public/gui/session/selection_panels.js +++ binaries/data/mods/public/gui/session/selection_panels.js @@ -262,6 +262,7 @@ template.auras = GetTemplateData(template.wallSet.templates.long).auras; data.button.onPress = function () { startBuildingPlacement(data.item, data.playerState); }; + data.button.onPressRight = function () { showTemplateDetails(data.item, data.playerState.civ); }; let tooltips = [ getEntityNamesFormatted, @@ -270,7 +271,8 @@ getEntityTooltip, getEntityCostTooltip, getGarrisonTooltip, - getPopulationBonusTooltip + getPopulationBonusTooltip, + getRightClickMessage ].map(func => func(template)); let limits = getEntityLimitAndCount(data.playerState, data.item); @@ -760,7 +762,8 @@ let tooltips = [ getEntityNamesFormatted, getEntityTooltip, - getEntityCostTooltip + getEntityCostTooltip, + getRightClickMessage ].map(func => func(template)); if (!requirementsPassed) @@ -811,6 +814,8 @@ addResearchToQueue(data.item.researchFacilityId, tech); }; + button.onPressRight = function () { showTemplateDetails("tech/"+data.item.tech, data.playerState.civ); }; + if (data.item.tech.pair) { // On mouse enter, show a cross over the other icon @@ -998,6 +1003,7 @@ data.button.onPress = function() { addTrainingToQueue(data.unitEntStates.map(state => state.id), data.item, data.playerState); }; + data.button.onPressRight = function () { showTemplateDetails(data.item, data.playerState.civ); }; data.countDisplay.caption = trainNum > 1 ? trainNum : ""; @@ -1023,7 +1029,8 @@ getArmorTooltip, getGarrisonTooltip, getProjectilesTooltip, - getSpeedTooltip + getSpeedTooltip, + getRightClickMessage ].map(func => func(template))); tooltips.push( @@ -1121,7 +1128,8 @@ getEntityCostTooltip(data.item), formatLimitString(limits.entLimit, limits.entCount, limits.entLimitChangers), getRequiredTechnologyTooltip(technologyEnabled, data.item.requiredTechnology, GetSimState().players[data.player].civ), - getNeededResourcesTooltip(neededResources)); + getNeededResourcesTooltip(neededResources), + getRightClickMessage()); tooltip = tooltips.filter(tip => tip).join("\n"); @@ -1140,6 +1148,8 @@ data.button.enabled = controlsPlayer(data.player); data.button.tooltip = tooltip; + data.button.onPressRight = function () { showTemplateDetails(data.item.entity, data.playerState.civ); }; + let modifier = ""; if (!isUpgrading) { @@ -1177,6 +1187,20 @@ }; /** + * Pauses game and opens the entity details viewer on a given entity + */ +function showTemplateDetails(templateName, civ = "athen") +{ + pauseGame(); + let data = { + "templateName" : templateName, + "callback": "resumeGame", + "civ": civ, + }; + Engine.PushGuiPage("page_viewer.xml", data); +} + +/** * If two panels need the same space, so they collide, * the one appearing first in the order is rendered. * Index: binaries/data/mods/public/gui/session/selection_panels_helpers.js =================================================================== --- binaries/data/mods/public/gui/session/selection_panels_helpers.js +++ binaries/data/mods/public/gui/session/selection_panels_helpers.js @@ -84,6 +84,11 @@ } } +function getRightClickMessage() +{ + return translate("Right-click for more information."); +} + /** * Format entity count/limit message for the tooltip */ Index: binaries/data/mods/public/gui/session/selection_panels_middle/single_details_area.xml =================================================================== --- binaries/data/mods/public/gui/session/selection_panels_middle/single_details_area.xml +++ binaries/data/mods/public/gui/session/selection_panels_middle/single_details_area.xml @@ -67,7 +67,7 @@ - + Index: binaries/data/mods/public/l10n/messages.json =================================================================== --- binaries/data/mods/public/l10n/messages.json +++ binaries/data/mods/public/l10n/messages.json @@ -243,6 +243,7 @@ "gui/pregame/**.js", "gui/reference/common/**.js", "gui/reference/structree/**.js", + "gui/reference/viewer/**.js", "gui/replaymenu/**.js", "gui/savedgames/**.js", "gui/splashscreen/**.js", @@ -277,6 +278,7 @@ "gui/options/**.xml", "gui/pregame/**.xml", "gui/reference/structree/**.xml", + "gui/reference/viewer/**.xml", "gui/replaymenu/**.xml", "gui/savedgames/**.xml", "gui/splashscreen/**.xml", @@ -386,6 +388,7 @@ "keywords": { "GenericName": {}, "SpecificName": {}, + "History": {}, "VisibleClasses": { "splitOnWhitespace": true }, @@ -417,6 +420,7 @@ "keywords": { "GenericName": {}, "SpecificName": {}, + "History": {}, "VisibleClasses": { "splitOnWhitespace": true }, @@ -455,6 +459,7 @@ "keywords": { "GenericName": {}, "SpecificName": {}, + "History": {}, "VisibleClasses": { "splitOnWhitespace": true },