mirror of
https://github.com/ViaVersion/ViaFabricPlus.git
synced 2024-11-16 10:55:39 +01:00
Rewrite subtitle system to support dynamic subtitle changes
This commit is contained in:
parent
1c206b83e0
commit
27f8156c47
@ -57,11 +57,10 @@ public class VFPScreen extends Screen {
|
|||||||
this.backButton = backButton;
|
this.backButton = backButton;
|
||||||
}
|
}
|
||||||
|
|
||||||
/***
|
/**
|
||||||
* Sets the subtitle and the subtitle press action to the default values
|
* Sets the subtitle and the subtitle press action to the default values
|
||||||
* The default value of the subtitle is the url to the GitHub repository of VFP
|
* The default value of the subtitle is the url to the GitHub repository of VFP
|
||||||
* The default value of the subtitle press action is to open the url in a confirmation screen
|
* The default value of the subtitle press action is to open the url in a confirmation screen
|
||||||
*
|
|
||||||
*/
|
*/
|
||||||
public void setupDefaultSubtitle() {
|
public void setupDefaultSubtitle() {
|
||||||
this.setupUrlSubtitle(MOD_URL);
|
this.setupUrlSubtitle(MOD_URL);
|
||||||
@ -77,7 +76,7 @@ public class VFPScreen extends Screen {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/***
|
/**
|
||||||
* Sets the subtitle and the subtitle press action
|
* Sets the subtitle and the subtitle press action
|
||||||
*
|
*
|
||||||
* @param subtitle The subtitle which should be rendered
|
* @param subtitle The subtitle which should be rendered
|
||||||
@ -86,7 +85,7 @@ public class VFPScreen extends Screen {
|
|||||||
this.setupSubtitle(subtitle, null);
|
this.setupSubtitle(subtitle, null);
|
||||||
}
|
}
|
||||||
|
|
||||||
/***
|
/**
|
||||||
* Sets the subtitle and the subtitle press action
|
* Sets the subtitle and the subtitle press action
|
||||||
*
|
*
|
||||||
* @param subtitle The subtitle which should be rendered
|
* @param subtitle The subtitle which should be rendered
|
||||||
@ -96,10 +95,14 @@ public class VFPScreen extends Screen {
|
|||||||
this.subtitle = subtitle;
|
this.subtitle = subtitle;
|
||||||
this.subtitlePressAction = subtitlePressAction;
|
this.subtitlePressAction = subtitlePressAction;
|
||||||
|
|
||||||
if (subtitleWidget != null && subtitlePressAction == null) { // Allows to remove the subtitle when calling this method twice.
|
if (subtitleWidget != null) { // Allows to remove the subtitle when calling this method twice.
|
||||||
remove(subtitleWidget);
|
remove(subtitleWidget);
|
||||||
subtitleWidget = null;
|
subtitleWidget = null;
|
||||||
}
|
}
|
||||||
|
if (subtitlePressAction != null) {
|
||||||
|
final int subtitleWidth = textRenderer.getWidth(subtitle);
|
||||||
|
this.addDrawableChild(subtitleWidget = new PressableTextWidget(width / 2 - (subtitleWidth / 2), (textRenderer.fontHeight + 2) * 2 + 3, subtitleWidth, textRenderer.fontHeight + 2, subtitle, subtitlePressAction, textRenderer));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -118,11 +121,6 @@ public class VFPScreen extends Screen {
|
|||||||
if (backButton) {
|
if (backButton) {
|
||||||
this.addDrawableChild(ButtonWidget.builder(Text.literal("<-"), button -> this.close()).position(5, 5).size(20, 20).build());
|
this.addDrawableChild(ButtonWidget.builder(Text.literal("<-"), button -> this.close()).position(5, 5).size(20, 20).build());
|
||||||
}
|
}
|
||||||
|
|
||||||
if (this.subtitle != null && this.subtitlePressAction != null) {
|
|
||||||
final int subtitleWidth = textRenderer.getWidth(subtitle);
|
|
||||||
this.addDrawableChild(subtitleWidget = new PressableTextWidget(width / 2 - (subtitleWidth / 2), (textRenderer.fontHeight + 2) * 2 + 3, subtitleWidth, textRenderer.fontHeight + 2, subtitle, subtitlePressAction, textRenderer));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -48,11 +48,11 @@ public class BetaCraftScreen extends VFPScreen {
|
|||||||
|
|
||||||
protected BetaCraftScreen() {
|
protected BetaCraftScreen() {
|
||||||
super("BetaCraft", true);
|
super("BetaCraft", true);
|
||||||
this.setupSubtitle(Text.of(BETA_CRAFT_SERVER_LIST_URL), ConfirmLinkScreen.opening(this, BETA_CRAFT_SERVER_LIST_URL));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void init() {
|
protected void init() {
|
||||||
|
this.setupSubtitle(Text.of(BETA_CRAFT_SERVER_LIST_URL), ConfirmLinkScreen.opening(this, BETA_CRAFT_SERVER_LIST_URL));
|
||||||
this.addDrawableChild(new SlotList(this.client, width, height, 3 + 3 /* start offset */ + (textRenderer.fontHeight + 2) * 3 /* title is 2 */, -5, (textRenderer.fontHeight + 2) * 3));
|
this.addDrawableChild(new SlotList(this.client, width, height, 3 + 3 /* start offset */ + (textRenderer.fontHeight + 2) * 3 /* title is 2 */, -5, (textRenderer.fontHeight + 2) * 3));
|
||||||
|
|
||||||
this.addDrawableChild(ButtonWidget.builder(Text.translatable("base.viafabricplus.reset"), button -> {
|
this.addDrawableChild(ButtonWidget.builder(Text.translatable("base.viafabricplus.reset"), button -> {
|
||||||
|
@ -42,18 +42,13 @@ public class ClassiCubeLoginScreen extends VFPScreen {
|
|||||||
super("ClassiCube Login", true);
|
super("ClassiCube Login", true);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public void open(Screen prevScreen) {
|
|
||||||
this.setupSubtitle(Text.translatable("classicube.viafabricplus.account"), ConfirmLinkScreen.opening(this, ClassiCubeHandler.CLASSICUBE_ROOT_URI.toString()));
|
|
||||||
super.open(prevScreen);
|
|
||||||
}
|
|
||||||
|
|
||||||
private TextFieldWidget nameField;
|
private TextFieldWidget nameField;
|
||||||
private TextFieldWidget passwordField;
|
private TextFieldWidget passwordField;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void init() {
|
protected void init() {
|
||||||
super.init();
|
super.init();
|
||||||
|
this.setupSubtitle(Text.translatable("classicube.viafabricplus.account"), ConfirmLinkScreen.opening(this, ClassiCubeHandler.CLASSICUBE_ROOT_URI.toString()));
|
||||||
|
|
||||||
this.addDrawableChild(nameField = new TextFieldWidget(textRenderer, width / 2 - 150, 70 + 10, 300, 20, Text.empty()));
|
this.addDrawableChild(nameField = new TextFieldWidget(textRenderer, width / 2 - 150, 70 + 10, 300, 20, Text.empty()));
|
||||||
this.addDrawableChild(passwordField = new TextFieldWidget(textRenderer, width / 2 - 150, nameField.getY() + 20 + 5, 300, 20, Text.empty()));
|
this.addDrawableChild(passwordField = new TextFieldWidget(textRenderer, width / 2 - 150, nameField.getY() + 20 + 5, 300, 20, Text.empty()));
|
||||||
|
@ -40,17 +40,12 @@ public class ClassiCubeMFAScreen extends VFPScreen {
|
|||||||
super("ClassiCube MFA", false);
|
super("ClassiCube MFA", false);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public void open(Screen prevScreen) {
|
|
||||||
this.setupSubtitle(Text.translatable("classic4j_library.viafabricplus.error.logincode"));
|
|
||||||
super.open(prevScreen);
|
|
||||||
}
|
|
||||||
|
|
||||||
private TextFieldWidget mfaField;
|
private TextFieldWidget mfaField;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void init() {
|
protected void init() {
|
||||||
super.init();
|
super.init();
|
||||||
|
this.setupSubtitle(Text.translatable("classic4j_library.viafabricplus.error.logincode"));
|
||||||
|
|
||||||
this.addDrawableChild(mfaField = new TextFieldWidget(textRenderer, width / 2 - 150, 70 + 10, 300, 20, Text.empty()));
|
this.addDrawableChild(mfaField = new TextFieldWidget(textRenderer, width / 2 - 150, 70 + 10, 300, 20, Text.empty()));
|
||||||
|
|
||||||
|
@ -64,15 +64,15 @@ public class ClassiCubeServerListScreen extends VFPScreen {
|
|||||||
|
|
||||||
public ClassiCubeServerListScreen() {
|
public ClassiCubeServerListScreen() {
|
||||||
super("ClassiCube", true);
|
super("ClassiCube", true);
|
||||||
|
|
||||||
final var account = ViaFabricPlus.global().getSaveManager().getAccountsSave().getClassicubeAccount();
|
|
||||||
if (account != null) {
|
|
||||||
this.setupUrlSubtitle(CLASSICUBE_SERVER_LIST_URL);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void init() {
|
protected void init() {
|
||||||
|
final var account = ViaFabricPlus.global().getSaveManager().getAccountsSave().getClassicubeAccount();
|
||||||
|
if (account != null) {
|
||||||
|
this.setupUrlSubtitle(CLASSICUBE_SERVER_LIST_URL);
|
||||||
|
}
|
||||||
|
|
||||||
this.addDrawableChild(new SlotList(this.client, width, height, 3 + 3 /* start offset */ + (textRenderer.fontHeight + 2) * 3 /* title is 2 */, -5, (textRenderer.fontHeight + 4) * 3));
|
this.addDrawableChild(new SlotList(this.client, width, height, 3 + 3 /* start offset */ + (textRenderer.fontHeight + 2) * 3 /* title is 2 */, -5, (textRenderer.fontHeight + 4) * 3));
|
||||||
|
|
||||||
this.addDrawableChild(ButtonWidget.builder(Text.translatable("base.viafabricplus.logout"), button -> {
|
this.addDrawableChild(ButtonWidget.builder(Text.translatable("base.viafabricplus.logout"), button -> {
|
||||||
|
@ -34,11 +34,11 @@ public class SettingsScreen extends VFPScreen {
|
|||||||
|
|
||||||
public SettingsScreen() {
|
public SettingsScreen() {
|
||||||
super("Setting", true);
|
super("Setting", true);
|
||||||
this.setupDefaultSubtitle();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void init() {
|
protected void init() {
|
||||||
|
this.setupDefaultSubtitle();
|
||||||
this.addDrawableChild(new SlotList(this.client, width, height, 3 + 3 /* start offset */ + (textRenderer.fontHeight + 2) * 3 /* title is 2 */, -5, (textRenderer.fontHeight + 2) * 2));
|
this.addDrawableChild(new SlotList(this.client, width, height, 3 + 3 /* start offset */ + (textRenderer.fontHeight + 2) * 3 /* title is 2 */, -5, (textRenderer.fontHeight + 2) * 2));
|
||||||
|
|
||||||
super.init();
|
super.init();
|
||||||
|
Loading…
Reference in New Issue
Block a user