Index: binaries/data/mods/public/gui/common/tooltips.js
===================================================================
--- binaries/data/mods/public/gui/common/tooltips.js
+++ binaries/data/mods/public/gui/common/tooltips.js
@@ -1022,6 +1022,14 @@
"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)
{
Index: binaries/data/mods/public/gui/page_catafalque.xml
===================================================================
--- /dev/null
+++ binaries/data/mods/public/gui/page_catafalque.xml
@@ -0,0 +1,18 @@
+
+
+ common/modern/setup.xml
+ common/modern/styles.xml
+ common/modern/sprites.xml
+
+ common/sprites.xml
+ common/styles.xml
+
+ reference/common/sprites.xml
+ reference/common/styles.xml
+
+ reference/catafalque/sprites.xml
+ reference/catafalque/styles.xml
+ reference/catafalque/catafalque.xml
+
+ reference/common/setup.xml
+
Index: binaries/data/mods/public/gui/reference/catafalque/CatafalquePage.js
===================================================================
--- /dev/null
+++ binaries/data/mods/public/gui/reference/catafalque/CatafalquePage.js
@@ -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.");
Index: binaries/data/mods/public/gui/reference/catafalque/Emblem.js
===================================================================
--- /dev/null
+++ binaries/data/mods/public/gui/reference/catafalque/Emblem.js
@@ -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";
Index: binaries/data/mods/public/gui/reference/catafalque/catafalque.js
===================================================================
--- /dev/null
+++ binaries/data/mods/public/gui/reference/catafalque/catafalque.js
@@ -0,0 +1,4 @@
+function init(data = {})
+{
+ g_Page = new CatafalquePage(data);
+}
Index: binaries/data/mods/public/gui/reference/catafalque/catafalque.xml
===================================================================
--- /dev/null
+++ binaries/data/mods/public/gui/reference/catafalque/catafalque.xml
@@ -0,0 +1,37 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Index: binaries/data/mods/public/gui/reference/catafalque/sprites.xml
===================================================================
--- /dev/null
+++ binaries/data/mods/public/gui/reference/catafalque/sprites.xml
@@ -0,0 +1,9 @@
+
+
+
+
+
+
Index: binaries/data/mods/public/gui/reference/catafalque/styles.xml
===================================================================
--- /dev/null
+++ binaries/data/mods/public/gui/reference/catafalque/styles.xml
@@ -0,0 +1,21 @@
+
+
+
+
+
+
+
+
Index: binaries/data/mods/public/gui/reference/civinfo/CivInfoPage.js
===================================================================
--- binaries/data/mods/public/gui/reference/civinfo/CivInfoPage.js
+++ binaries/data/mods/public/gui/reference/civinfo/CivInfoPage.js
@@ -10,6 +10,7 @@
this.gameplaySection = new GameplaySection(this);
this.historySection = new HistorySection(this);
+ let catafalqueButton = new CatafalqueButton(this);
let structreeButton = new StructreeButton(this);
let closeButton = new CloseButton(this);
Engine.SetGlobalHotkey("civinfo", "Press", this.closePage.bind(this));
Index: binaries/data/mods/public/gui/reference/civinfo/civinfo.xml
===================================================================
--- binaries/data/mods/public/gui/reference/civinfo/civinfo.xml
+++ binaries/data/mods/public/gui/reference/civinfo/civinfo.xml
@@ -31,6 +31,7 @@
+
Index: binaries/data/mods/public/gui/reference/common/Buttons/CatafalqueButton.js
===================================================================
--- /dev/null
+++ binaries/data/mods/public/gui/reference/common/Buttons/CatafalqueButton.js
@@ -0,0 +1,24 @@
+class CatafalqueButton
+{
+ constructor(parentPage)
+ {
+ this.parentPage = parentPage;
+
+ this.catafalqueButton = Engine.GetGUIObjectByName("catafalqueButton");
+ this.catafalqueButton.onPress = this.onPress.bind(this);
+ this.catafalqueButton.caption = this.Caption;
+ this.catafalqueButton.tooltip = this.Tooltip;
+ }
+
+ onPress()
+ {
+ Engine.PushGuiPage("page_catafalque.xml");
+ }
+
+}
+
+CatafalqueButton.prototype.Caption =
+ translate("Catafalques");
+
+CatafalqueButton.prototype.Tooltip =
+ translate("View Catafalque Bonuses.");
Index: binaries/data/mods/public/gui/reference/common/Buttons/CatafalqueButton.xml
===================================================================
--- /dev/null
+++ binaries/data/mods/public/gui/reference/common/Buttons/CatafalqueButton.xml
@@ -0,0 +1,7 @@
+
+