From 574c8996f79b09e2d7fb498c06fd3fc2e6645ed4 Mon Sep 17 00:00:00 2001 From: Retera Date: Sun, 11 Apr 2021 16:27:33 -0400 Subject: [PATCH] Update menu to support Reforged --- .../etheller/warsmash/parsers/fdf/GameUI.java | 4 +++ .../viewer5/handlers/w3x/ui/MenuUI.java | 25 +++++++++++++------ .../handlers/w3x/ui/menu/CampaignMenuUI.java | 4 +-- 3 files changed, 23 insertions(+), 10 deletions(-) diff --git a/core/src/com/etheller/warsmash/parsers/fdf/GameUI.java b/core/src/com/etheller/warsmash/parsers/fdf/GameUI.java index dd5fd4c..f42926b 100644 --- a/core/src/com/etheller/warsmash/parsers/fdf/GameUI.java +++ b/core/src/com/etheller/warsmash/parsers/fdf/GameUI.java @@ -221,6 +221,10 @@ public final class GameUI extends AbstractUIFrame implements UIFrame { } } + public boolean hasSkinField(String file) { + return (file != null) && this.skin.hasField(file); + } + public String getSkinField(String file) { if ((file != null) && this.skin.hasField(file)) { file = this.skin.getField(file); diff --git a/core/src/com/etheller/warsmash/viewer5/handlers/w3x/ui/MenuUI.java b/core/src/com/etheller/warsmash/viewer5/handlers/w3x/ui/MenuUI.java index 32308c8..6854971 100644 --- a/core/src/com/etheller/warsmash/viewer5/handlers/w3x/ui/MenuUI.java +++ b/core/src/com/etheller/warsmash/viewer5/handlers/w3x/ui/MenuUI.java @@ -149,6 +149,7 @@ public class MenuUI { private String mapFilepathToStart; private LoadingMap loadingMap; private SpriteFrame loadingBackground; + private boolean unifiedCampaignInfo = false; public MenuUI(final DataSource dataSource, final Viewport uiViewport, final Scene uiScene, final MdxViewer viewer, final WarsmashGdxMultiScreenGame screenManager, final SingleModelScreen menuScreen, @@ -179,6 +180,7 @@ public class MenuUI { else { try (InputStream campaignStringStream = dataSource.getResourceAsStream("UI\\CampaignInfoClassic.txt")) { this.campaignStrings.readTXT(campaignStringStream, true); + unifiedCampaignInfo = true; } catch (final IOException e) { throw new RuntimeException(e); @@ -593,8 +595,8 @@ public class MenuUI { MenuUI.this.missionSelectFrame.setVisible(true); MenuUI.this.menuState = MenuState.MISSION_SELECT; } - MenuUI.this.rootFrame.setText(missionName, campaign.getName()); - MenuUI.this.rootFrame.setText(missionNameHeader, campaign.getHeader()); + MenuUI.this.rootFrame.setDecoratedText(missionName, campaign.getName()); + MenuUI.this.rootFrame.setDecoratedText(missionNameHeader, campaign.getHeader()); } }); if (campaign == MenuUI.this.currentCampaign) { @@ -843,8 +845,7 @@ public class MenuUI { this.menuState = MenuState.GOING_TO_CAMPAIGN_PART2; break; case GOING_TO_CAMPAIGN_PART2: { - final String currentCampaignBackgroundModel = this.rootFrame - .getSkinField(this.currentCampaign.getBackground() + "_V" + WarsmashConstants.GAME_VERSION); + final String currentCampaignBackgroundModel = getCurrentBackgroundModel(); final String currentCampaignAmbientSound = this.rootFrame .trySkinField(this.currentCampaign.getAmbientSound()); this.menuScreen.setModel(currentCampaignBackgroundModel); @@ -867,8 +868,7 @@ public class MenuUI { this.campaignRootMenuUI.setVisible(true); break; case GOING_TO_MISSION_SELECT: { - final String currentCampaignBackgroundModel = this.rootFrame - .getSkinField(this.currentCampaign.getBackground() + "_V" + WarsmashConstants.GAME_VERSION); + final String currentCampaignBackgroundModel = getCurrentBackgroundModel(); final String currentCampaignAmbientSound = this.rootFrame .trySkinField(this.currentCampaign.getAmbientSound()); this.menuScreen.setModel(currentCampaignBackgroundModel); @@ -1087,8 +1087,7 @@ public class MenuUI { break; case CAMPAIGN: case MISSION_SELECT: - final String currentCampaignBackgroundModel = this.rootFrame - .getSkinField(this.currentCampaign.getBackground() + "_V" + WarsmashConstants.GAME_VERSION); + final String currentCampaignBackgroundModel = getCurrentBackgroundModel(); final String currentCampaignAmbientSound = this.rootFrame .trySkinField(this.currentCampaign.getAmbientSound()); this.menuScreen.setModel(currentCampaignBackgroundModel); @@ -1105,6 +1104,16 @@ public class MenuUI { // this.menuState = MenuState.MISSION_SELECT; } + private String getCurrentBackgroundModel() { + String background = this.currentCampaign.getBackground(); + String versionedBackground = background + "_V" + WarsmashConstants.GAME_VERSION; + if(this.rootFrame.hasSkinField(versionedBackground)) { + return this.rootFrame.getSkinField(versionedBackground); + } + return this.rootFrame + .getSkinField(background ); + } + private static final class LoadingMap { private final War3MapViewer viewer; diff --git a/core/src/com/etheller/warsmash/viewer5/handlers/w3x/ui/menu/CampaignMenuUI.java b/core/src/com/etheller/warsmash/viewer5/handlers/w3x/ui/menu/CampaignMenuUI.java index 8aeee26..a669eb6 100644 --- a/core/src/com/etheller/warsmash/viewer5/handlers/w3x/ui/menu/CampaignMenuUI.java +++ b/core/src/com/etheller/warsmash/viewer5/handlers/w3x/ui/menu/CampaignMenuUI.java @@ -34,11 +34,11 @@ public class CampaignMenuUI extends SimpleFrame { final StringFrame headerText = (StringFrame) this.rootFrame.createFrame("StandardSmallTextTemplate", campaignButtonUI, 0, 0); - this.rootFrame.setText(headerText, header); + this.rootFrame.setDecoratedText(headerText, header); campaignButtonUI.add(headerText); final StringFrame nameText = (StringFrame) this.rootFrame.createFrame("StandardValueTextTemplate", campaignButtonUI, 0, 0); - this.rootFrame.setText(nameText, name); + this.rootFrame.setDecoratedText(nameText, name); headerText.addSetPoint(new SetPoint(FramePoint.TOPLEFT, campaignArrowButton, FramePoint.TOPRIGHT, 0, 0)); nameText.addSetPoint(new SetPoint(FramePoint.TOPLEFT, headerText, FramePoint.BOTTOMLEFT, 0, 0)); campaignButtonUI.add(nameText);