From d7dda097e147eb9cae81c8a06105d623a8a19bf5 Mon Sep 17 00:00:00 2001 From: Vantha Date: Tue, 3 Dec 2024 21:52:23 +0100 Subject: [PATCH] Extend the tips page for multiple images per tip Enable the Tips and Tricks page to show multiple images for each tip. Add a small GUI panel below the image for switching between them. Only show it when the current tip has more than one images. Introduce tipfiles.json to assign images to the text files. (And stop of relying on file naming) Add a tip about wonders, and make some slight changes to other texts. Improve existing tip images and add a bunch of new ones. --- .../art/textures/ui/tipdisplay/arrow.png | 3 + .../art/textures/ui/tips/briton_war_dog.png | 4 +- .../public/art/textures/ui/tips/forge.png | 3 - .../art/textures/ui/tips/forge_iber.png | 3 + .../art/textures/ui/tips/forge_maur.png | 3 + .../art/textures/ui/tips/forge_rome.png | 3 + .../art/textures/ui/tips/fortress_han.png | 3 + .../tips/{fortress.png => fortress_iber.png} | 0 .../art/textures/ui/tips/fortress_maur.png | 3 + .../public/art/textures/ui/tips/nomad.png | 3 + .../tips/{storehouse.png => storehouse_1.png} | 0 .../art/textures/ui/tips/storehouse_2.png | 3 + .../public/art/textures/ui/tips/temple.png | 3 - .../art/textures/ui/tips/temple_gaul.png | 3 + .../art/textures/ui/tips/temple_greek.png | 3 + .../art/textures/ui/tips/temple_pers.png | 3 + .../public/art/textures/ui/tips/theater.png | 4 +- .../art/textures/ui/tips/wonder_gaul.png | 3 + .../art/textures/ui/tips/wonder_han.png | 3 + .../mods/public/gui/credits/texts/art.json | 1 + .../public/gui/credits/texts/programming.json | 2 +- .../data/mods/public/gui/loading/loading.js | 3 +- .../mods/public/gui/pregame/MainMenuItems.js | 2 +- .../public/gui/reference/tips/TipsPage.js | 4 +- .../gui/reference/tips/sections/TipDisplay.js | 122 ++++-- .../reference/tips/sections/TipDisplay.xml | 14 +- .../public/gui/reference/tips/sprites.xml | 71 ++++ .../mods/public/gui/reference/tips/styles.xml | 23 ++ .../gui/reference/tips/texts/treasure.txt | 2 +- .../gui/reference/tips/texts/wonder.txt | 5 + .../public/gui/reference/tips/tipfiles.json | 364 ++++++++++++++++++ .../mods/public/gui/reference/tips/tips.js | 11 +- .../mods/public/gui/reference/tips/tips.xml | 2 +- source/tools/entity/checkrefs.py | 18 +- 34 files changed, 639 insertions(+), 58 deletions(-) create mode 100644 binaries/data/mods/public/art/textures/ui/tipdisplay/arrow.png delete mode 100644 binaries/data/mods/public/art/textures/ui/tips/forge.png create mode 100644 binaries/data/mods/public/art/textures/ui/tips/forge_iber.png create mode 100644 binaries/data/mods/public/art/textures/ui/tips/forge_maur.png create mode 100644 binaries/data/mods/public/art/textures/ui/tips/forge_rome.png create mode 100644 binaries/data/mods/public/art/textures/ui/tips/fortress_han.png rename binaries/data/mods/public/art/textures/ui/tips/{fortress.png => fortress_iber.png} (100%) create mode 100644 binaries/data/mods/public/art/textures/ui/tips/fortress_maur.png create mode 100644 binaries/data/mods/public/art/textures/ui/tips/nomad.png rename binaries/data/mods/public/art/textures/ui/tips/{storehouse.png => storehouse_1.png} (100%) create mode 100644 binaries/data/mods/public/art/textures/ui/tips/storehouse_2.png delete mode 100644 binaries/data/mods/public/art/textures/ui/tips/temple.png create mode 100644 binaries/data/mods/public/art/textures/ui/tips/temple_gaul.png create mode 100644 binaries/data/mods/public/art/textures/ui/tips/temple_greek.png create mode 100644 binaries/data/mods/public/art/textures/ui/tips/temple_pers.png create mode 100644 binaries/data/mods/public/art/textures/ui/tips/wonder_gaul.png create mode 100644 binaries/data/mods/public/art/textures/ui/tips/wonder_han.png create mode 100644 binaries/data/mods/public/gui/reference/tips/texts/wonder.txt create mode 100644 binaries/data/mods/public/gui/reference/tips/tipfiles.json diff --git a/binaries/data/mods/public/art/textures/ui/tipdisplay/arrow.png b/binaries/data/mods/public/art/textures/ui/tipdisplay/arrow.png new file mode 100644 index 0000000000..4f95a6eff1 --- /dev/null +++ b/binaries/data/mods/public/art/textures/ui/tipdisplay/arrow.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:cd80f8fbb416cf89330033fc8b99d8a36f4e192e07e728d892a38b3bb56889b2 +size 1596 diff --git a/binaries/data/mods/public/art/textures/ui/tips/briton_war_dog.png b/binaries/data/mods/public/art/textures/ui/tips/briton_war_dog.png index 83da91fe32..063a4f44ed 100644 --- a/binaries/data/mods/public/art/textures/ui/tips/briton_war_dog.png +++ b/binaries/data/mods/public/art/textures/ui/tips/briton_war_dog.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:d8d35bec52b327e6616c3604a0374c6a5421a411ae1f9c9d62bd61078afab2c7 -size 413825 +oid sha256:2780a4b1d089ea77912798930ef0d183094cc7d348d8787d100e70ce7c085030 +size 480924 diff --git a/binaries/data/mods/public/art/textures/ui/tips/forge.png b/binaries/data/mods/public/art/textures/ui/tips/forge.png deleted file mode 100644 index c28918d8f9..0000000000 --- a/binaries/data/mods/public/art/textures/ui/tips/forge.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:69c66869ac39f5f124fea4f830c84f0bc4b1a9b09e0d86ea0adc0473770844b8 -size 517303 diff --git a/binaries/data/mods/public/art/textures/ui/tips/forge_iber.png b/binaries/data/mods/public/art/textures/ui/tips/forge_iber.png new file mode 100644 index 0000000000..575667ef85 --- /dev/null +++ b/binaries/data/mods/public/art/textures/ui/tips/forge_iber.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1cc993d0288a5d0abf29236b08393b9c331d1bc4c2d1947f6a1347237df611c9 +size 550182 diff --git a/binaries/data/mods/public/art/textures/ui/tips/forge_maur.png b/binaries/data/mods/public/art/textures/ui/tips/forge_maur.png new file mode 100644 index 0000000000..dcd158c72b --- /dev/null +++ b/binaries/data/mods/public/art/textures/ui/tips/forge_maur.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:78f72ce32819ae863f2c498228380cf973d8dab9962bb25e37b79f49a38d20dc +size 469980 diff --git a/binaries/data/mods/public/art/textures/ui/tips/forge_rome.png b/binaries/data/mods/public/art/textures/ui/tips/forge_rome.png new file mode 100644 index 0000000000..18aefa7214 --- /dev/null +++ b/binaries/data/mods/public/art/textures/ui/tips/forge_rome.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:de2de12c31add95f3570ebb4b887bf920ce7f7c4efbfad572e6b8364720e82f9 +size 466687 diff --git a/binaries/data/mods/public/art/textures/ui/tips/fortress_han.png b/binaries/data/mods/public/art/textures/ui/tips/fortress_han.png new file mode 100644 index 0000000000..6ca1947bb2 --- /dev/null +++ b/binaries/data/mods/public/art/textures/ui/tips/fortress_han.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0f0587f5303a872f38977c844f0cd2533887c5da48e2b4808f728774e3c56285 +size 374279 diff --git a/binaries/data/mods/public/art/textures/ui/tips/fortress.png b/binaries/data/mods/public/art/textures/ui/tips/fortress_iber.png similarity index 100% rename from binaries/data/mods/public/art/textures/ui/tips/fortress.png rename to binaries/data/mods/public/art/textures/ui/tips/fortress_iber.png diff --git a/binaries/data/mods/public/art/textures/ui/tips/fortress_maur.png b/binaries/data/mods/public/art/textures/ui/tips/fortress_maur.png new file mode 100644 index 0000000000..c2af6684e3 --- /dev/null +++ b/binaries/data/mods/public/art/textures/ui/tips/fortress_maur.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b3b260c96a162b4d3ee988cd4f2efbdf62d902a60dafa2eb8be471df63e14ffd +size 436665 diff --git a/binaries/data/mods/public/art/textures/ui/tips/nomad.png b/binaries/data/mods/public/art/textures/ui/tips/nomad.png new file mode 100644 index 0000000000..6153c5e86d --- /dev/null +++ b/binaries/data/mods/public/art/textures/ui/tips/nomad.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:71d6f493ebe0ae1174dedca2853e085273085157ee2640a817402453804c108e +size 549108 diff --git a/binaries/data/mods/public/art/textures/ui/tips/storehouse.png b/binaries/data/mods/public/art/textures/ui/tips/storehouse_1.png similarity index 100% rename from binaries/data/mods/public/art/textures/ui/tips/storehouse.png rename to binaries/data/mods/public/art/textures/ui/tips/storehouse_1.png diff --git a/binaries/data/mods/public/art/textures/ui/tips/storehouse_2.png b/binaries/data/mods/public/art/textures/ui/tips/storehouse_2.png new file mode 100644 index 0000000000..640edafaf7 --- /dev/null +++ b/binaries/data/mods/public/art/textures/ui/tips/storehouse_2.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:eb1a15d43c9d73f1acd14de07b550ea2bda8545100ee61f625f8b38830b0f2a0 +size 502623 diff --git a/binaries/data/mods/public/art/textures/ui/tips/temple.png b/binaries/data/mods/public/art/textures/ui/tips/temple.png deleted file mode 100644 index c39f840d13..0000000000 --- a/binaries/data/mods/public/art/textures/ui/tips/temple.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:758ea5f1c0f85fd58e1e99cf71dc9efed092f9163511e6c5aeed76f9ec1c476a -size 511577 diff --git a/binaries/data/mods/public/art/textures/ui/tips/temple_gaul.png b/binaries/data/mods/public/art/textures/ui/tips/temple_gaul.png new file mode 100644 index 0000000000..4e33ac4855 --- /dev/null +++ b/binaries/data/mods/public/art/textures/ui/tips/temple_gaul.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1443e8f68e24c5c9a6edfe74a20e32b942b9fe676e292279f54dae877c5164ae +size 479957 diff --git a/binaries/data/mods/public/art/textures/ui/tips/temple_greek.png b/binaries/data/mods/public/art/textures/ui/tips/temple_greek.png new file mode 100644 index 0000000000..bdf9f97bb3 --- /dev/null +++ b/binaries/data/mods/public/art/textures/ui/tips/temple_greek.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3f9f954feb9a6330a22c019b7100d6d22af307da4a0300285595bc77d6181e75 +size 525437 diff --git a/binaries/data/mods/public/art/textures/ui/tips/temple_pers.png b/binaries/data/mods/public/art/textures/ui/tips/temple_pers.png new file mode 100644 index 0000000000..b66bb101b9 --- /dev/null +++ b/binaries/data/mods/public/art/textures/ui/tips/temple_pers.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:aecff65f487f55815b3017b2512e58cc93aba3d3c5d81ca5771a96be686c1dfd +size 476475 diff --git a/binaries/data/mods/public/art/textures/ui/tips/theater.png b/binaries/data/mods/public/art/textures/ui/tips/theater.png index 15e36a6ca8..2cda7c2f32 100644 --- a/binaries/data/mods/public/art/textures/ui/tips/theater.png +++ b/binaries/data/mods/public/art/textures/ui/tips/theater.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:cee6ea8fd639ec4628cebb0c5ef6044a451e35ad6e63dc11b2a060d94c3d988a -size 505920 +oid sha256:d5fec420dfaa0693dc93187f173e7a53680d564445dcef8375d310389e7b2a74 +size 516779 diff --git a/binaries/data/mods/public/art/textures/ui/tips/wonder_gaul.png b/binaries/data/mods/public/art/textures/ui/tips/wonder_gaul.png new file mode 100644 index 0000000000..3cac12d276 --- /dev/null +++ b/binaries/data/mods/public/art/textures/ui/tips/wonder_gaul.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9289a34996a452e538a4c5d26ad3c6727a062027683dcdf85bc04372d39e7758 +size 490746 diff --git a/binaries/data/mods/public/art/textures/ui/tips/wonder_han.png b/binaries/data/mods/public/art/textures/ui/tips/wonder_han.png new file mode 100644 index 0000000000..0fd38470fa --- /dev/null +++ b/binaries/data/mods/public/art/textures/ui/tips/wonder_han.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:98dba1a205e9b519049fe643770eb3a14c6098a73d9b22de6f2059d582944e8b +size 407700 diff --git a/binaries/data/mods/public/gui/credits/texts/art.json b/binaries/data/mods/public/gui/credits/texts/art.json index 30fe55fc83..5ec48d9502 100644 --- a/binaries/data/mods/public/gui/credits/texts/art.json +++ b/binaries/data/mods/public/gui/credits/texts/art.json @@ -58,6 +58,7 @@ { "nick": "Sundiata", "name": "Malcolm Kwadwo Kwarte Quartey" }, { "nick": "ThorRune" }, { "name": "Tsaag Valren" }, + { "nick": "Vantha" }, { "name": "Veronica L. Almy Wright" }, { "nick": "Victor Rossi", "name": "Victor Rossi" }, { "nick": "wackyserious", "name": "Arjel Kenneth Abulog" }, diff --git a/binaries/data/mods/public/gui/credits/texts/programming.json b/binaries/data/mods/public/gui/credits/texts/programming.json index 8f2907c16a..5a5c264256 100644 --- a/binaries/data/mods/public/gui/credits/texts/programming.json +++ b/binaries/data/mods/public/gui/credits/texts/programming.json @@ -297,7 +297,7 @@ { "nick": "tpearson", "name": "Timothy Pearson" }, { "nick": "user1", "name": "A. C." }, { "nick": "usey11" }, - { "nick": "Vantha"}, + { "nick": "Vantha" }, { "nick": "vincent_c", "name": "Vincent Cheng" }, { "nick": "vinhig", "name": "Vincent Higginson" }, { "nick": "vladislavbelov", "name": "Vladislav Belov" }, diff --git a/binaries/data/mods/public/gui/loading/loading.js b/binaries/data/mods/public/gui/loading/loading.js index 3cca5df849..ff4b8ee79c 100644 --- a/binaries/data/mods/public/gui/loading/loading.js +++ b/binaries/data/mods/public/gui/loading/loading.js @@ -6,8 +6,7 @@ function init(data) "initData": data, "progressBar": new ProgressBar(), "quoteDisplay": new QuoteDisplay(), - // Note that the construction parameter is set to false to disable tip scrolling. - "tipDisplay": new TipDisplay(false), + "tipDisplay": new TipDisplay({ "tipScrolling": false }), "titleDisplay": new TitleDisplay(data) }; diff --git a/binaries/data/mods/public/gui/pregame/MainMenuItems.js b/binaries/data/mods/public/gui/pregame/MainMenuItems.js index 058aa4e371..4248c22d94 100644 --- a/binaries/data/mods/public/gui/pregame/MainMenuItems.js +++ b/binaries/data/mods/public/gui/pregame/MainMenuItems.js @@ -36,7 +36,7 @@ var g_MainMenuItems = [ "caption": translate("Tips and Tricks"), "tooltip": translate("Discover simple tips, tricks, and game mechanics."), "onPress": () => { - Engine.PushGuiPage("page_tips.xml"); + Engine.PushGuiPage("page_tips.xml", { "tipScrolling": true }); } }, { diff --git a/binaries/data/mods/public/gui/reference/tips/TipsPage.js b/binaries/data/mods/public/gui/reference/tips/TipsPage.js index eaa5a8a757..119f9f4c12 100644 --- a/binaries/data/mods/public/gui/reference/tips/TipsPage.js +++ b/binaries/data/mods/public/gui/reference/tips/TipsPage.js @@ -1,8 +1,8 @@ class TipsPage { - constructor() + constructor(initData, hotloadData) { - this.tipDisplay = new TipDisplay(); + this.tipDisplay = new TipDisplay(initData, hotloadData); this.closeButton = new CloseButton(this); } diff --git a/binaries/data/mods/public/gui/reference/tips/sections/TipDisplay.js b/binaries/data/mods/public/gui/reference/tips/sections/TipDisplay.js index 5f54e29be6..8cbfb06e9f 100644 --- a/binaries/data/mods/public/gui/reference/tips/sections/TipDisplay.js +++ b/binaries/data/mods/public/gui/reference/tips/sections/TipDisplay.js @@ -1,65 +1,96 @@ /** * This class is concerned with chosing and displaying tips about how to play the game. - * This includes a text and an image. + * This includes a text and one or more images. */ class TipDisplay { /** - * @param {boolean} tipScrolling - Whether or not to enable the player to scroll through the tips. + * @param {boolean} initData.tipScrolling - Whether or not to enable the player to scroll through the tips and the tip images. + * @param {Array|undefined} hotloadData.tipFilesData - Hotloaded value storing last time's tipFilesData. + * @param {number|undefined} hotloadData.tipIndex - Hotloaded value pointing to a specific tip. + * @param {number|undefined} hotloadData.tipImageIndex - Hotloaded value pointing to a specific tip image. */ - constructor(tipScrolling = true) + constructor(initData, hotloadData) { this.tipImage = Engine.GetGUIObjectByName("tipImage"); this.tipTitle = Engine.GetGUIObjectByName("tipTitle"); this.tipTitleDecoration = Engine.GetGUIObjectByName("tipTitleDecoration"); this.tipText = Engine.GetGUIObjectByName("tipText"); + this.tipImageText = Engine.GetGUIObjectByName("tipImageText"); this.previousTipButton = Engine.GetGUIObjectByName("previousTipButton"); + this.imageControlPanel = Engine.GetGUIObjectByName("imageControlPanel"); this.nextTipButton = Engine.GetGUIObjectByName("nextTipButton"); + this.previousImageButton = Engine.GetGUIObjectByName("previousImageButton"); + this.nextImageButton = Engine.GetGUIObjectByName("nextImageButton"); this.previousTipButton.caption = this.CaptionPreviousTip; - this.previousTipButton.tooltip = colorizeHotkey("%(hotkey)s: ", "item.prev") + this.TooltipPreviousTip; - this.nextTipButton.caption = this.CaptionNextTip; + + this.previousTipButton.tooltip = colorizeHotkey("%(hotkey)s: ", "item.prev") + this.TooltipPreviousTip; this.nextTipButton.tooltip = colorizeHotkey("%(hotkey)s: ", "item.next") + this.TooltipNextTip; + this.previousImageButton.tooltip = this.TooltipPreviousImage; + this.nextImageButton.tooltip = this.TooltipNextImage; - this.tipFiles = shuffleArray(listFiles(this.TextPath, ".txt", false)); - if (this.tipFiles.length === 0) - { - warn("Failed to find any tips to display."); - return; - } + this.tipFilesData = + hotloadData?.tipFilesData || + shuffleArray( + Engine.ReadJSONFile(this.TipFilesDataFile) + ).map(tip => { + tip.imageFiles = shuffleArray(tip.imageFiles); + return tip; + }); - const hideButtons = !tipScrolling || this.tipFiles.length < 2; + this.currentTip = {}; + this.tipIndex = -1; + this.tipImageIndex = -1; + + this.enableTipScrolling = initData.tipScrolling; + const hideButtons = !initData.tipScrolling || this.tipFilesData.length < 2; this.previousTipButton.hidden = hideButtons; this.nextTipButton.hidden = hideButtons; - this.tipFilesIndex = -1; - this.nextTipButton.onPress = () => this.onIndexChange(1); - this.previousTipButton.onPress = () => this.onIndexChange(-1); - this.onIndexChange(1); + + this.previousTipButton.onPress = () => this.onTipIndexChange(-1); + this.nextTipButton.onPress = () => this.onTipIndexChange(1); + this.previousImageButton.onPress = () => this.onTipImageIndexChange(-1); + this.nextImageButton.onPress = () => this.onTipImageIndexChange(1); + + this.onTipIndexChange(hotloadData?.tipIndex ? hotloadData.tipIndex + 1 : 1); + if (hotloadData?.tipImageIndex) + this.onTipImageIndexChange(hotloadData.tipImageIndex + 1); } - onIndexChange(number) + getHotloadData() { - this.tipFilesIndex += number; - - this.tipFilesIndex = Math.max(0, Math.min(this.tipFilesIndex, this.tipFiles.length - 1)); - - this.displayTip(this.tipFiles[this.tipFilesIndex]); - this.rebuildButtons(); + return { + "tipFilesData": this.tipFilesData, + "tipIndex": this.tipIndex, + "tipImageIndex": this.tipImageIndex + }; } - rebuildButtons() + onTipIndexChange(number) { - this.previousTipButton.enabled = this.tipFilesIndex !== 0 && !this.previousTipButton.hidden; - this.nextTipButton.enabled = this.tipFilesIndex < this.tipFiles.length - 1 && !this.nextTipButton.hidden; + this.tipIndex += number; + this.tipIndex = Math.max(0, Math.min(this.tipIndex, this.tipFilesData.length - 1)); + this.currentTip = this.tipFilesData[this.tipIndex]; + + this.updateTipText(); + this.rebuildTipButtons(); + this.onTipImageIndexChange(-this.tipImageIndex); } - displayTip(tipFile) + onTipImageIndexChange(number) { - this.tipImage.sprite = "stretched:" + this.ImagePath + tipFile + ".png"; + this.tipImageIndex += number; + this.tipImageIndex = Math.max(0, Math.min(this.tipImageIndex, this.currentTip.imageFiles.length - 1)); - const tipText = Engine.TranslateLines(Engine.ReadFile( - this.TextPath + tipFile + ".txt")).split("\n"); + this.updateTipImage(); + this.rebuildTipImageButtons(); + } + + updateTipText() + { + const tipText = Engine.TranslateLines(Engine.ReadFile(this.TextPath + this.currentTip.textFile)).split("\n"); this.tipTitle.caption = tipText.shift(); this.scaleGuiElementsToFit(); @@ -67,6 +98,27 @@ class TipDisplay text && "[icon=\"BulletPoint\"] " + text).join("\n\n"); } + updateTipImage() + { + this.tipImage.sprite = "stretched:" + this.ImagePath + this.currentTip.imageFiles[this.tipImageIndex]; + this.imageControlPanel.hidden = !this.enableTipScrolling || this.currentTip.imageFiles.length === 1; + + if (!this.imageControlPanel.hidden) + this.tipImageText.caption = (this.tipImageIndex + 1) + " / " + this.currentTip.imageFiles.length; + } + + rebuildTipButtons() + { + this.previousTipButton.enabled = !this.previousTipButton.hidden && this.tipIndex !== 0; + this.nextTipButton.enabled = !this.nextTipButton.hidden && this.tipIndex < this.tipFilesData.length - 1; + } + + rebuildTipImageButtons() + { + this.previousImageButton.enabled = this.tipImageIndex > 0; + this.nextImageButton.enabled = this.tipImageIndex < this.currentTip.imageFiles.length - 1; + } + scaleGuiElementsToFit() { const titleSize = this.tipTitle.size; @@ -92,12 +144,20 @@ TipDisplay.prototype.TooltipPreviousTip = translate("Switch to the previous tip. TipDisplay.prototype.CaptionNextTip = translateWithContext("button", "Next"); TipDisplay.prototype.TooltipNextTip = translate("Switch to the next tip."); +TipDisplay.prototype.TooltipPreviousImage = translate("Switch to the previous image."); +TipDisplay.prototype.TooltipNextImage = translate("Switch to the next image."); + +/** + * JSON file assigning one or more tip image files (.png) to each tip text file (.txt). + */ +TipDisplay.prototype.TipFilesDataFile = "gui/reference/tips/tipfiles.json"; + /** * Directory storing .txt files containing the gameplay tips. */ TipDisplay.prototype.TextPath = "gui/reference/tips/texts/"; /** - * Directory storing the .png images with filenames corresponding to the tip text files. + * Subdirectory of art/textures/ui storing the .png images illustrating the tips. */ TipDisplay.prototype.ImagePath = "tips/"; diff --git a/binaries/data/mods/public/gui/reference/tips/sections/TipDisplay.xml b/binaries/data/mods/public/gui/reference/tips/sections/TipDisplay.xml index 1fb47d1876..6c315dd8f5 100644 --- a/binaries/data/mods/public/gui/reference/tips/sections/TipDisplay.xml +++ b/binaries/data/mods/public/gui/reference/tips/sections/TipDisplay.xml @@ -1,11 +1,15 @@