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.Color;
import com.badlogic.gdx.graphics.Texture; import com.badlogic.gdx.graphics.Texture;
import com.badlogic.gdx.scenes.scene2d.InputEvent; import com.badlogic.gdx.scenes.scene2d.InputEvent;
import com.badlogic.gdx.scenes.scene2d.ui.Dialog; import com.badlogic.gdx.scenes.scene2d.ui.*;
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.utils.ClickListener; import com.badlogic.gdx.scenes.scene2d.utils.ClickListener;
import com.badlogic.gdx.scenes.scene2d.utils.TextureRegionDrawable; import com.badlogic.gdx.scenes.scene2d.utils.TextureRegionDrawable;
import com.badlogic.gdx.utils.Align; import com.badlogic.gdx.utils.Align;
@@ -18,6 +12,7 @@ import com.badlogic.gdx.utils.GdxRuntimeException;
import com.badlogic.gdx.utils.IntMap; import com.badlogic.gdx.utils.IntMap;
import forge.Forge; import forge.Forge;
import forge.adventure.util.Controls; import forge.adventure.util.Controls;
import forge.adventure.util.Current;
import forge.adventure.world.WorldSave; import forge.adventure.world.WorldSave;
import forge.adventure.world.WorldSaveHeader; import forge.adventure.world.WorldSaveHeader;
import forge.screens.TransitionScreen; import forge.screens.TransitionScreen;
@@ -36,7 +31,7 @@ public class SaveLoadScene extends UIScene {
IntMap<WorldSaveHeader> previews = new IntMap<>(); IntMap<WorldSaveHeader> previews = new IntMap<>();
Color defColor; Color defColor;
Table layout; Table layout;
boolean save = true; Modes mode;
Dialog dialog; Dialog dialog;
TextField textInput; TextField textInput;
Label header; Label header;
@@ -105,14 +100,16 @@ public class SaveLoadScene extends UIScene {
} }
public void loadSave() { public void loadSave() {
if (save) { switch (mode) {
case Save:
if (currentSlot > 0) { if (currentSlot > 0) {
//prevent NPE, allowed saveslot is 1 to 10.. //prevent NPE, allowed saveslot is 1 to 10..
textInput.setText(buttons.get(currentSlot).getText().toString()); textInput.setText(buttons.get(currentSlot).getText().toString());
dialog.show(stage); dialog.show(stage);
stage.setKeyboardFocus(textInput); stage.setKeyboardFocus(textInput);
} }
} else { break;
case Load:
if (WorldSave.load(currentSlot)) { if (WorldSave.load(currentSlot)) {
Forge.setTransitionScreen(new TransitionScreen(new Runnable() { Forge.setTransitionScreen(new TransitionScreen(new Runnable() {
@Override @Override
@@ -123,6 +120,23 @@ public class SaveLoadScene extends UIScene {
} else { } else {
Forge.clearTransitionScreen(); 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) { public void setMode(Modes mode) {
if (save) { switch (mode)
{
case Save:
header.setText(Forge.getLocalizer().getMessage("lblSaveGame")); header.setText(Forge.getLocalizer().getMessage("lblSaveGame"));
saveLoadButton.setText(Forge.getLocalizer().getMessage("lblSave")); saveLoadButton.setText(Forge.getLocalizer().getMessage("lblSave"));
} else { break;
case Load:
header.setText(Forge.getLocalizer().getMessage("lblLoadGame")); header.setText(Forge.getLocalizer().getMessage("lblLoadGame"));
saveLoadButton.setText(Forge.getLocalizer().getMessage("lblLoad")); saveLoadButton.setText(Forge.getLocalizer().getMessage("lblLoad"));
break;
case NewGamePlus:
header.setText("New Game Plus");
saveLoadButton.setText("Use selected Save");
break;
} }
autoSave.setDisabled(save); autoSave.setDisabled(mode == Modes.Save);
quickSave.setDisabled(save); quickSave.setDisabled(mode == Modes.Save);
this.save = save; this.mode = mode;
} }
@Override @Override

View File

@@ -12,7 +12,7 @@ import forge.adventure.world.WorldSave;
* First scene after the splash screen * First scene after the splash screen
*/ */
public class StartScene extends UIScene { public class StartScene extends UIScene {
TextButton saveButton, resumeButton, newGameButton, loadButtton, settingsButton, exitButton, switchButton; TextButton saveButton, resumeButton, newGameButton, loadButton, settingsButton, exitButton, switchButton;
boolean init; boolean init;
public StartScene() { public StartScene() {
@@ -26,13 +26,13 @@ public class StartScene extends UIScene {
} }
public boolean Save() { public boolean Save() {
((SaveLoadScene) SceneType.SaveLoadScene.instance).setSaveGame(true); ((SaveLoadScene) SceneType.SaveLoadScene.instance).setMode(SaveLoadScene.Modes.Save);
Forge.switchScene(SceneType.SaveLoadScene.instance); Forge.switchScene(SceneType.SaveLoadScene.instance);
return true; return true;
} }
public boolean Load() { public boolean Load() {
((SaveLoadScene) SceneType.SaveLoadScene.instance).setSaveGame(false); ((SaveLoadScene) SceneType.SaveLoadScene.instance).setMode(SaveLoadScene.Modes.Load);
Forge.switchScene(SceneType.SaveLoadScene.instance); Forge.switchScene(SceneType.SaveLoadScene.instance);
return true; return true;
} }
@@ -90,6 +90,7 @@ public class StartScene extends UIScene {
StartScene.this.NewGame(); StartScene.this.NewGame();
} }
}); });
ui.onButtonPress("Start+", () -> NewGamePlus());
ui.onButtonPress("Load", new Runnable() { ui.onButtonPress("Load", new Runnable() {
@Override @Override
public void run() { public void run() {
@@ -122,8 +123,8 @@ public class StartScene extends UIScene {
}); });
newGameButton = ui.findActor("Start"); newGameButton = ui.findActor("Start");
newGameButton.getLabel().setText(Forge.getLocalizer().getMessage("lblNewGame")); newGameButton.getLabel().setText(Forge.getLocalizer().getMessage("lblNewGame"));
loadButtton = ui.findActor("Load"); loadButton = ui.findActor("Load");
loadButtton.getLabel().setText(Forge.getLocalizer().getMessage("lblLoad")); loadButton.getLabel().setText(Forge.getLocalizer().getMessage("lblLoad"));
saveButton = ui.findActor("Save"); saveButton = ui.findActor("Save");
saveButton.getLabel().setText(Forge.getLocalizer().getMessage("lblSave")); saveButton.getLabel().setText(Forge.getLocalizer().getMessage("lblSave"));
resumeButton = ui.findActor("Resume"); resumeButton = ui.findActor("Resume");
@@ -141,9 +142,9 @@ public class StartScene extends UIScene {
newGameButton.setWidth(bW); newGameButton.setWidth(bW);
newGameButton.setX(oX); newGameButton.setX(oX);
newGameButton.getLabel().setFontScaleX(2); newGameButton.getLabel().setFontScaleX(2);
loadButtton.setWidth(bW); loadButton.setWidth(bW);
loadButtton.setX(oX); loadButton.setX(oX);
loadButtton.getLabel().setFontScaleX(2); loadButton.getLabel().setFontScaleX(2);
saveButton.setWidth(bW); saveButton.setWidth(bW);
saveButton.setX(oX); saveButton.setX(oX);
saveButton.getLabel().setFontScaleX(2); saveButton.getLabel().setFontScaleX(2);
@@ -171,4 +172,9 @@ public class StartScene extends UIScene {
this.init = true; 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, "scale": 1.5,
"selectedLayer": 4, "selectedLayer": 4,
"viewCenter": { "viewCenter": {
"x": 232, "x": 231.99999999999997,
"y": 135.99999999999994 "y": 136
} }
}, },
"map/cave_14.tmx": { "map/cave_14.tmx": {
@@ -193,7 +193,7 @@
"scale": 3, "scale": 3,
"selectedLayer": 3, "selectedLayer": 3,
"viewCenter": { "viewCenter": {
"x": 232, "x": 231.99999999999997,
"y": 136 "y": 136
} }
}, },
@@ -201,7 +201,7 @@
"scale": 0.75, "scale": 0.75,
"selectedLayer": 3, "selectedLayer": 3,
"viewCenter": { "viewCenter": {
"x": 232, "x": 231.99999999999994,
"y": 136 "y": 136
} }
}, },
@@ -209,7 +209,7 @@
"scale": 1.0548958333333331, "scale": 1.0548958333333331,
"selectedLayer": 3, "selectedLayer": 3,
"viewCenter": { "viewCenter": {
"x": 240.78206773970567, "x": 240.78206773970578,
"y": 136.50636911227411 "y": 136.50636911227411
} }
}, },
@@ -545,7 +545,7 @@
"scale": 1.0166158536585366, "scale": 1.0166158536585366,
"selectedLayer": 4, "selectedLayer": 4,
"viewCenter": { "viewCenter": {
"x": 311.8188633978108, "x": 311.81886339781073,
"y": 320.6717648822912 "y": 320.6717648822912
} }
}, },
@@ -649,7 +649,7 @@
"scale": 1.0166158536585366, "scale": 1.0166158536585366,
"selectedLayer": 4, "selectedLayer": 4,
"viewCenter": { "viewCenter": {
"x": 311.8188633978108, "x": 311.81886339781073,
"y": 320.6717648822912 "y": 320.6717648822912
} }
}, },
@@ -1297,16 +1297,16 @@
"scale": 0.75, "scale": 0.75,
"selectedLayer": 4, "selectedLayer": 4,
"viewCenter": { "viewCenter": {
"x": 480, "x": 479.99999999999994,
"y": 319.9999999999999 "y": 320
} }
}, },
"map/cave_25C.tmx": { "map/cave_25C.tmx": {
"scale": 1.5, "scale": 1.5,
"selectedLayer": 5, "selectedLayer": 5,
"viewCenter": { "viewCenter": {
"x": 480, "x": 479.99999999999994,
"y": 320 "y": 144
} }
}, },
"map/cave_3.tmx": { "map/cave_3.tmx": {
@@ -1369,7 +1369,7 @@
"scale": 3, "scale": 3,
"selectedLayer": 0, "selectedLayer": 0,
"viewCenter": { "viewCenter": {
"x": 232, "x": 231.99999999999997,
"y": 136 "y": 136
} }
}, },
@@ -1377,8 +1377,8 @@
"scale": 1.5, "scale": 1.5,
"selectedLayer": 0, "selectedLayer": 0,
"viewCenter": { "viewCenter": {
"x": 232, "x": 231.99999999999997,
"y": 135.99999999999994 "y": 136
} }
}, },
"map/crypt.tmx": { "map/crypt.tmx": {
@@ -1417,7 +1417,7 @@
"scale": 1.5, "scale": 1.5,
"selectedLayer": 3, "selectedLayer": 3,
"viewCenter": { "viewCenter": {
"x": 320, "x": 319.99999999999994,
"y": 320 "y": 320
} }
}, },
@@ -1458,15 +1458,15 @@
"selectedLayer": 0, "selectedLayer": 0,
"viewCenter": { "viewCenter": {
"x": 240, "x": 240,
"y": 136 "y": 202
} }
}, },
"map/evilgrove_1.tmx": { "map/evilgrove_1.tmx": {
"scale": 1.5, "scale": 1.5,
"selectedLayer": 0, "selectedLayer": 0,
"viewCenter": { "viewCenter": {
"x": 240, "x": 239.99999999999997,
"y": 135.99999999999994 "y": 136
} }
}, },
"map/evilgrove_2.tmx": { "map/evilgrove_2.tmx": {
@@ -2065,8 +2065,8 @@
"scale": 3, "scale": 3,
"selectedLayer": 4, "selectedLayer": 4,
"viewCenter": { "viewCenter": {
"x": 236.99999999999997, "x": 232,
"y": 242 "y": 240
} }
}, },
"map/main_story/colorless_castle.tmx": { "map/main_story/colorless_castle.tmx": {
@@ -2089,8 +2089,8 @@
"scale": 2, "scale": 2,
"selectedLayer": 4, "selectedLayer": 4,
"viewCenter": { "viewCenter": {
"x": 299.5, "x": 240,
"y": 1259 "y": 911.5
} }
}, },
"map/main_story/green_castle.tmx": { "map/main_story/green_castle.tmx": {

View File

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

View File

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