Update menu to support Reforged

This commit is contained in:
Retera 2021-04-11 16:27:33 -04:00
parent 9fa895dde2
commit 574c8996f7
3 changed files with 23 additions and 10 deletions

View File

@ -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);

View File

@ -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;

View File

@ -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);