Add a "Catafalque Bonuses" page
Permitting easy(ish) comparison of the bonuses granted by each civ's Catafalque unit. Accessible from the Main Menu's "Learn to Play" submenu. Accepted by: @Freagarach Comments by: @wowgetoffyourcellphone Screenshot: https://code.wildfiregames.com/F1785729 Differential Revision: https://code.wildfiregames.com/D3332 This was SVN commit r24726.
This commit is contained in:
parent
b5bbed4690
commit
bbd808349f
@ -1011,15 +1011,22 @@ function getEntityNamesFormatted(template)
|
||||
|
||||
// Translation: Example: "Epibátēs Athēnaîos [font="sans-bold-16"](Athenian Marine)[/font]"
|
||||
return sprintf(translate("%(specificName)s %(fontStart)s(%(genericName)s)%(fontEnd)s"), {
|
||||
"specificName":
|
||||
setStringTags(template.name.specific[0], g_TooltipTextFormats.nameSpecificBig) +
|
||||
setStringTags(template.name.specific.slice(1).toUpperCase(), g_TooltipTextFormats.nameSpecificSmall),
|
||||
"specificName": getEntitySpecificNameFormatted(template),
|
||||
"genericName": template.name.generic,
|
||||
"fontStart": '[font="' + g_TooltipTextFormats.nameGeneric.font + '"]',
|
||||
"fontEnd": '[/font]'
|
||||
});
|
||||
}
|
||||
|
||||
function getEntitySpecificNameFormatted(template)
|
||||
{
|
||||
if (!template.name.specific)
|
||||
return setStringTags(template.name.generic, g_TooltipTextFormats.nameSpecificBig);
|
||||
|
||||
return setStringTags(template.name.specific[0], g_TooltipTextFormats.nameSpecificBig) +
|
||||
setStringTags(template.name.specific.slice(1).toUpperCase(), g_TooltipTextFormats.nameSpecificSmall);
|
||||
}
|
||||
|
||||
function getVisibleEntityClassesFormatted(template)
|
||||
{
|
||||
if (!template.visibleIdentityClasses || !template.visibleIdentityClasses.length)
|
||||
|
18
binaries/data/mods/public/gui/page_catafalque.xml
Normal file
18
binaries/data/mods/public/gui/page_catafalque.xml
Normal file
@ -0,0 +1,18 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<page>
|
||||
<include>common/modern/setup.xml</include>
|
||||
<include>common/modern/styles.xml</include>
|
||||
<include>common/modern/sprites.xml</include>
|
||||
|
||||
<include>common/sprites.xml</include>
|
||||
<include>common/styles.xml</include>
|
||||
|
||||
<include>reference/common/sprites.xml</include>
|
||||
<include>reference/common/styles.xml</include>
|
||||
|
||||
<include>reference/catafalque/sprites.xml</include>
|
||||
<include>reference/catafalque/styles.xml</include>
|
||||
<include>reference/catafalque/catafalque.xml</include>
|
||||
|
||||
<include>reference/common/setup.xml</include>
|
||||
</page>
|
@ -44,6 +44,13 @@ var g_MainMenuItems = [
|
||||
Engine.PushGuiPage("page_civinfo.xml", {}, callback);
|
||||
}
|
||||
},
|
||||
{
|
||||
"caption": translate("Catafalque Overview"),
|
||||
"tooltip": translate("Compare the bonuses of catafalques featured in 0 A.D."),
|
||||
"onPress": () => {
|
||||
Engine.PushGuiPage("page_catafalque.xml");
|
||||
}
|
||||
},
|
||||
{
|
||||
"caption": translate("Map Overview"),
|
||||
"tooltip": translate("View the different maps featured in 0 A.D."),
|
||||
|
@ -0,0 +1,41 @@
|
||||
class CatafalquePage extends ReferencePage
|
||||
{
|
||||
constructor(data)
|
||||
{
|
||||
super();
|
||||
|
||||
this.Canvas = Engine.GetGUIObjectByName("canvas");
|
||||
this.Emblems = [];
|
||||
for (let emblem in this.Canvas.children)
|
||||
this.Emblems.push(new Emblem(this, this.Emblems.length));
|
||||
|
||||
let civs = [];
|
||||
for (let civCode in this.civData)
|
||||
if (this.Emblems[civs.length].setCiv(civCode, this.civData[civCode]))
|
||||
civs.push(civCode);
|
||||
|
||||
let canvasSize = this.Canvas.getComputedSize();
|
||||
let canvasCenterX = (canvasSize.right - canvasSize.left) / 2;
|
||||
let canvasCenterY = (canvasSize.bottom - canvasSize.top) / 2;
|
||||
let radius = Math.min(canvasCenterX, canvasCenterY) / 5 * 4;
|
||||
let angle = 2 * Math.PI / civs.length;
|
||||
|
||||
for (let i = 0; i < civs.length; ++i)
|
||||
this.Emblems[i].setPosition(
|
||||
canvasCenterX + radius * Math.sin(angle * i),
|
||||
canvasCenterY + radius * -Math.cos(angle * i)
|
||||
);
|
||||
|
||||
let closeButton = new CloseButton(this);
|
||||
}
|
||||
|
||||
closePage()
|
||||
{
|
||||
Engine.PopGuiPage({ "page": "page_catafalque.xml" });
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
CatafalquePage.prototype.CloseButtonTooltip =
|
||||
translate("%(hotkey)s: Close Catafalque Bonuses.");
|
41
binaries/data/mods/public/gui/reference/catafalque/Emblem.js
Normal file
41
binaries/data/mods/public/gui/reference/catafalque/Emblem.js
Normal file
@ -0,0 +1,41 @@
|
||||
class Emblem
|
||||
{
|
||||
constructor(page, emblemNum)
|
||||
{
|
||||
this.page = page;
|
||||
|
||||
this.Emblem = Engine.GetGUIObjectByName("emblem[" + emblemNum + "]");
|
||||
this.EmblemImage = this.Emblem.children[0];
|
||||
this.EmblemCaption = this.Emblem.children[1];
|
||||
|
||||
let size = this.Emblem.size;
|
||||
this.cx = (size.right - size.left) / 2;
|
||||
this.cy = (size.bottom - size.top) / 2;
|
||||
}
|
||||
|
||||
setCiv(civCode, civData)
|
||||
{
|
||||
let template = this.page.TemplateParser.getEntity(this.CatafalqueTemplateMethod(civCode), civCode);
|
||||
if (!template)
|
||||
return false;
|
||||
|
||||
this.EmblemImage.sprite = "stretched:" + civData.Emblem;
|
||||
this.EmblemImage.tooltip = getAurasTooltip(template);
|
||||
this.EmblemCaption.caption = getEntitySpecificNameFormatted(template);
|
||||
this.Emblem.hidden = false;
|
||||
return true;
|
||||
}
|
||||
|
||||
setPosition(x, y)
|
||||
{
|
||||
let size = this.Emblem.size;
|
||||
size.left = x - this.cx;
|
||||
size.right = x + this.cx;
|
||||
size.top = y - this.cy;
|
||||
size.bottom = y + this.cy;
|
||||
this.Emblem.size = size;
|
||||
}
|
||||
}
|
||||
|
||||
Emblem.prototype.CatafalqueTemplateMethod =
|
||||
civCode => "units/" + civCode + "/catafalque";
|
@ -0,0 +1,4 @@
|
||||
function init(data = {})
|
||||
{
|
||||
g_Page = new CatafalquePage(data);
|
||||
}
|
@ -0,0 +1,37 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
|
||||
<objects>
|
||||
|
||||
<script directory="gui/common/"/>
|
||||
|
||||
<script directory="gui/reference/common/"/>
|
||||
<script directory="gui/reference/common/Buttons/"/>
|
||||
|
||||
<script directory="gui/reference/catafalque/"/>
|
||||
|
||||
<!-- Add a translucent black background to fade out the menu page -->
|
||||
<object type="image" sprite="BackgroundTranslucent"/>
|
||||
|
||||
<object type="image" style="ModernDialog" size="50%-368 50%-368 50%+368 50%+370">
|
||||
|
||||
<object style="TitleText" type="text" size="50%-128 -18 50%+128 14">
|
||||
<translatableAttribute id="caption">Catafalque Bonuses</translatableAttribute>
|
||||
</object>
|
||||
|
||||
<object name="canvas" size="8 8 100%-8 100%-8">
|
||||
<repeat count="16" var="e">
|
||||
<object name="emblem[e]" style="Emblem">
|
||||
<object type="image" style="EmblemImage"/>
|
||||
<object type="text" style="EmblemText"/>
|
||||
</object>
|
||||
</repeat>
|
||||
</object>
|
||||
|
||||
<!-- Central image -->
|
||||
<object type="image" size="50%-128 50%-128 50%+128 50%+128" sprite="stretched:reference/portraits/catafalque.png"/>
|
||||
|
||||
<include file="gui/reference/common/Buttons/CloseButton.xml"/>
|
||||
|
||||
</object>
|
||||
|
||||
</objects>
|
@ -0,0 +1,9 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<sprites>
|
||||
<sprite name="EmblemMask">
|
||||
<image
|
||||
texture="session/portraits/emblems/states/partial_mask.png"
|
||||
size="50%-64 50%-20 50%+64 50%+20"
|
||||
/>
|
||||
</sprite>
|
||||
</sprites>
|
@ -0,0 +1,21 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<styles>
|
||||
<style name="Emblem"
|
||||
size="0 0 160 128"
|
||||
hidden="true"
|
||||
/>
|
||||
|
||||
<style name="EmblemImage"
|
||||
size="50%-64 50%-64 50%+64 50%+64"
|
||||
tooltip_style="referenceTooltip"
|
||||
/>
|
||||
|
||||
<style name="EmblemText"
|
||||
size="0 50%-18 100% 50%+18"
|
||||
sprite="EmblemMask"
|
||||
textcolor="white"
|
||||
text_align="center"
|
||||
text_valign="center"
|
||||
ghost="true"
|
||||
/>
|
||||
</styles>
|
Loading…
Reference in New Issue
Block a user