mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-19 04:08:01 +00:00
Merge branch 'adventure' into 'master'
added new game+ See merge request core-developers/forge!6506
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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": {
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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",
|
||||
|
||||
Reference in New Issue
Block a user