Merge branch 'adventure' into 'master'

added new game+

See merge request core-developers/forge!6506
This commit is contained in:
Michael Kamensky
2022-04-09 04:07:38 +00:00
5 changed files with 92 additions and 48 deletions

View File

@@ -4,13 +4,7 @@ import com.badlogic.gdx.Input;
import com.badlogic.gdx.graphics.Color;
import com.badlogic.gdx.graphics.Texture;
import com.badlogic.gdx.scenes.scene2d.InputEvent;
import com.badlogic.gdx.scenes.scene2d.ui.Dialog;
import com.badlogic.gdx.scenes.scene2d.ui.Image;
import com.badlogic.gdx.scenes.scene2d.ui.Label;
import com.badlogic.gdx.scenes.scene2d.ui.ScrollPane;
import com.badlogic.gdx.scenes.scene2d.ui.Table;
import com.badlogic.gdx.scenes.scene2d.ui.TextButton;
import com.badlogic.gdx.scenes.scene2d.ui.TextField;
import com.badlogic.gdx.scenes.scene2d.ui.*;
import com.badlogic.gdx.scenes.scene2d.utils.ClickListener;
import com.badlogic.gdx.scenes.scene2d.utils.TextureRegionDrawable;
import com.badlogic.gdx.utils.Align;
@@ -18,6 +12,7 @@ import com.badlogic.gdx.utils.GdxRuntimeException;
import com.badlogic.gdx.utils.IntMap;
import forge.Forge;
import forge.adventure.util.Controls;
import forge.adventure.util.Current;
import forge.adventure.world.WorldSave;
import forge.adventure.world.WorldSaveHeader;
import forge.screens.TransitionScreen;
@@ -36,7 +31,7 @@ public class SaveLoadScene extends UIScene {
IntMap<WorldSaveHeader> previews = new IntMap<>();
Color defColor;
Table layout;
boolean save = true;
Modes mode;
Dialog dialog;
TextField textInput;
Label header;
@@ -105,14 +100,16 @@ public class SaveLoadScene extends UIScene {
}
public void loadSave() {
if (save) {
switch (mode) {
case Save:
if (currentSlot > 0) {
//prevent NPE, allowed saveslot is 1 to 10..
textInput.setText(buttons.get(currentSlot).getText().toString());
dialog.show(stage);
stage.setKeyboardFocus(textInput);
}
} else {
break;
case Load:
if (WorldSave.load(currentSlot)) {
Forge.setTransitionScreen(new TransitionScreen(new Runnable() {
@Override
@@ -123,6 +120,23 @@ public class SaveLoadScene extends UIScene {
} else {
Forge.clearTransitionScreen();
}
break;
case NewGamePlus:
if (WorldSave.load(currentSlot)) {
WorldSave.getCurrentSave().getWorld().generateNew(0);
Current.player().setWorldPosY((int) (WorldSave.getCurrentSave().getWorld().getData().playerStartPosY * WorldSave.getCurrentSave().getWorld().getData().height * WorldSave.getCurrentSave().getWorld().getTileSize()));
Current.player().setWorldPosX((int) (WorldSave.getCurrentSave().getWorld().getData().playerStartPosX * WorldSave.getCurrentSave().getWorld().getData().width * WorldSave.getCurrentSave().getWorld().getTileSize()));
Forge.setTransitionScreen(new TransitionScreen(new Runnable() {
@Override
public void run() {
Forge.switchScene(SceneType.GameScene.instance);
}
}, null, false, true));
} else {
Forge.clearTransitionScreen();
}
break;
}
}
@@ -182,18 +196,33 @@ public class SaveLoadScene extends UIScene {
}
public enum Modes
{
Save,
Load,
NewGamePlus
}
public void setSaveGame(boolean save) {
if (save) {
public void setMode(Modes mode) {
switch (mode)
{
case Save:
header.setText(Forge.getLocalizer().getMessage("lblSaveGame"));
saveLoadButton.setText(Forge.getLocalizer().getMessage("lblSave"));
} else {
break;
case Load:
header.setText(Forge.getLocalizer().getMessage("lblLoadGame"));
saveLoadButton.setText(Forge.getLocalizer().getMessage("lblLoad"));
break;
case NewGamePlus:
header.setText("New Game Plus");
saveLoadButton.setText("Use selected Save");
break;
}
autoSave.setDisabled(save);
quickSave.setDisabled(save);
this.save = save;
autoSave.setDisabled(mode == Modes.Save);
quickSave.setDisabled(mode == Modes.Save);
this.mode = mode;
}
@Override

View File

@@ -12,7 +12,7 @@ import forge.adventure.world.WorldSave;
* First scene after the splash screen
*/
public class StartScene extends UIScene {
TextButton saveButton, resumeButton, newGameButton, loadButtton, settingsButton, exitButton, switchButton;
TextButton saveButton, resumeButton, newGameButton, loadButton, settingsButton, exitButton, switchButton;
boolean init;
public StartScene() {
@@ -26,13 +26,13 @@ public class StartScene extends UIScene {
}
public boolean Save() {
((SaveLoadScene) SceneType.SaveLoadScene.instance).setSaveGame(true);
((SaveLoadScene) SceneType.SaveLoadScene.instance).setMode(SaveLoadScene.Modes.Save);
Forge.switchScene(SceneType.SaveLoadScene.instance);
return true;
}
public boolean Load() {
((SaveLoadScene) SceneType.SaveLoadScene.instance).setSaveGame(false);
((SaveLoadScene) SceneType.SaveLoadScene.instance).setMode(SaveLoadScene.Modes.Load);
Forge.switchScene(SceneType.SaveLoadScene.instance);
return true;
}
@@ -90,6 +90,7 @@ public class StartScene extends UIScene {
StartScene.this.NewGame();
}
});
ui.onButtonPress("Start+", () -> NewGamePlus());
ui.onButtonPress("Load", new Runnable() {
@Override
public void run() {
@@ -122,8 +123,8 @@ public class StartScene extends UIScene {
});
newGameButton = ui.findActor("Start");
newGameButton.getLabel().setText(Forge.getLocalizer().getMessage("lblNewGame"));
loadButtton = ui.findActor("Load");
loadButtton.getLabel().setText(Forge.getLocalizer().getMessage("lblLoad"));
loadButton = ui.findActor("Load");
loadButton.getLabel().setText(Forge.getLocalizer().getMessage("lblLoad"));
saveButton = ui.findActor("Save");
saveButton.getLabel().setText(Forge.getLocalizer().getMessage("lblSave"));
resumeButton = ui.findActor("Resume");
@@ -141,9 +142,9 @@ public class StartScene extends UIScene {
newGameButton.setWidth(bW);
newGameButton.setX(oX);
newGameButton.getLabel().setFontScaleX(2);
loadButtton.setWidth(bW);
loadButtton.setX(oX);
loadButtton.getLabel().setFontScaleX(2);
loadButton.setWidth(bW);
loadButton.setX(oX);
loadButton.getLabel().setFontScaleX(2);
saveButton.setWidth(bW);
saveButton.setX(oX);
saveButton.getLabel().setFontScaleX(2);
@@ -171,4 +172,9 @@ public class StartScene extends UIScene {
this.init = true;
}
}
private void NewGamePlus() {
((SaveLoadScene) SceneType.SaveLoadScene.instance).setMode(SaveLoadScene.Modes.NewGamePlus);
Forge.switchScene(SceneType.SaveLoadScene.instance);
}
}

View File

@@ -177,8 +177,8 @@
"scale": 1.5,
"selectedLayer": 4,
"viewCenter": {
"x": 232,
"y": 135.99999999999994
"x": 231.99999999999997,
"y": 136
}
},
"map/cave_14.tmx": {
@@ -193,7 +193,7 @@
"scale": 3,
"selectedLayer": 3,
"viewCenter": {
"x": 232,
"x": 231.99999999999997,
"y": 136
}
},
@@ -201,7 +201,7 @@
"scale": 0.75,
"selectedLayer": 3,
"viewCenter": {
"x": 232,
"x": 231.99999999999994,
"y": 136
}
},
@@ -209,7 +209,7 @@
"scale": 1.0548958333333331,
"selectedLayer": 3,
"viewCenter": {
"x": 240.78206773970567,
"x": 240.78206773970578,
"y": 136.50636911227411
}
},
@@ -545,7 +545,7 @@
"scale": 1.0166158536585366,
"selectedLayer": 4,
"viewCenter": {
"x": 311.8188633978108,
"x": 311.81886339781073,
"y": 320.6717648822912
}
},
@@ -649,7 +649,7 @@
"scale": 1.0166158536585366,
"selectedLayer": 4,
"viewCenter": {
"x": 311.8188633978108,
"x": 311.81886339781073,
"y": 320.6717648822912
}
},
@@ -1297,16 +1297,16 @@
"scale": 0.75,
"selectedLayer": 4,
"viewCenter": {
"x": 480,
"y": 319.9999999999999
"x": 479.99999999999994,
"y": 320
}
},
"map/cave_25C.tmx": {
"scale": 1.5,
"selectedLayer": 5,
"viewCenter": {
"x": 480,
"y": 320
"x": 479.99999999999994,
"y": 144
}
},
"map/cave_3.tmx": {
@@ -1369,7 +1369,7 @@
"scale": 3,
"selectedLayer": 0,
"viewCenter": {
"x": 232,
"x": 231.99999999999997,
"y": 136
}
},
@@ -1377,8 +1377,8 @@
"scale": 1.5,
"selectedLayer": 0,
"viewCenter": {
"x": 232,
"y": 135.99999999999994
"x": 231.99999999999997,
"y": 136
}
},
"map/crypt.tmx": {
@@ -1417,7 +1417,7 @@
"scale": 1.5,
"selectedLayer": 3,
"viewCenter": {
"x": 320,
"x": 319.99999999999994,
"y": 320
}
},
@@ -1458,15 +1458,15 @@
"selectedLayer": 0,
"viewCenter": {
"x": 240,
"y": 136
"y": 202
}
},
"map/evilgrove_1.tmx": {
"scale": 1.5,
"selectedLayer": 0,
"viewCenter": {
"x": 240,
"y": 135.99999999999994
"x": 239.99999999999997,
"y": 136
}
},
"map/evilgrove_2.tmx": {
@@ -2065,8 +2065,8 @@
"scale": 3,
"selectedLayer": 4,
"viewCenter": {
"x": 236.99999999999997,
"y": 242
"x": 232,
"y": 240
}
},
"map/main_story/colorless_castle.tmx": {
@@ -2089,8 +2089,8 @@
"scale": 2,
"selectedLayer": 4,
"viewCenter": {
"x": 299.5,
"y": 1259
"x": 240,
"y": 911.5
}
},
"map/main_story/green_castle.tmx": {

View File

@@ -131,7 +131,7 @@ ArtefactShop
xy: 320, 786
size: 16, 16
Test
xy: 129, 48
xy: 128, 48
size: 32, 32
Cave
xy: 192, 272

View File

@@ -13,11 +13,20 @@
"type": "TextButton",
"name": "Start",
"text": "New Game",
"width": 160,
"width": 80,
"height": 30,
"x": 160,
"y": 20
},
{
"type": "TextButton",
"name": "Start+",
"text": "New Game +",
"width": 80,
"height": 30,
"x": 240,
"y": 20
},
{
"type": "TextButton",
"name": "Load",