mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-19 12:18:00 +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.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
|
||||||
|
|||||||
@@ -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);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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": {
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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",
|
||||||
|
|||||||
Reference in New Issue
Block a user