Merge branch 'master' into 'master'

[Adventure] prevent NPE when the user tries to save without selecting saveslot

See merge request core-developers/forge!6330
This commit is contained in:
Anthony Calosa
2022-03-02 22:35:05 +00:00

View File

@@ -40,7 +40,7 @@ public class SaveLoadScene extends UIScene {
Dialog dialog; Dialog dialog;
TextField textInput; TextField textInput;
Label header; Label header;
int currentSlot = -3; int currentSlot = -3, lastSelectedSlot = 0;
Image previewImage; Image previewImage;
Image previewBorder; Image previewBorder;
TextButton saveLoadButton, back; TextButton saveLoadButton, back;
@@ -79,7 +79,8 @@ public class SaveLoadScene extends UIScene {
public boolean select(int slot) { public boolean select(int slot) {
currentSlot = slot; currentSlot = slot;
if (slot > 0)
lastSelectedSlot = slot;
if (previews.containsKey(slot)) { if (previews.containsKey(slot)) {
WorldSaveHeader header = previews.get(slot); WorldSaveHeader header = previews.get(slot);
if (header.preview != null) { if (header.preview != null) {
@@ -104,9 +105,12 @@ public class SaveLoadScene extends UIScene {
public void loadSave() { public void loadSave() {
if (save) { if (save) {
textInput.setText(buttons.get(currentSlot).getText().toString()); if (currentSlot > 0) {
dialog.show(stage); //prevent NPE, allowed saveslot is 1 to 10..
stage.setKeyboardFocus(textInput); textInput.setText(buttons.get(currentSlot).getText().toString());
dialog.show(stage);
stage.setKeyboardFocus(textInput);
}
} else { } else {
if (WorldSave.load(currentSlot)) { if (WorldSave.load(currentSlot)) {
Forge.setTransitionScreen(new TransitionScreen(new Runnable() { Forge.setTransitionScreen(new TransitionScreen(new Runnable() {
@@ -193,7 +197,10 @@ public class SaveLoadScene extends UIScene {
@Override @Override
public void enter() { public void enter() {
select(-3); if (lastSelectedSlot > 0)
select(lastSelectedSlot);
else
select(-3);
updateFiles(); updateFiles();
super.enter(); super.enter();
} }
@@ -283,8 +290,9 @@ public class SaveLoadScene extends UIScene {
scrollPane.setWidth(sW); scrollPane.setWidth(sW);
scrollPane.setHeight(sH*11); scrollPane.setHeight(sH*11);
scrollPane.setX(oX); scrollPane.setX(oX);
previewImage.setScaleX(1.5f); previewImage.setScale(1, 1.2f);
previewImage.setScaleY(0.9f); previewImage.setX(scrollPane.getRight()-105);
previewImage.setY(scrollPane.getTop()-71);
float bW = w - 165; float bW = w - 165;
float bX = w/2 - bW/2; float bX = w/2 - bW/2;
back.setWidth(bW/2); back.setWidth(bW/2);