mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-18 11:48:02 +00:00
Merge branch 'AdventureModePort' into 'master'
Mobile + Adventure port See merge request core-developers/forge!6180
This commit is contained in:
@@ -260,12 +260,6 @@
|
|||||||
<artifactId>forge-gui-mobile</artifactId>
|
<artifactId>forge-gui-mobile</artifactId>
|
||||||
<version>${project.version}</version>
|
<version>${project.version}</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
<dependency>
|
|
||||||
<groupId>com.github.raeleus.TenPatch</groupId>
|
|
||||||
<artifactId>tenpatch</artifactId>
|
|
||||||
<version>5.2.0</version>
|
|
||||||
<scope>compile</scope>
|
|
||||||
</dependency>
|
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.jetbrains</groupId>
|
<groupId>org.jetbrains</groupId>
|
||||||
<artifactId>annotations</artifactId>
|
<artifactId>annotations</artifactId>
|
||||||
|
|||||||
@@ -1,202 +0,0 @@
|
|||||||
package forge.adventure;
|
|
||||||
|
|
||||||
import com.badlogic.gdx.Gdx;
|
|
||||||
import com.badlogic.gdx.graphics.GL20;
|
|
||||||
import com.badlogic.gdx.graphics.Pixmap;
|
|
||||||
import com.badlogic.gdx.graphics.Texture;
|
|
||||||
import com.badlogic.gdx.graphics.g2d.Batch;
|
|
||||||
import com.badlogic.gdx.graphics.g2d.SpriteBatch;
|
|
||||||
import com.badlogic.gdx.graphics.g2d.TextureRegion;
|
|
||||||
import com.badlogic.gdx.utils.Array;
|
|
||||||
import com.badlogic.gdx.utils.Clipboard;
|
|
||||||
import com.badlogic.gdx.utils.ScreenUtils;
|
|
||||||
import forge.Forge;
|
|
||||||
import forge.Graphics;
|
|
||||||
import forge.adventure.scene.ForgeScene;
|
|
||||||
import forge.adventure.scene.Scene;
|
|
||||||
import forge.adventure.scene.SceneType;
|
|
||||||
import forge.adventure.util.Config;
|
|
||||||
import forge.interfaces.IDeviceAdapter;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Application adapter the handle switching and fading between scenes
|
|
||||||
*/
|
|
||||||
public class AdventureApplicationAdapter extends Forge {
|
|
||||||
public static AdventureApplicationAdapter instance;
|
|
||||||
Scene currentScene = null;
|
|
||||||
Array<Scene> lastScene = new Array<>();
|
|
||||||
private int currentWidth;
|
|
||||||
private int currentHeight;
|
|
||||||
private float animationTimeout;
|
|
||||||
Batch animationBatch;
|
|
||||||
Texture transitionTexture;
|
|
||||||
TextureRegion lastScreenTexture;
|
|
||||||
private boolean sceneWasSwapped =false;
|
|
||||||
private Graphics graphics;
|
|
||||||
|
|
||||||
public Graphics getGraphics()
|
|
||||||
{
|
|
||||||
if(graphics==null)
|
|
||||||
graphics=new Graphics();
|
|
||||||
return graphics;
|
|
||||||
}
|
|
||||||
|
|
||||||
public TextureRegion getLastScreenTexture() {
|
|
||||||
return lastScreenTexture;
|
|
||||||
}
|
|
||||||
public AdventureApplicationAdapter(Clipboard clipboard0, IDeviceAdapter deviceAdapter0, String assetDir0, boolean value, boolean androidOrientation, int totalRAM, boolean isTablet, int AndroidAPI, String AndroidRelease, String deviceName) {
|
|
||||||
super(clipboard0, deviceAdapter0, assetDir0, value, androidOrientation, totalRAM, isTablet, AndroidAPI, AndroidRelease, deviceName);
|
|
||||||
instance = this;
|
|
||||||
}
|
|
||||||
|
|
||||||
public int getCurrentWidth() {
|
|
||||||
return currentWidth;
|
|
||||||
}
|
|
||||||
|
|
||||||
public int getCurrentHeight() {
|
|
||||||
return currentHeight;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
public Scene getCurrentScene() {
|
|
||||||
return currentScene;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void resize(int w, int h) {
|
|
||||||
currentWidth = w;
|
|
||||||
currentHeight = h;
|
|
||||||
super.resize(w, h);
|
|
||||||
}
|
|
||||||
|
|
||||||
public boolean switchScene(Scene newScene) {
|
|
||||||
|
|
||||||
if (currentScene != null) {
|
|
||||||
if (!currentScene.leave())
|
|
||||||
return false;
|
|
||||||
lastScene.add(currentScene);
|
|
||||||
}
|
|
||||||
storeScreen();
|
|
||||||
sceneWasSwapped =true;
|
|
||||||
currentScene = newScene;
|
|
||||||
currentScene.enter();
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
private void storeScreen() {
|
|
||||||
if(!(currentScene instanceof ForgeScene))
|
|
||||||
{
|
|
||||||
if(lastScreenTexture!=null)
|
|
||||||
lastScreenTexture.getTexture().dispose();
|
|
||||||
lastScreenTexture = ScreenUtils.getFrameBufferTexture();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
public void resLoaded() {
|
|
||||||
for (forge.adventure.scene.SceneType entry : SceneType.values()) {
|
|
||||||
entry.instance.resLoaded();
|
|
||||||
}
|
|
||||||
//AdventureApplicationAdapter.CurrentAdapter.switchScene(SceneType.RewardScene.instance);
|
|
||||||
|
|
||||||
|
|
||||||
switchScene(SceneType.StartScene.instance);
|
|
||||||
animationBatch=new SpriteBatch();
|
|
||||||
transitionTexture =new Texture(Config.instance().getFile("ui/transition.png"));
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void create() {
|
|
||||||
|
|
||||||
Pixmap pm = new Pixmap(Config.instance().getFile("skin/cursor.png"));
|
|
||||||
Gdx.graphics.setCursor(Gdx.graphics.newCursor(pm, 0, 0));
|
|
||||||
pm.dispose();
|
|
||||||
for (forge.adventure.scene.SceneType entry : SceneType.values()) {
|
|
||||||
entry.instance.create();
|
|
||||||
}
|
|
||||||
super.create();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void render() {
|
|
||||||
float delta=Gdx.graphics.getDeltaTime();
|
|
||||||
float transitionTime = 0.2f;
|
|
||||||
if(sceneWasSwapped)
|
|
||||||
{
|
|
||||||
sceneWasSwapped =false;
|
|
||||||
animationTimeout= transitionTime;
|
|
||||||
Gdx.gl.glClearColor(0, 0, 0, 1);
|
|
||||||
Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
if(animationTimeout>=0)
|
|
||||||
{
|
|
||||||
Gdx.gl.glClearColor(0, 0, 0, 1);
|
|
||||||
Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
|
|
||||||
animationBatch.begin();
|
|
||||||
animationTimeout-=delta;
|
|
||||||
animationBatch.setColor(1,1,1,1);
|
|
||||||
animationBatch.draw(lastScreenTexture,0,0, Gdx.graphics.getWidth(),Gdx.graphics.getHeight());
|
|
||||||
animationBatch.setColor(1,1,1,1-(1/ transitionTime)*animationTimeout);
|
|
||||||
animationBatch.draw(transitionTexture,0,0, Gdx.graphics.getWidth(),Gdx.graphics.getHeight());
|
|
||||||
animationBatch.draw(transitionTexture,0,0, Gdx.graphics.getWidth(),Gdx.graphics.getHeight());
|
|
||||||
animationBatch.end();
|
|
||||||
if(animationTimeout<0)
|
|
||||||
{
|
|
||||||
currentScene.render();
|
|
||||||
storeScreen();
|
|
||||||
Gdx.gl.glClearColor(0, 0, 0, 1);
|
|
||||||
Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if(animationTimeout>=-transitionTime)
|
|
||||||
{
|
|
||||||
Gdx.gl.glClearColor(0, 0, 0, 1);
|
|
||||||
Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
|
|
||||||
animationBatch.begin();
|
|
||||||
animationTimeout-=delta;
|
|
||||||
animationBatch.setColor(1,1,1,1);
|
|
||||||
animationBatch.draw(lastScreenTexture,0,0, Gdx.graphics.getWidth(),Gdx.graphics.getHeight());
|
|
||||||
animationBatch.setColor(1,1,1,(1/ transitionTime)*(animationTimeout+ transitionTime));
|
|
||||||
animationBatch.draw(transitionTexture,0,0, Gdx.graphics.getWidth(),Gdx.graphics.getHeight());
|
|
||||||
animationBatch.draw(transitionTexture,0,0, Gdx.graphics.getWidth(),Gdx.graphics.getHeight());
|
|
||||||
animationBatch.end();
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
currentScene.render();
|
|
||||||
currentScene.act(delta);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void dispose() {
|
|
||||||
for (forge.adventure.scene.SceneType entry : SceneType.values()) {
|
|
||||||
entry.instance.dispose();
|
|
||||||
}
|
|
||||||
System.exit(0);
|
|
||||||
}
|
|
||||||
|
|
||||||
private Scene getLastScene() {
|
|
||||||
return lastScene.size==0?null: lastScene.get(lastScene.size-1);
|
|
||||||
}
|
|
||||||
|
|
||||||
public Scene switchToLast() {
|
|
||||||
|
|
||||||
if(lastScene.size!=0)
|
|
||||||
{
|
|
||||||
storeScreen();
|
|
||||||
currentScene = lastScene.get(lastScene.size-1);
|
|
||||||
currentScene.enter();
|
|
||||||
sceneWasSwapped =true;
|
|
||||||
lastScene.removeIndex(lastScene.size-1);
|
|
||||||
return currentScene;
|
|
||||||
}
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -1,17 +1,12 @@
|
|||||||
package forge.adventure;
|
package forge.adventure;
|
||||||
|
|
||||||
import com.badlogic.gdx.Gdx;
|
import com.badlogic.gdx.ApplicationListener;
|
||||||
import com.badlogic.gdx.Input;
|
|
||||||
import com.badlogic.gdx.backends.lwjgl3.Lwjgl3Application;
|
import com.badlogic.gdx.backends.lwjgl3.Lwjgl3Application;
|
||||||
import com.badlogic.gdx.backends.lwjgl3.Lwjgl3ApplicationConfiguration;
|
import com.badlogic.gdx.backends.lwjgl3.Lwjgl3ApplicationConfiguration;
|
||||||
import com.badlogic.gdx.backends.lwjgl3.Lwjgl3Clipboard;
|
import com.badlogic.gdx.backends.lwjgl3.Lwjgl3Clipboard;
|
||||||
import com.badlogic.gdx.graphics.GL20;
|
import com.badlogic.gdx.graphics.glutils.HdpiMode;
|
||||||
import forge.Forge;
|
import forge.Forge;
|
||||||
import forge.adventure.util.Config;
|
import forge.adventure.util.Config;
|
||||||
import forge.assets.FSkin;
|
|
||||||
import forge.gui.GuiBase;
|
|
||||||
import forge.sound.MusicPlaylist;
|
|
||||||
import forge.sound.SoundSystem;
|
|
||||||
import forge.util.BuildInfo;
|
import forge.util.BuildInfo;
|
||||||
import io.sentry.Sentry;
|
import io.sentry.Sentry;
|
||||||
import io.sentry.SentryClient;
|
import io.sentry.SentryClient;
|
||||||
@@ -19,86 +14,6 @@ import io.sentry.SentryClient;
|
|||||||
import java.nio.file.Files;
|
import java.nio.file.Files;
|
||||||
import java.nio.file.Paths;
|
import java.nio.file.Paths;
|
||||||
|
|
||||||
/**
|
|
||||||
* Wrapper to start forge first (splash screen and resources loading)
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
class StartAdventure extends AdventureApplicationAdapter {
|
|
||||||
|
|
||||||
|
|
||||||
public StartAdventure( ) {
|
|
||||||
|
|
||||||
super(new Lwjgl3Clipboard(), new DesktopAdapter(""), Files.exists(Paths.get("./res"))?"./":"../forge-gui/", true, false, 0, true, 0, "", "");
|
|
||||||
Forge.isTabletDevice = true;
|
|
||||||
Forge.isPortraitMode = false;
|
|
||||||
Forge.hdbuttons = true;
|
|
||||||
Forge.hdstart = true;
|
|
||||||
|
|
||||||
isPortraitMode = true;
|
|
||||||
totalDeviceRAM = 0;
|
|
||||||
GuiBase.setDeviceInfo("", "", 0, 0);
|
|
||||||
GuiBase.setIsAdventureMode(true);
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void render() {
|
|
||||||
if (splashScreen != null) {
|
|
||||||
Gdx.gl.glClearColor(1, 0, 1, 1);
|
|
||||||
Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT); // Clear the screen.
|
|
||||||
getGraphics().begin(getCurrentWidth(), getCurrentHeight());
|
|
||||||
splashScreen.setSize(getCurrentWidth(), getCurrentHeight());
|
|
||||||
splashScreen.screenPos.setSize(getCurrentWidth(), getCurrentHeight());
|
|
||||||
if (splashScreen.getRotate180()) {
|
|
||||||
getGraphics().startRotateTransform(getCurrentWidth() / 2f, getCurrentHeight() / 2f, 180);
|
|
||||||
}
|
|
||||||
splashScreen.draw(getGraphics());
|
|
||||||
if (splashScreen.getRotate180()) {
|
|
||||||
getGraphics().endTransform();
|
|
||||||
}
|
|
||||||
|
|
||||||
getGraphics().end();
|
|
||||||
} else {
|
|
||||||
super.render();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void resize(int width, int height) {
|
|
||||||
super.resize(width, height);
|
|
||||||
if (splashScreen != null)
|
|
||||||
splashScreen.setSize(width, height);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void create() {
|
|
||||||
//install our error handler
|
|
||||||
FSkin.loadLight("default", splashScreen,Config.instance().getFile("skin"));
|
|
||||||
|
|
||||||
|
|
||||||
//load model on background thread (using progress bar to report progress)
|
|
||||||
super.create();
|
|
||||||
|
|
||||||
}
|
|
||||||
@Override
|
|
||||||
protected void afterDbLoaded()
|
|
||||||
{
|
|
||||||
FSkin.loadLight("default", splashScreen,Config.instance().getFile("skin"));
|
|
||||||
FSkin.loadFull(splashScreen);
|
|
||||||
SoundSystem.instance.setBackgroundMusic(MusicPlaylist.MENUS); //start background music
|
|
||||||
Gdx.input.setCatchKey(Input.Keys.MENU, true);
|
|
||||||
//openHomeScreen(-1, null); //default for startup
|
|
||||||
splashScreen = null;
|
|
||||||
afterDBloaded = true;
|
|
||||||
|
|
||||||
|
|
||||||
//adjust height modifier
|
|
||||||
adjustHeightModifier(getScreenWidth(), getScreenHeight());
|
|
||||||
|
|
||||||
resLoaded();
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
/**
|
/**
|
||||||
* Main entry point
|
* Main entry point
|
||||||
*/
|
*/
|
||||||
@@ -121,17 +36,19 @@ public class Main {
|
|||||||
|
|
||||||
Lwjgl3ApplicationConfiguration config = new Lwjgl3ApplicationConfiguration();
|
Lwjgl3ApplicationConfiguration config = new Lwjgl3ApplicationConfiguration();
|
||||||
config.setResizable(false);
|
config.setResizable(false);
|
||||||
StartAdventure start=new StartAdventure();
|
ApplicationListener start = Forge.getApp(new Lwjgl3Clipboard(), new DesktopAdapter(""), Files.exists(Paths.get("./res"))?"./":"../forge-gui/", true, false, 0, true, 0, "", "");
|
||||||
|
|
||||||
if (Config.instance().getSettingData().fullScreen)
|
if (Config.instance().getSettingData().fullScreen) {
|
||||||
{
|
|
||||||
config.setFullscreenMode(Lwjgl3ApplicationConfiguration.getDisplayMode());
|
config.setFullscreenMode(Lwjgl3ApplicationConfiguration.getDisplayMode());
|
||||||
|
config.setAutoIconify(true);
|
||||||
|
config.setHdpiMode(HdpiMode.Logical);
|
||||||
} else {
|
} else {
|
||||||
config.setWindowedMode(Config.instance().getSettingData().width, Config.instance().getSettingData().height);
|
config.setWindowedMode(Config.instance().getSettingData().width, Config.instance().getSettingData().height);
|
||||||
}
|
}
|
||||||
|
config.setTitle("Forge Adventure Mobile");
|
||||||
config.setWindowIcon(Config.instance().getFilePath("forge-adventure.png"));
|
config.setWindowIcon(Config.instance().getFilePath("forge-adventure.png"));
|
||||||
|
|
||||||
|
|
||||||
new Lwjgl3Application(start, config);
|
new Lwjgl3Application(start, config);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,6 +3,8 @@ package forge.adventure.editor;
|
|||||||
import forge.adventure.data.EnemyData;
|
import forge.adventure.data.EnemyData;
|
||||||
|
|
||||||
import javax.swing.*;
|
import javax.swing.*;
|
||||||
|
import javax.swing.event.ChangeEvent;
|
||||||
|
import javax.swing.event.ChangeListener;
|
||||||
import java.awt.*;
|
import java.awt.*;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -42,15 +44,60 @@ public class EnemyEdit extends JComponent {
|
|||||||
add(rewards,BorderLayout.CENTER);
|
add(rewards,BorderLayout.CENTER);
|
||||||
add(preview,BorderLayout.LINE_START);
|
add(preview,BorderLayout.LINE_START);
|
||||||
|
|
||||||
atlas.getEdit().getDocument().addDocumentListener(new DocumentChangeListener(()->updateEnemy()));
|
atlas.getEdit().getDocument().addDocumentListener(new DocumentChangeListener(new Runnable() {
|
||||||
nameField.getDocument().addDocumentListener(new DocumentChangeListener(()->updateEnemy()));
|
@Override
|
||||||
deck.getEdit().getDocument().addDocumentListener(new DocumentChangeListener(()->updateEnemy()));
|
public void run() {
|
||||||
lifeFiled.addChangeListener(e -> updateEnemy());
|
EnemyEdit.this.updateEnemy();
|
||||||
speed.addChangeListener(e -> updateEnemy());
|
}
|
||||||
difficulty.addChangeListener(e -> updateEnemy());
|
}));
|
||||||
spawnRate.addChangeListener(e -> updateEnemy());
|
nameField.getDocument().addDocumentListener(new DocumentChangeListener(new Runnable() {
|
||||||
rewards.addChangeListener(e -> updateEnemy());
|
@Override
|
||||||
lifeFiled.addChangeListener(e -> updateEnemy());
|
public void run() {
|
||||||
|
EnemyEdit.this.updateEnemy();
|
||||||
|
}
|
||||||
|
}));
|
||||||
|
deck.getEdit().getDocument().addDocumentListener(new DocumentChangeListener(new Runnable() {
|
||||||
|
@Override
|
||||||
|
public void run() {
|
||||||
|
EnemyEdit.this.updateEnemy();
|
||||||
|
}
|
||||||
|
}));
|
||||||
|
lifeFiled.addChangeListener(new ChangeListener() {
|
||||||
|
@Override
|
||||||
|
public void stateChanged(ChangeEvent e) {
|
||||||
|
EnemyEdit.this.updateEnemy();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
speed.addChangeListener(new ChangeListener() {
|
||||||
|
@Override
|
||||||
|
public void stateChanged(ChangeEvent e) {
|
||||||
|
EnemyEdit.this.updateEnemy();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
difficulty.addChangeListener(new ChangeListener() {
|
||||||
|
@Override
|
||||||
|
public void stateChanged(ChangeEvent e) {
|
||||||
|
EnemyEdit.this.updateEnemy();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
spawnRate.addChangeListener(new ChangeListener() {
|
||||||
|
@Override
|
||||||
|
public void stateChanged(ChangeEvent e) {
|
||||||
|
EnemyEdit.this.updateEnemy();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
rewards.addChangeListener(new ChangeListener() {
|
||||||
|
@Override
|
||||||
|
public void stateChanged(ChangeEvent e) {
|
||||||
|
EnemyEdit.this.updateEnemy();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
lifeFiled.addChangeListener(new ChangeListener() {
|
||||||
|
@Override
|
||||||
|
public void stateChanged(ChangeEvent e) {
|
||||||
|
EnemyEdit.this.updateEnemy();
|
||||||
|
}
|
||||||
|
});
|
||||||
refresh();
|
refresh();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -9,7 +9,10 @@ import forge.adventure.util.Config;
|
|||||||
import forge.adventure.util.Paths;
|
import forge.adventure.util.Paths;
|
||||||
|
|
||||||
import javax.swing.*;
|
import javax.swing.*;
|
||||||
|
import javax.swing.event.ListSelectionEvent;
|
||||||
|
import javax.swing.event.ListSelectionListener;
|
||||||
import java.awt.*;
|
import java.awt.*;
|
||||||
|
import java.awt.event.ActionEvent;
|
||||||
import java.awt.event.ActionListener;
|
import java.awt.event.ActionListener;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -58,12 +61,42 @@ public class EnemyEditor extends JComponent {
|
|||||||
{
|
{
|
||||||
|
|
||||||
list.setCellRenderer(new EnemyDataRenderer());
|
list.setCellRenderer(new EnemyDataRenderer());
|
||||||
list.addListSelectionListener(e -> updateEdit());
|
list.addListSelectionListener(new ListSelectionListener() {
|
||||||
addButton("add",e->addEnemy());
|
@Override
|
||||||
addButton("remove",e->remove());
|
public void valueChanged(ListSelectionEvent e) {
|
||||||
addButton("copy",e->copy());
|
EnemyEditor.this.updateEdit();
|
||||||
addButton("load",e->load());
|
}
|
||||||
addButton("save",e->save());
|
});
|
||||||
|
addButton("add", new ActionListener() {
|
||||||
|
@Override
|
||||||
|
public void actionPerformed(ActionEvent e) {
|
||||||
|
EnemyEditor.this.addEnemy();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
addButton("remove", new ActionListener() {
|
||||||
|
@Override
|
||||||
|
public void actionPerformed(ActionEvent e) {
|
||||||
|
EnemyEditor.this.remove();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
addButton("copy", new ActionListener() {
|
||||||
|
@Override
|
||||||
|
public void actionPerformed(ActionEvent e) {
|
||||||
|
EnemyEditor.this.copy();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
addButton("load", new ActionListener() {
|
||||||
|
@Override
|
||||||
|
public void actionPerformed(ActionEvent e) {
|
||||||
|
EnemyEditor.this.load();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
addButton("save", new ActionListener() {
|
||||||
|
@Override
|
||||||
|
public void actionPerformed(ActionEvent e) {
|
||||||
|
EnemyEditor.this.save();
|
||||||
|
}
|
||||||
|
});
|
||||||
BorderLayout layout=new BorderLayout();
|
BorderLayout layout=new BorderLayout();
|
||||||
setLayout(layout);
|
setLayout(layout);
|
||||||
add(new JScrollPane(list), BorderLayout.LINE_START);
|
add(new JScrollPane(list), BorderLayout.LINE_START);
|
||||||
|
|||||||
@@ -4,6 +4,8 @@ import forge.adventure.util.Config;
|
|||||||
|
|
||||||
import javax.swing.*;
|
import javax.swing.*;
|
||||||
import javax.swing.filechooser.FileNameExtensionFilter;
|
import javax.swing.filechooser.FileNameExtensionFilter;
|
||||||
|
import java.awt.event.ActionEvent;
|
||||||
|
import java.awt.event.ActionListener;
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
|
|
||||||
@@ -19,7 +21,12 @@ public class FilePicker extends Box {
|
|||||||
super(BoxLayout.X_AXIS);
|
super(BoxLayout.X_AXIS);
|
||||||
this.fileEndings = fileEndings;
|
this.fileEndings = fileEndings;
|
||||||
|
|
||||||
findButton.addActionListener(e->find());
|
findButton.addActionListener(new ActionListener() {
|
||||||
|
@Override
|
||||||
|
public void actionPerformed(ActionEvent e) {
|
||||||
|
FilePicker.this.find();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
add(edit);
|
add(edit);
|
||||||
add(findButton);
|
add(findButton);
|
||||||
|
|||||||
@@ -8,6 +8,8 @@ import javax.swing.*;
|
|||||||
import javax.swing.event.ChangeEvent;
|
import javax.swing.event.ChangeEvent;
|
||||||
import javax.swing.event.ChangeListener;
|
import javax.swing.event.ChangeListener;
|
||||||
import java.awt.*;
|
import java.awt.*;
|
||||||
|
import java.awt.event.ActionEvent;
|
||||||
|
import java.awt.event.ActionListener;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -56,22 +58,102 @@ public class RewardEdit extends JComponent {
|
|||||||
add(new JLabel("cardText:")); add(cardText);
|
add(new JLabel("cardText:")); add(cardText);
|
||||||
|
|
||||||
|
|
||||||
typeField.addActionListener(((e)->updateReward()));
|
typeField.addActionListener((new ActionListener() {
|
||||||
probability.addChangeListener(e->updateReward());
|
@Override
|
||||||
count.addChangeListener(e->updateReward());
|
public void actionPerformed(ActionEvent e) {
|
||||||
addMaxCount.addChangeListener(e->updateReward());
|
RewardEdit.this.updateReward();
|
||||||
cardName.getDocument().addDocumentListener(new DocumentChangeListener(()->updateReward()));
|
}
|
||||||
itemName.getDocument().addDocumentListener(new DocumentChangeListener(()->updateReward()));
|
}));
|
||||||
editions.getEdit().getDocument().addDocumentListener(new DocumentChangeListener(()->updateReward()));
|
probability.addChangeListener(new ChangeListener() {
|
||||||
colors.getEdit().getDocument().addDocumentListener(new DocumentChangeListener(()->updateReward()));
|
@Override
|
||||||
rarity.getEdit().getDocument().addDocumentListener(new DocumentChangeListener(()->updateReward()));
|
public void stateChanged(ChangeEvent e) {
|
||||||
subTypes.getEdit().getDocument().addDocumentListener(new DocumentChangeListener(()->updateReward()));
|
RewardEdit.this.updateReward();
|
||||||
cardTypes.getEdit().getDocument().addDocumentListener(new DocumentChangeListener(()->updateReward()));
|
}
|
||||||
superTypes.getEdit().getDocument().addDocumentListener(new DocumentChangeListener(()->updateReward()));
|
});
|
||||||
manaCosts.getEdit().getDocument().addDocumentListener(new DocumentChangeListener(()->updateReward()));
|
count.addChangeListener(new ChangeListener() {
|
||||||
keyWords.getEdit().getDocument().addDocumentListener(new DocumentChangeListener(()->updateReward()));
|
@Override
|
||||||
colorType.addActionListener(((e)->updateReward()));
|
public void stateChanged(ChangeEvent e) {
|
||||||
cardText.getDocument().addDocumentListener(new DocumentChangeListener(()->updateReward()));
|
RewardEdit.this.updateReward();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
addMaxCount.addChangeListener(new ChangeListener() {
|
||||||
|
@Override
|
||||||
|
public void stateChanged(ChangeEvent e) {
|
||||||
|
RewardEdit.this.updateReward();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
cardName.getDocument().addDocumentListener(new DocumentChangeListener(new Runnable() {
|
||||||
|
@Override
|
||||||
|
public void run() {
|
||||||
|
RewardEdit.this.updateReward();
|
||||||
|
}
|
||||||
|
}));
|
||||||
|
itemName.getDocument().addDocumentListener(new DocumentChangeListener(new Runnable() {
|
||||||
|
@Override
|
||||||
|
public void run() {
|
||||||
|
RewardEdit.this.updateReward();
|
||||||
|
}
|
||||||
|
}));
|
||||||
|
editions.getEdit().getDocument().addDocumentListener(new DocumentChangeListener(new Runnable() {
|
||||||
|
@Override
|
||||||
|
public void run() {
|
||||||
|
RewardEdit.this.updateReward();
|
||||||
|
}
|
||||||
|
}));
|
||||||
|
colors.getEdit().getDocument().addDocumentListener(new DocumentChangeListener(new Runnable() {
|
||||||
|
@Override
|
||||||
|
public void run() {
|
||||||
|
RewardEdit.this.updateReward();
|
||||||
|
}
|
||||||
|
}));
|
||||||
|
rarity.getEdit().getDocument().addDocumentListener(new DocumentChangeListener(new Runnable() {
|
||||||
|
@Override
|
||||||
|
public void run() {
|
||||||
|
RewardEdit.this.updateReward();
|
||||||
|
}
|
||||||
|
}));
|
||||||
|
subTypes.getEdit().getDocument().addDocumentListener(new DocumentChangeListener(new Runnable() {
|
||||||
|
@Override
|
||||||
|
public void run() {
|
||||||
|
RewardEdit.this.updateReward();
|
||||||
|
}
|
||||||
|
}));
|
||||||
|
cardTypes.getEdit().getDocument().addDocumentListener(new DocumentChangeListener(new Runnable() {
|
||||||
|
@Override
|
||||||
|
public void run() {
|
||||||
|
RewardEdit.this.updateReward();
|
||||||
|
}
|
||||||
|
}));
|
||||||
|
superTypes.getEdit().getDocument().addDocumentListener(new DocumentChangeListener(new Runnable() {
|
||||||
|
@Override
|
||||||
|
public void run() {
|
||||||
|
RewardEdit.this.updateReward();
|
||||||
|
}
|
||||||
|
}));
|
||||||
|
manaCosts.getEdit().getDocument().addDocumentListener(new DocumentChangeListener(new Runnable() {
|
||||||
|
@Override
|
||||||
|
public void run() {
|
||||||
|
RewardEdit.this.updateReward();
|
||||||
|
}
|
||||||
|
}));
|
||||||
|
keyWords.getEdit().getDocument().addDocumentListener(new DocumentChangeListener(new Runnable() {
|
||||||
|
@Override
|
||||||
|
public void run() {
|
||||||
|
RewardEdit.this.updateReward();
|
||||||
|
}
|
||||||
|
}));
|
||||||
|
colorType.addActionListener((new ActionListener() {
|
||||||
|
@Override
|
||||||
|
public void actionPerformed(ActionEvent e) {
|
||||||
|
RewardEdit.this.updateReward();
|
||||||
|
}
|
||||||
|
}));
|
||||||
|
cardText.getDocument().addDocumentListener(new DocumentChangeListener(new Runnable() {
|
||||||
|
@Override
|
||||||
|
public void run() {
|
||||||
|
RewardEdit.this.updateReward();
|
||||||
|
}
|
||||||
|
}));
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -5,7 +5,10 @@ import forge.adventure.data.RewardData;
|
|||||||
import javax.swing.*;
|
import javax.swing.*;
|
||||||
import javax.swing.event.ChangeEvent;
|
import javax.swing.event.ChangeEvent;
|
||||||
import javax.swing.event.ChangeListener;
|
import javax.swing.event.ChangeListener;
|
||||||
|
import javax.swing.event.ListSelectionEvent;
|
||||||
|
import javax.swing.event.ListSelectionListener;
|
||||||
import java.awt.*;
|
import java.awt.*;
|
||||||
|
import java.awt.event.ActionEvent;
|
||||||
import java.awt.event.ActionListener;
|
import java.awt.event.ActionListener;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -55,11 +58,31 @@ public class RewardsEditor extends JComponent{
|
|||||||
public RewardsEditor()
|
public RewardsEditor()
|
||||||
{
|
{
|
||||||
|
|
||||||
list.setCellRenderer(new RewardsEditor.RewardDataRenderer());
|
list.setCellRenderer(new RewardDataRenderer());
|
||||||
list.addListSelectionListener(e -> updateEdit());
|
list.addListSelectionListener(new ListSelectionListener() {
|
||||||
addButton("add",e->addReward());
|
@Override
|
||||||
addButton("remove",e->remove());
|
public void valueChanged(ListSelectionEvent e) {
|
||||||
addButton("copy",e->copy());
|
RewardsEditor.this.updateEdit();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
addButton("add", new ActionListener() {
|
||||||
|
@Override
|
||||||
|
public void actionPerformed(ActionEvent e) {
|
||||||
|
RewardsEditor.this.addReward();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
addButton("remove", new ActionListener() {
|
||||||
|
@Override
|
||||||
|
public void actionPerformed(ActionEvent e) {
|
||||||
|
RewardsEditor.this.remove();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
addButton("copy", new ActionListener() {
|
||||||
|
@Override
|
||||||
|
public void actionPerformed(ActionEvent e) {
|
||||||
|
RewardsEditor.this.copy();
|
||||||
|
}
|
||||||
|
});
|
||||||
BorderLayout layout=new BorderLayout();
|
BorderLayout layout=new BorderLayout();
|
||||||
setLayout(layout);
|
setLayout(layout);
|
||||||
add(list, BorderLayout.LINE_START);
|
add(list, BorderLayout.LINE_START);
|
||||||
|
|||||||
@@ -3,6 +3,8 @@ package forge.adventure.editor;
|
|||||||
import forge.adventure.util.Config;
|
import forge.adventure.util.Config;
|
||||||
|
|
||||||
import javax.swing.*;
|
import javax.swing.*;
|
||||||
|
import java.awt.event.ActionEvent;
|
||||||
|
import java.awt.event.ActionListener;
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
|
|
||||||
@@ -16,7 +18,12 @@ public class TextListEdit extends Box {
|
|||||||
public TextListEdit(String[] possibleElements) {
|
public TextListEdit(String[] possibleElements) {
|
||||||
super(BoxLayout.X_AXIS);
|
super(BoxLayout.X_AXIS);
|
||||||
|
|
||||||
findButton.addActionListener(e->find());
|
findButton.addActionListener(new ActionListener() {
|
||||||
|
@Override
|
||||||
|
public void actionPerformed(ActionEvent e) {
|
||||||
|
TextListEdit.this.find();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
add(edit);
|
add(edit);
|
||||||
//add(findButton);
|
//add(findButton);
|
||||||
|
|||||||
@@ -1,26 +0,0 @@
|
|||||||
package forge.adventure.scene;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Enum of all scenes
|
|
||||||
*/
|
|
||||||
public enum SceneType {
|
|
||||||
StartScene(new forge.adventure.scene.StartScene()),
|
|
||||||
NewGameScene(new forge.adventure.scene.NewGameScene()),
|
|
||||||
SettingsScene(new forge.adventure.scene.SettingsScene()),
|
|
||||||
GameScene(new forge.adventure.scene.GameScene()),
|
|
||||||
DuelScene(new forge.adventure.scene.DuelScene()),
|
|
||||||
SaveLoadScene(new forge.adventure.scene.SaveLoadScene()),
|
|
||||||
DeckEditScene(new forge.adventure.scene.DeckEditScene()),
|
|
||||||
TileMapScene(new forge.adventure.scene.TileMapScene()),
|
|
||||||
RewardScene(new forge.adventure.scene.RewardScene()),
|
|
||||||
InnScene(new forge.adventure.scene.InnScene()),
|
|
||||||
DeckSelectScene(new forge.adventure.scene.DeckSelectScene()),
|
|
||||||
ShopScene(new forge.adventure.scene.ShopScene()),
|
|
||||||
PlayerStatisticScene(new forge.adventure.scene.PlayerStatisticScene());
|
|
||||||
|
|
||||||
|
|
||||||
public final forge.adventure.scene.Scene instance;
|
|
||||||
SceneType(forge.adventure.scene.Scene scene) {
|
|
||||||
this.instance = scene;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -22,6 +22,7 @@ public class Localizer {
|
|||||||
|
|
||||||
private Locale locale;
|
private Locale locale;
|
||||||
private ResourceBundle resourceBundle;
|
private ResourceBundle resourceBundle;
|
||||||
|
private boolean silent = false;
|
||||||
|
|
||||||
public static Localizer getInstance() {
|
public static Localizer getInstance() {
|
||||||
if (instance == null) {
|
if (instance == null) {
|
||||||
@@ -60,7 +61,11 @@ public class Localizer {
|
|||||||
|
|
||||||
public String getMessageorUseDefault(final String key, final String defaultValue, final Object... messageArguments) {
|
public String getMessageorUseDefault(final String key, final String defaultValue, final Object... messageArguments) {
|
||||||
try {
|
try {
|
||||||
return getMessage(key, messageArguments);
|
silent = true;
|
||||||
|
String value = getMessage(key, messageArguments);
|
||||||
|
if (value.contains("INVALID PROPERTY:"))
|
||||||
|
return defaultValue;
|
||||||
|
return value;
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
return defaultValue;
|
return defaultValue;
|
||||||
}
|
}
|
||||||
@@ -73,14 +78,17 @@ public class Localizer {
|
|||||||
//formatter = new MessageFormat(resourceBundle.getString(key.toLowerCase()), locale);
|
//formatter = new MessageFormat(resourceBundle.getString(key.toLowerCase()), locale);
|
||||||
formatter = new MessageFormat(resourceBundle.getString(key), locale);
|
formatter = new MessageFormat(resourceBundle.getString(key), locale);
|
||||||
} catch (final IllegalArgumentException | MissingResourceException e) {
|
} catch (final IllegalArgumentException | MissingResourceException e) {
|
||||||
|
if (!silent)
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (formatter == null) {
|
if (formatter == null && !silent) {
|
||||||
System.err.println("INVALID PROPERTY: '" + key + "' -- Translation Needed?");
|
System.err.println("INVALID PROPERTY: '" + key + "' -- Translation Needed?");
|
||||||
return "INVALID PROPERTY: '" + key + "' -- Translation Needed?";
|
return "INVALID PROPERTY: '" + key + "' -- Translation Needed?";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
silent = false;
|
||||||
|
|
||||||
formatter.setLocale(locale);
|
formatter.setLocale(locale);
|
||||||
|
|
||||||
String formattedMessage = "CHAR ENCODING ERROR";
|
String formattedMessage = "CHAR ENCODING ERROR";
|
||||||
|
|||||||
@@ -44,6 +44,7 @@
|
|||||||
-keep class io.sentry.event.Event { *; }
|
-keep class io.sentry.event.Event { *; }
|
||||||
-keep class io.netty.util.internal.logging.** { *; }
|
-keep class io.netty.util.internal.logging.** { *; }
|
||||||
-keep class net.jpountz.** { *; }
|
-keep class net.jpountz.** { *; }
|
||||||
|
-keep class com.ray3k.** { *; }
|
||||||
|
|
||||||
-keepclassmembers class com.badlogic.gdx.backends.android.AndroidInput* {
|
-keepclassmembers class com.badlogic.gdx.backends.android.AndroidInput* {
|
||||||
<init>(com.badlogic.gdx.Application, android.content.Context, java.lang.Object, com.badlogic.gdx.backends.android.AndroidApplicationConfiguration);
|
<init>(com.badlogic.gdx.Application, android.content.Context, java.lang.Object, com.badlogic.gdx.backends.android.AndroidApplicationConfiguration);
|
||||||
|
|||||||
@@ -5,7 +5,17 @@ import com.badlogic.gdx.ApplicationListener;
|
|||||||
import com.badlogic.gdx.Gdx;
|
import com.badlogic.gdx.Gdx;
|
||||||
import com.badlogic.gdx.Input.Keys;
|
import com.badlogic.gdx.Input.Keys;
|
||||||
import com.badlogic.gdx.graphics.GL20;
|
import com.badlogic.gdx.graphics.GL20;
|
||||||
|
import com.badlogic.gdx.graphics.Texture;
|
||||||
|
import com.badlogic.gdx.graphics.g2d.Batch;
|
||||||
|
import com.badlogic.gdx.graphics.g2d.SpriteBatch;
|
||||||
|
import com.badlogic.gdx.graphics.g2d.TextureRegion;
|
||||||
|
import com.badlogic.gdx.utils.Array;
|
||||||
import com.badlogic.gdx.utils.Clipboard;
|
import com.badlogic.gdx.utils.Clipboard;
|
||||||
|
import com.badlogic.gdx.utils.ScreenUtils;
|
||||||
|
import forge.adventure.scene.ForgeScene;
|
||||||
|
import forge.adventure.scene.Scene;
|
||||||
|
import forge.adventure.scene.SceneType;
|
||||||
|
import forge.adventure.util.Config;
|
||||||
import forge.animation.ForgeAnimation;
|
import forge.animation.ForgeAnimation;
|
||||||
import forge.assets.AssetsDownloader;
|
import forge.assets.AssetsDownloader;
|
||||||
import forge.assets.FSkin;
|
import forge.assets.FSkin;
|
||||||
@@ -40,6 +50,13 @@ public class Forge implements ApplicationListener {
|
|||||||
public static final String CURRENT_VERSION = "1.6.47.001";
|
public static final String CURRENT_VERSION = "1.6.47.001";
|
||||||
|
|
||||||
private static ApplicationListener app = null;
|
private static ApplicationListener app = null;
|
||||||
|
static Scene currentScene = null;
|
||||||
|
static Array<Scene> lastScene = new Array<>();
|
||||||
|
private float animationTimeout;
|
||||||
|
static Batch animationBatch;
|
||||||
|
static Texture transitionTexture;
|
||||||
|
static TextureRegion lastScreenTexture;
|
||||||
|
private static boolean sceneWasSwapped =false;
|
||||||
private static Clipboard clipboard;
|
private static Clipboard clipboard;
|
||||||
private static IDeviceAdapter deviceAdapter;
|
private static IDeviceAdapter deviceAdapter;
|
||||||
private static int screenWidth;
|
private static int screenWidth;
|
||||||
@@ -71,6 +88,7 @@ public class Forge implements ApplicationListener {
|
|||||||
public static boolean isPortraitMode = false;
|
public static boolean isPortraitMode = false;
|
||||||
public static boolean gameInProgress = false;
|
public static boolean gameInProgress = false;
|
||||||
public static boolean disposeTextures = false;
|
public static boolean disposeTextures = false;
|
||||||
|
public static boolean isMobileAdventureMode = false;
|
||||||
public static int cacheSize = 400;
|
public static int cacheSize = 400;
|
||||||
public static int totalDeviceRAM = 0;
|
public static int totalDeviceRAM = 0;
|
||||||
public static int androidVersion = 0;
|
public static int androidVersion = 0;
|
||||||
@@ -97,21 +115,6 @@ public class Forge implements ApplicationListener {
|
|||||||
GuiBase.setDeviceInfo(deviceName, AndroidRelease, AndroidAPI, totalRAM);
|
GuiBase.setDeviceInfo(deviceName, AndroidRelease, AndroidAPI, totalRAM);
|
||||||
return app;
|
return app;
|
||||||
}
|
}
|
||||||
protected Forge(Clipboard clipboard0, IDeviceAdapter deviceAdapter0, String assetDir0, boolean value, boolean androidOrientation, int totalRAM, boolean isTablet, int AndroidAPI, String AndroidRelease, String deviceName) {
|
|
||||||
if (GuiBase.getInterface() == null) {
|
|
||||||
clipboard = clipboard0;
|
|
||||||
deviceAdapter = deviceAdapter0;
|
|
||||||
GuiBase.setUsingAppDirectory(assetDir0.contains("forge.app")); //obb directory on android uses the package name as entrypoint
|
|
||||||
GuiBase.setInterface(new GuiMobile(assetDir0));
|
|
||||||
GuiBase.enablePropertyConfig(value);
|
|
||||||
isPortraitMode = androidOrientation;
|
|
||||||
totalDeviceRAM = totalRAM;
|
|
||||||
isTabletDevice = isTablet;
|
|
||||||
androidVersion = AndroidAPI;
|
|
||||||
}
|
|
||||||
GuiBase.setDeviceInfo(deviceName, AndroidRelease, AndroidAPI, totalRAM);
|
|
||||||
app=this;
|
|
||||||
}
|
|
||||||
private Forge() {
|
private Forge() {
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -132,6 +135,8 @@ public class Forge implements ApplicationListener {
|
|||||||
graphics = new Graphics();
|
graphics = new Graphics();
|
||||||
splashScreen = new SplashScreen();
|
splashScreen = new SplashScreen();
|
||||||
frameRate = new FrameRate();
|
frameRate = new FrameRate();
|
||||||
|
animationBatch = new SpriteBatch();
|
||||||
|
|
||||||
Gdx.input.setInputProcessor(new MainInputProcessor());
|
Gdx.input.setInputProcessor(new MainInputProcessor());
|
||||||
/*
|
/*
|
||||||
Set CatchBackKey here and exit the app when you hit the
|
Set CatchBackKey here and exit the app when you hit the
|
||||||
@@ -222,6 +227,14 @@ public class Forge implements ApplicationListener {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static Graphics getGraphics() {
|
||||||
|
return graphics;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static Scene getCurrentScene() {
|
||||||
|
return currentScene;
|
||||||
|
}
|
||||||
|
|
||||||
private void preloadExtendedArt() {
|
private void preloadExtendedArt() {
|
||||||
if (!enablePreloadExtendedArt||!enableUIMask.equals("Full"))
|
if (!enablePreloadExtendedArt||!enableUIMask.equals("Full"))
|
||||||
return;
|
return;
|
||||||
@@ -252,30 +265,52 @@ public class Forge implements ApplicationListener {
|
|||||||
/*for (FScreen fScreen : Dscreens)
|
/*for (FScreen fScreen : Dscreens)
|
||||||
System.out.println(fScreen.toString());*/
|
System.out.println(fScreen.toString());*/
|
||||||
}
|
}
|
||||||
|
public static void openHomeDefault() {
|
||||||
|
GuiBase.setIsAdventureMode(false);
|
||||||
|
openHomeScreen(-1, null); //default for startup
|
||||||
|
splashScreen = null;
|
||||||
|
isMobileAdventureMode = false;
|
||||||
|
if (isLandscapeMode()) { //open preferred new game screen by default if landscape mode
|
||||||
|
NewGameMenu.getPreferredScreen().open();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
public static void openAdventure() {
|
||||||
|
//continuous rendering is needed for adventure mode
|
||||||
|
startContinuousRendering();
|
||||||
|
GuiBase.setIsAdventureMode(true);
|
||||||
|
splashScreen = null;
|
||||||
|
isMobileAdventureMode = true;
|
||||||
|
try {
|
||||||
|
for (SceneType sceneType : SceneType.values()) {
|
||||||
|
sceneType.instance.resLoaded();
|
||||||
|
}
|
||||||
|
switchScene(SceneType.StartScene.instance);
|
||||||
|
} catch (Exception e) { e.printStackTrace(); }
|
||||||
|
}
|
||||||
protected void afterDbLoaded() {
|
protected void afterDbLoaded() {
|
||||||
stopContinuousRendering(); //save power consumption by disabling continuous rendering once assets loaded
|
stopContinuousRendering(); //save power consumption by disabling continuous rendering once assets loaded
|
||||||
|
//init here to fix crash if the assets are missings on android
|
||||||
|
transitionTexture = new Texture(Config.instance().getFile("ui/transition.png"));
|
||||||
|
|
||||||
FSkin.loadFull(splashScreen);
|
FSkin.loadFull(splashScreen);
|
||||||
|
|
||||||
SoundSystem.instance.setBackgroundMusic(MusicPlaylist.MENUS); //start background music
|
SoundSystem.instance.setBackgroundMusic(MusicPlaylist.MENUS); //start background music
|
||||||
destroyThis = false; //Allow back()
|
destroyThis = false; //Allow back()
|
||||||
Gdx.input.setCatchKey(Keys.MENU, true);
|
Gdx.input.setCatchKey(Keys.MENU, true);
|
||||||
openHomeScreen(-1, null); //default for startup
|
|
||||||
splashScreen = null;
|
|
||||||
afterDBloaded = true;
|
|
||||||
|
|
||||||
boolean isLandscapeMode = isLandscapeMode();
|
afterDBloaded = true;
|
||||||
if (isLandscapeMode) { //open preferred new game screen by default if landscape mode
|
//selection
|
||||||
NewGameMenu.getPreferredScreen().open();
|
if (isLandscapeMode() && !GuiBase.isAndroid())
|
||||||
}
|
splashScreen.setShowModeSelector(true);
|
||||||
|
else
|
||||||
|
openHomeDefault();
|
||||||
|
|
||||||
//adjust height modifier
|
//adjust height modifier
|
||||||
adjustHeightModifier(getScreenWidth(), getScreenHeight());
|
adjustHeightModifier(getScreenWidth(), getScreenHeight());
|
||||||
|
|
||||||
//update landscape mode preference if it doesn't match what the app loaded as
|
//update landscape mode preference if it doesn't match what the app loaded as
|
||||||
if (FModel.getPreferences().getPrefBoolean(FPref.UI_LANDSCAPE_MODE) != isLandscapeMode) {
|
if (FModel.getPreferences().getPrefBoolean(FPref.UI_LANDSCAPE_MODE) != isLandscapeMode()) {
|
||||||
FModel.getPreferences().setPref(FPref.UI_LANDSCAPE_MODE, isLandscapeMode);
|
FModel.getPreferences().setPref(FPref.UI_LANDSCAPE_MODE, isLandscapeMode());
|
||||||
FModel.getPreferences().save();
|
FModel.getPreferences().save();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -488,6 +523,9 @@ public class Forge implements ApplicationListener {
|
|||||||
return currentScreen;
|
return currentScreen;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static void clearCurrentScreen() {
|
||||||
|
currentScreen = null;
|
||||||
|
}
|
||||||
private static void setCurrentScreen(FScreen screen0) {
|
private static void setCurrentScreen(FScreen screen0) {
|
||||||
String toNewScreen = screen0 != null ? screen0.toString() : "";
|
String toNewScreen = screen0 != null ? screen0.toString() : "";
|
||||||
String previousScreen = currentScreen != null ? currentScreen.toString() : "";
|
String previousScreen = currentScreen != null ? currentScreen.toString() : "";
|
||||||
@@ -527,6 +565,60 @@ public class Forge implements ApplicationListener {
|
|||||||
if (screen == null) {
|
if (screen == null) {
|
||||||
screen = splashScreen;
|
screen = splashScreen;
|
||||||
if (screen == null) {
|
if (screen == null) {
|
||||||
|
if (isMobileAdventureMode) {
|
||||||
|
float delta=Gdx.graphics.getDeltaTime();
|
||||||
|
float transitionTime = 0.2f;
|
||||||
|
if(sceneWasSwapped)
|
||||||
|
{
|
||||||
|
sceneWasSwapped =false;
|
||||||
|
animationTimeout= transitionTime;
|
||||||
|
Gdx.gl.glClearColor(0, 0, 0, 1);
|
||||||
|
Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if(animationTimeout>=0)
|
||||||
|
{
|
||||||
|
Gdx.gl.glClearColor(0, 0, 0, 1);
|
||||||
|
Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
|
||||||
|
animationBatch.begin();
|
||||||
|
animationTimeout-=delta;
|
||||||
|
animationBatch.setColor(1,1,1,1);
|
||||||
|
animationBatch.draw(lastScreenTexture,0,0, Gdx.graphics.getWidth(),Gdx.graphics.getHeight());
|
||||||
|
animationBatch.setColor(1,1,1,1-(1/ transitionTime)*animationTimeout);
|
||||||
|
animationBatch.draw(transitionTexture,0,0, Gdx.graphics.getWidth(),Gdx.graphics.getHeight());
|
||||||
|
animationBatch.draw(transitionTexture,0,0, Gdx.graphics.getWidth(),Gdx.graphics.getHeight());
|
||||||
|
animationBatch.end();
|
||||||
|
if(animationTimeout<0)
|
||||||
|
{
|
||||||
|
currentScene.render();
|
||||||
|
storeScreen();
|
||||||
|
Gdx.gl.glClearColor(0, 0, 0, 1);
|
||||||
|
Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if(animationTimeout>=-transitionTime)
|
||||||
|
{
|
||||||
|
Gdx.gl.glClearColor(0, 0, 0, 1);
|
||||||
|
Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
|
||||||
|
animationBatch.begin();
|
||||||
|
animationTimeout-=delta;
|
||||||
|
animationBatch.setColor(1,1,1,1);
|
||||||
|
animationBatch.draw(lastScreenTexture,0,0, Gdx.graphics.getWidth(),Gdx.graphics.getHeight());
|
||||||
|
animationBatch.setColor(1,1,1,(1/ transitionTime)*(animationTimeout+ transitionTime));
|
||||||
|
animationBatch.draw(transitionTexture,0,0, Gdx.graphics.getWidth(),Gdx.graphics.getHeight());
|
||||||
|
animationBatch.draw(transitionTexture,0,0, Gdx.graphics.getWidth(),Gdx.graphics.getHeight());
|
||||||
|
animationBatch.end();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
currentScene.render();
|
||||||
|
currentScene.act(delta);
|
||||||
|
}
|
||||||
|
if (showFPS)
|
||||||
|
frameRate.render();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -534,7 +626,7 @@ public class Forge implements ApplicationListener {
|
|||||||
graphics.begin(screenWidth, screenHeight);
|
graphics.begin(screenWidth, screenHeight);
|
||||||
screen.screenPos.setSize(screenWidth, screenHeight);
|
screen.screenPos.setSize(screenWidth, screenHeight);
|
||||||
if (screen.getRotate180()) {
|
if (screen.getRotate180()) {
|
||||||
graphics.startRotateTransform(screenWidth / 2, screenHeight / 2, 180);
|
graphics.startRotateTransform(screenWidth / 2f, screenHeight / 2f, 180);
|
||||||
}
|
}
|
||||||
screen.draw(graphics);
|
screen.draw(graphics);
|
||||||
if (screen.getRotate180()) {
|
if (screen.getRotate180()) {
|
||||||
@@ -545,7 +637,7 @@ public class Forge implements ApplicationListener {
|
|||||||
overlay.screenPos.setSize(screenWidth, screenHeight);
|
overlay.screenPos.setSize(screenWidth, screenHeight);
|
||||||
overlay.setSize(screenWidth, screenHeight); //update overlay sizes as they're rendered
|
overlay.setSize(screenWidth, screenHeight); //update overlay sizes as they're rendered
|
||||||
if (overlay.getRotate180()) {
|
if (overlay.getRotate180()) {
|
||||||
graphics.startRotateTransform(screenWidth / 2, screenHeight / 2, 180);
|
graphics.startRotateTransform(screenWidth / 2f, screenHeight / 2f, 180);
|
||||||
}
|
}
|
||||||
overlay.draw(graphics);
|
overlay.draw(graphics);
|
||||||
if (overlay.getRotate180()) {
|
if (overlay.getRotate180()) {
|
||||||
@@ -615,6 +707,43 @@ public class Forge implements ApplicationListener {
|
|||||||
catch (Exception e) {}
|
catch (Exception e) {}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static boolean switchScene(Scene newScene) {
|
||||||
|
|
||||||
|
if (currentScene != null) {
|
||||||
|
if (!currentScene.leave())
|
||||||
|
return false;
|
||||||
|
lastScene.add(currentScene);
|
||||||
|
}
|
||||||
|
storeScreen();
|
||||||
|
sceneWasSwapped =true;
|
||||||
|
currentScene = newScene;
|
||||||
|
currentScene.enter();
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
protected static void storeScreen() {
|
||||||
|
if(!(currentScene instanceof ForgeScene))
|
||||||
|
{
|
||||||
|
if(lastScreenTexture!=null)
|
||||||
|
lastScreenTexture.getTexture().dispose();
|
||||||
|
lastScreenTexture = ScreenUtils.getFrameBufferTexture();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
public static Scene switchToLast() {
|
||||||
|
|
||||||
|
if(lastScene.size!=0)
|
||||||
|
{
|
||||||
|
storeScreen();
|
||||||
|
currentScene = lastScene.get(lastScene.size-1);
|
||||||
|
currentScene.enter();
|
||||||
|
sceneWasSwapped =true;
|
||||||
|
lastScene.removeIndex(lastScene.size-1);
|
||||||
|
return currentScene;
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
//log message to Forge.log file
|
//log message to Forge.log file
|
||||||
public static void log(Object message) {
|
public static void log(Object message) {
|
||||||
System.out.println(message);
|
System.out.println(message);
|
||||||
@@ -770,6 +899,9 @@ public class Forge implements ApplicationListener {
|
|||||||
if (currentScreen != null) {
|
if (currentScreen != null) {
|
||||||
currentScreen.buildTouchListeners(x, y, potentialListeners);
|
currentScreen.buildTouchListeners(x, y, potentialListeners);
|
||||||
}
|
}
|
||||||
|
if (splashScreen != null) {
|
||||||
|
splashScreen.buildTouchListeners(x, y, potentialListeners);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@@ -1,6 +1,10 @@
|
|||||||
package forge.adventure.character;
|
package forge.adventure.character;
|
||||||
|
|
||||||
import com.badlogic.gdx.graphics.g2d.*;
|
import com.badlogic.gdx.graphics.g2d.Animation;
|
||||||
|
import com.badlogic.gdx.graphics.g2d.Batch;
|
||||||
|
import com.badlogic.gdx.graphics.g2d.Sprite;
|
||||||
|
import com.badlogic.gdx.graphics.g2d.TextureAtlas;
|
||||||
|
import com.badlogic.gdx.graphics.g2d.TextureRegion;
|
||||||
import com.badlogic.gdx.math.Vector2;
|
import com.badlogic.gdx.math.Vector2;
|
||||||
import com.badlogic.gdx.scenes.scene2d.Actor;
|
import com.badlogic.gdx.scenes.scene2d.Actor;
|
||||||
import com.badlogic.gdx.utils.Array;
|
import com.badlogic.gdx.utils.Array;
|
||||||
@@ -1,10 +1,10 @@
|
|||||||
package forge.adventure.character;
|
package forge.adventure.character;
|
||||||
|
|
||||||
import com.badlogic.gdx.math.Vector2;
|
import com.badlogic.gdx.math.Vector2;
|
||||||
|
import forge.adventure.player.AdventurePlayer;
|
||||||
import forge.adventure.stage.GameStage;
|
import forge.adventure.stage.GameStage;
|
||||||
import forge.adventure.util.Config;
|
import forge.adventure.util.Config;
|
||||||
import forge.adventure.util.Current;
|
import forge.adventure.util.Current;
|
||||||
import forge.adventure.player.AdventurePlayer;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Class that will represent the player sprite on the map
|
* Class that will represent the player sprite on the map
|
||||||
@@ -18,7 +18,12 @@ public class PlayerSprite extends CharacterSprite {
|
|||||||
super(AdventurePlayer.current().spriteName());
|
super(AdventurePlayer.current().spriteName());
|
||||||
this.gameStage=gameStage;
|
this.gameStage=gameStage;
|
||||||
setOriginX(getWidth() / 2);
|
setOriginX(getWidth() / 2);
|
||||||
Current.player().onPlayerChanged(()->updatePlayer());
|
Current.player().onPlayerChanged(new Runnable() {
|
||||||
|
@Override
|
||||||
|
public void run() {
|
||||||
|
PlayerSprite.this.updatePlayer();
|
||||||
|
}
|
||||||
|
});
|
||||||
playerSpeed=Config.instance().getConfigData().playerBaseSpeed;
|
playerSpeed=Config.instance().getConfigData().playerBaseSpeed;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1,7 +1,7 @@
|
|||||||
package forge.adventure.character;
|
package forge.adventure.character;
|
||||||
|
|
||||||
import com.badlogic.gdx.utils.Array;
|
import com.badlogic.gdx.utils.Array;
|
||||||
import forge.adventure.AdventureApplicationAdapter;
|
import forge.Forge;
|
||||||
import forge.adventure.scene.RewardScene;
|
import forge.adventure.scene.RewardScene;
|
||||||
import forge.adventure.scene.SceneType;
|
import forge.adventure.scene.SceneType;
|
||||||
import forge.adventure.stage.MapStage;
|
import forge.adventure.stage.MapStage;
|
||||||
@@ -34,7 +34,7 @@ public class ShopActor extends MapActor{
|
|||||||
|
|
||||||
stage.GetPlayer().stop();
|
stage.GetPlayer().stop();
|
||||||
((RewardScene) SceneType.RewardScene.instance).loadRewards(rewardData, RewardScene.Type.Shop,this);
|
((RewardScene) SceneType.RewardScene.instance).loadRewards(rewardData, RewardScene.Type.Shop,this);
|
||||||
AdventureApplicationAdapter.instance.switchScene(SceneType.RewardScene.instance);
|
Forge.switchScene(SceneType.RewardScene.instance);
|
||||||
}
|
}
|
||||||
|
|
||||||
public int getObjectID() {
|
public int getObjectID() {
|
||||||
@@ -1,6 +1,7 @@
|
|||||||
package forge.adventure.data;
|
package forge.adventure.data;
|
||||||
|
|
||||||
import com.badlogic.gdx.utils.Array;
|
import com.badlogic.gdx.utils.Array;
|
||||||
|
import com.google.common.base.Predicate;
|
||||||
import com.google.common.collect.Iterables;
|
import com.google.common.collect.Iterables;
|
||||||
import forge.StaticData;
|
import forge.StaticData;
|
||||||
import forge.adventure.util.CardUtil;
|
import forge.adventure.util.CardUtil;
|
||||||
@@ -9,6 +10,7 @@ import forge.adventure.util.Reward;
|
|||||||
import forge.adventure.world.WorldSave;
|
import forge.adventure.world.WorldSave;
|
||||||
import forge.item.PaperCard;
|
import forge.item.PaperCard;
|
||||||
import forge.model.FModel;
|
import forge.model.FModel;
|
||||||
|
import org.checkerframework.checker.nullness.compatqual.NullableDecl;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@@ -83,9 +85,12 @@ public class RewardData {
|
|||||||
{
|
{
|
||||||
allCards = Iterables.filter(FModel.getMagicDb().getCommonCards().getUniqueCardsNoAlt(), new CardUtil.CardPredicate(legals, true));
|
allCards = Iterables.filter(FModel.getMagicDb().getCommonCards().getUniqueCardsNoAlt(), new CardUtil.CardPredicate(legals, true));
|
||||||
}
|
}
|
||||||
allEnemyCards=Iterables.filter(allCards, input -> {
|
allEnemyCards=Iterables.filter(allCards, new Predicate<PaperCard>() {
|
||||||
|
@Override
|
||||||
|
public boolean apply(@NullableDecl PaperCard input) {
|
||||||
if (input == null) return false;
|
if (input == null) return false;
|
||||||
return !input.getRules().getAiHints().getRemAIDecks();
|
return !input.getRules().getAiHints().getRemAIDecks();
|
||||||
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
Array<Reward> ret=new Array<>();
|
Array<Reward> ret=new Array<>();
|
||||||
@@ -5,7 +5,12 @@ import com.badlogic.gdx.graphics.g2d.TextureRegion;
|
|||||||
import com.google.common.collect.Lists;
|
import com.google.common.collect.Lists;
|
||||||
import forge.adventure.data.DifficultyData;
|
import forge.adventure.data.DifficultyData;
|
||||||
import forge.adventure.data.HeroListData;
|
import forge.adventure.data.HeroListData;
|
||||||
import forge.adventure.util.*;
|
import forge.adventure.util.CardUtil;
|
||||||
|
import forge.adventure.util.Config;
|
||||||
|
import forge.adventure.util.Reward;
|
||||||
|
import forge.adventure.util.SaveFileContent;
|
||||||
|
import forge.adventure.util.SaveFileData;
|
||||||
|
import forge.adventure.util.SignalList;
|
||||||
import forge.adventure.world.WorldSave;
|
import forge.adventure.world.WorldSave;
|
||||||
import forge.deck.CardPool;
|
import forge.deck.CardPool;
|
||||||
import forge.deck.Deck;
|
import forge.deck.Deck;
|
||||||
@@ -5,16 +5,23 @@ import com.badlogic.gdx.utils.Align;
|
|||||||
import com.google.common.base.Function;
|
import com.google.common.base.Function;
|
||||||
import forge.Forge;
|
import forge.Forge;
|
||||||
import forge.Graphics;
|
import forge.Graphics;
|
||||||
import forge.adventure.AdventureApplicationAdapter;
|
|
||||||
import forge.adventure.player.AdventurePlayer;
|
import forge.adventure.player.AdventurePlayer;
|
||||||
import forge.assets.FImage;
|
import forge.assets.FImage;
|
||||||
import forge.assets.FSkinFont;
|
import forge.assets.FSkinFont;
|
||||||
import forge.assets.FSkinImage;
|
import forge.assets.FSkinImage;
|
||||||
import forge.deck.*;
|
import forge.deck.CardPool;
|
||||||
|
import forge.deck.Deck;
|
||||||
|
import forge.deck.DeckFormat;
|
||||||
|
import forge.deck.DeckSection;
|
||||||
|
import forge.deck.FDeckViewer;
|
||||||
import forge.gui.FThreads;
|
import forge.gui.FThreads;
|
||||||
import forge.item.InventoryItem;
|
import forge.item.InventoryItem;
|
||||||
import forge.item.PaperCard;
|
import forge.item.PaperCard;
|
||||||
import forge.itemmanager.*;
|
import forge.itemmanager.CardManager;
|
||||||
|
import forge.itemmanager.ColumnDef;
|
||||||
|
import forge.itemmanager.ItemColumn;
|
||||||
|
import forge.itemmanager.ItemManager;
|
||||||
|
import forge.itemmanager.ItemManagerConfig;
|
||||||
import forge.itemmanager.filters.ItemFilter;
|
import forge.itemmanager.filters.ItemFilter;
|
||||||
import forge.localinstance.properties.ForgePreferences;
|
import forge.localinstance.properties.ForgePreferences;
|
||||||
import forge.menu.FCheckBoxMenuItem;
|
import forge.menu.FCheckBoxMenuItem;
|
||||||
@@ -25,12 +32,16 @@ import forge.model.FModel;
|
|||||||
import forge.screens.FScreen;
|
import forge.screens.FScreen;
|
||||||
import forge.screens.LoadingOverlay;
|
import forge.screens.LoadingOverlay;
|
||||||
import forge.screens.TabPageScreen;
|
import forge.screens.TabPageScreen;
|
||||||
import forge.toolbox.*;
|
import forge.toolbox.FContainer;
|
||||||
|
import forge.toolbox.FEvent;
|
||||||
|
import forge.toolbox.FLabel;
|
||||||
|
import forge.toolbox.GuiChoose;
|
||||||
import forge.util.Callback;
|
import forge.util.Callback;
|
||||||
import forge.util.ItemPool;
|
import forge.util.ItemPool;
|
||||||
import forge.util.Localizer;
|
import forge.util.Localizer;
|
||||||
import forge.util.Utils;
|
import forge.util.Utils;
|
||||||
import org.apache.commons.lang3.StringUtils;
|
import org.apache.commons.lang3.StringUtils;
|
||||||
|
import org.checkerframework.checker.nullness.compatqual.NullableDecl;
|
||||||
|
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
@@ -69,41 +80,48 @@ import java.util.Map;
|
|||||||
((CardManagerPage)page).refresh();
|
((CardManagerPage)page).refresh();
|
||||||
}
|
}
|
||||||
for (TabPage<AdventureDeckEditor> tabPage : tabPages) {
|
for (TabPage<AdventureDeckEditor> tabPage : tabPages) {
|
||||||
((AdventureDeckEditor.DeckEditorPage)tabPage).initialize();
|
((DeckEditorPage)tabPage).initialize();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
private static AdventureDeckEditor.DeckEditorPage[] getPages() {
|
private static DeckEditorPage[] getPages() {
|
||||||
final Localizer localizer = Localizer.getInstance();
|
final Localizer localizer = Localizer.getInstance();
|
||||||
|
|
||||||
return new AdventureDeckEditor.DeckEditorPage[] {
|
return new DeckEditorPage[] {
|
||||||
new AdventureDeckEditor.CatalogPage(ItemManagerConfig.QUEST_EDITOR_POOL, localizer.getMessage("lblInventory"), FSkinImage.QUEST_BOX),
|
new CatalogPage(ItemManagerConfig.QUEST_EDITOR_POOL, localizer.getMessage("lblInventory"), FSkinImage.QUEST_BOX),
|
||||||
new AdventureDeckEditor.DeckSectionPage(DeckSection.Main, ItemManagerConfig.QUEST_DECK_EDITOR),
|
new DeckSectionPage(DeckSection.Main, ItemManagerConfig.QUEST_DECK_EDITOR),
|
||||||
new AdventureDeckEditor.DeckSectionPage(DeckSection.Sideboard, ItemManagerConfig.QUEST_DECK_EDITOR)
|
new DeckSectionPage(DeckSection.Sideboard, ItemManagerConfig.QUEST_DECK_EDITOR)
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
private AdventureDeckEditor.CatalogPage catalogPage;
|
private CatalogPage catalogPage;
|
||||||
private AdventureDeckEditor.DeckSectionPage mainDeckPage;
|
private DeckSectionPage mainDeckPage;
|
||||||
private AdventureDeckEditor.DeckSectionPage sideboardPage;
|
private DeckSectionPage sideboardPage;
|
||||||
private AdventureDeckEditor.DeckSectionPage commanderPage;
|
private DeckSectionPage commanderPage;
|
||||||
|
|
||||||
protected final AdventureDeckEditor.DeckHeader deckHeader = add(new AdventureDeckEditor.DeckHeader());
|
protected final DeckHeader deckHeader = add(new DeckHeader());
|
||||||
protected final FLabel lblName = deckHeader.add(new FLabel.Builder().font(FSkinFont.get(16)).insets(new Vector2(Utils.scale(5), 0)).build());
|
protected final FLabel lblName = deckHeader.add(new FLabel.Builder().font(FSkinFont.get(16)).insets(new Vector2(Utils.scale(5), 0)).build());
|
||||||
private final FLabel btnMoreOptions = deckHeader.add(new FLabel.Builder().text("...").font(FSkinFont.get(20)).align(Align.center).pressedColor(Header.BTN_PRESSED_COLOR).build());
|
private final FLabel btnMoreOptions = deckHeader.add(new FLabel.Builder().text("...").font(FSkinFont.get(20)).align(Align.center).pressedColor(Header.BTN_PRESSED_COLOR).build());
|
||||||
|
|
||||||
|
|
||||||
boolean isShop=false;
|
boolean isShop=false;
|
||||||
public AdventureDeckEditor(boolean createAsShop) {
|
public AdventureDeckEditor(boolean createAsShop) {
|
||||||
super(e -> {AdventurePlayer.current().getNewCards().clear();AdventureApplicationAdapter.instance.switchToLast();},getPages());
|
super(new FEvent.FEventHandler() {
|
||||||
|
@Override
|
||||||
|
public void handleEvent(FEvent e) {
|
||||||
|
AdventurePlayer.current().getNewCards().clear();
|
||||||
|
Forge.clearCurrentScreen();
|
||||||
|
Forge.switchScene(SceneType.DeckSelectScene.instance);
|
||||||
|
}
|
||||||
|
},getPages());
|
||||||
|
|
||||||
isShop=createAsShop;
|
isShop=createAsShop;
|
||||||
|
|
||||||
//cache specific pages
|
//cache specific pages
|
||||||
for (TabPage<AdventureDeckEditor> tabPage : tabPages) {
|
for (TabPage<AdventureDeckEditor> tabPage : tabPages) {
|
||||||
if (tabPage instanceof AdventureDeckEditor.CatalogPage) {
|
if (tabPage instanceof CatalogPage) {
|
||||||
catalogPage = (AdventureDeckEditor.CatalogPage) tabPage;
|
catalogPage = (CatalogPage) tabPage;
|
||||||
}
|
}
|
||||||
else if (tabPage instanceof AdventureDeckEditor.DeckSectionPage) {
|
else if (tabPage instanceof DeckSectionPage) {
|
||||||
AdventureDeckEditor.DeckSectionPage deckSectionPage = (AdventureDeckEditor.DeckSectionPage) tabPage;
|
DeckSectionPage deckSectionPage = (DeckSectionPage) tabPage;
|
||||||
switch (deckSectionPage.deckSection) {
|
switch (deckSectionPage.deckSection) {
|
||||||
case Main:
|
case Main:
|
||||||
case Schemes:
|
case Schemes:
|
||||||
@@ -130,8 +148,13 @@ import java.util.Map;
|
|||||||
protected void buildMenu() {
|
protected void buildMenu() {
|
||||||
final Localizer localizer = Localizer.getInstance();
|
final Localizer localizer = Localizer.getInstance();
|
||||||
|
|
||||||
addItem(new FMenuItem(localizer.getMessage("btnCopyToClipboard"), Forge.hdbuttons ? FSkinImage.HDEXPORT : FSkinImage.BLANK, e1 -> FDeckViewer.copyDeckToClipboard(getDeck())));
|
addItem(new FMenuItem(localizer.getMessage("btnCopyToClipboard"), Forge.hdbuttons ? FSkinImage.HDEXPORT : FSkinImage.BLANK, new FEvent.FEventHandler() {
|
||||||
((AdventureDeckEditor.DeckEditorPage)getSelectedPage()).buildDeckMenu(this);
|
@Override
|
||||||
|
public void handleEvent(FEvent e1) {
|
||||||
|
FDeckViewer.copyDeckToClipboard(getDeck());
|
||||||
|
}
|
||||||
|
}));
|
||||||
|
((DeckEditorPage)getSelectedPage()).buildDeckMenu(this);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
menu.show(btnMoreOptions, 0, btnMoreOptions.getHeight());
|
menu.show(btnMoreOptions, 0, btnMoreOptions.getHeight());
|
||||||
@@ -149,19 +172,19 @@ import java.util.Map;
|
|||||||
public Deck getDeck() {
|
public Deck getDeck() {
|
||||||
return AdventurePlayer.current().getSelectedDeck();
|
return AdventurePlayer.current().getSelectedDeck();
|
||||||
}
|
}
|
||||||
protected AdventureDeckEditor.CatalogPage getCatalogPage() {
|
protected CatalogPage getCatalogPage() {
|
||||||
return catalogPage;
|
return catalogPage;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected AdventureDeckEditor.DeckSectionPage getMainDeckPage() {
|
protected DeckSectionPage getMainDeckPage() {
|
||||||
return mainDeckPage;
|
return mainDeckPage;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected AdventureDeckEditor.DeckSectionPage getSideboardPage() {
|
protected DeckSectionPage getSideboardPage() {
|
||||||
return sideboardPage;
|
return sideboardPage;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected AdventureDeckEditor.DeckSectionPage getCommanderPage() {
|
protected DeckSectionPage getCommanderPage() {
|
||||||
return commanderPage;
|
return commanderPage;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -222,25 +245,54 @@ import java.util.Map;
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
protected static abstract class CardManagerPage extends AdventureDeckEditor.DeckEditorPage {
|
protected static abstract class CardManagerPage extends DeckEditorPage {
|
||||||
private final ItemManagerConfig config;
|
private final ItemManagerConfig config;
|
||||||
protected final CardManager cardManager = add(new CardManager(false));
|
protected final CardManager cardManager = add(new CardManager(false));
|
||||||
|
|
||||||
protected CardManagerPage(ItemManagerConfig config0, String caption0, FImage icon0) {
|
protected CardManagerPage(ItemManagerConfig config0, String caption0, FImage icon0) {
|
||||||
super(caption0, icon0);
|
super(caption0, icon0);
|
||||||
config = config0;
|
config = config0;
|
||||||
cardManager.setItemActivateHandler(e -> onCardActivated(cardManager.getSelectedItem()));
|
cardManager.setItemActivateHandler(new FEvent.FEventHandler() {
|
||||||
|
@Override
|
||||||
|
public void handleEvent(FEvent e) {
|
||||||
|
CardManagerPage.this.onCardActivated(cardManager.getSelectedItem());
|
||||||
|
}
|
||||||
|
});
|
||||||
cardManager.setContextMenuBuilder(new ItemManager.ContextMenuBuilder<PaperCard>() {
|
cardManager.setContextMenuBuilder(new ItemManager.ContextMenuBuilder<PaperCard>() {
|
||||||
@Override
|
@Override
|
||||||
public void buildMenu(final FDropDownMenu menu, final PaperCard card) {
|
public void buildMenu(final FDropDownMenu menu, final PaperCard card) {
|
||||||
AdventureDeckEditor.CardManagerPage.this.buildMenu(menu, card);
|
CardManagerPage.this.buildMenu(menu, card);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
private final Function<Map.Entry<InventoryItem, Integer>, Comparable<?>> fnNewCompare = from -> AdventurePlayer.current().getNewCards().contains(from.getKey()) ? Integer.valueOf(1) : Integer.valueOf(0);
|
private final Function<Map.Entry<InventoryItem, Integer>, Comparable<?>> fnNewCompare = new Function<Map.Entry<InventoryItem, Integer>, Comparable<?>>() {
|
||||||
private final Function<Map.Entry<? extends InventoryItem, Integer>, Object> fnNewGet = from -> AdventurePlayer.current().getNewCards().contains(from.getKey()) ? "NEW" : "";
|
@NullableDecl
|
||||||
public static final Function<Map.Entry<InventoryItem, Integer>, Comparable<?>> fnDeckCompare = from -> decksUsingMyCards.count(from.getKey());
|
@Override
|
||||||
public static final Function<Map.Entry<? extends InventoryItem, Integer>, Object> fnDeckGet = from -> Integer.valueOf(decksUsingMyCards.count(from.getKey())).toString();
|
public Comparable<?> apply(@NullableDecl Map.Entry<InventoryItem, Integer> from) {
|
||||||
|
return AdventurePlayer.current().getNewCards().contains(from.getKey()) ? Integer.valueOf(1) : Integer.valueOf(0);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
private final Function<Map.Entry<? extends InventoryItem, Integer>, Object> fnNewGet = new Function<Map.Entry<? extends InventoryItem, Integer>, Object>() {
|
||||||
|
@NullableDecl
|
||||||
|
@Override
|
||||||
|
public Object apply(@NullableDecl Map.Entry<? extends InventoryItem, Integer> from) {
|
||||||
|
return AdventurePlayer.current().getNewCards().contains(from.getKey()) ? "NEW" : "";
|
||||||
|
}
|
||||||
|
};
|
||||||
|
public static final Function<Map.Entry<InventoryItem, Integer>, Comparable<?>> fnDeckCompare = new Function<Map.Entry<InventoryItem, Integer>, Comparable<?>>() {
|
||||||
|
@NullableDecl
|
||||||
|
@Override
|
||||||
|
public Comparable<?> apply(@NullableDecl Map.Entry<InventoryItem, Integer> from) {
|
||||||
|
return decksUsingMyCards.count(from.getKey());
|
||||||
|
}
|
||||||
|
};
|
||||||
|
public static final Function<Map.Entry<? extends InventoryItem, Integer>, Object> fnDeckGet = new Function<Map.Entry<? extends InventoryItem, Integer>, Object>() {
|
||||||
|
@NullableDecl
|
||||||
|
@Override
|
||||||
|
public Object apply(@NullableDecl Map.Entry<? extends InventoryItem, Integer> from) {
|
||||||
|
return Integer.valueOf(decksUsingMyCards.count(from.getKey())).toString();
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
protected void initialize() {
|
protected void initialize() {
|
||||||
|
|
||||||
@@ -370,13 +422,16 @@ import java.util.Map;
|
|||||||
if (!StringUtils.isEmpty(dest)) {
|
if (!StringUtils.isEmpty(dest)) {
|
||||||
label += " " + dest;
|
label += " " + dest;
|
||||||
}
|
}
|
||||||
menu.addItem(new FMenuItem(label, icon, e -> {
|
menu.addItem(new FMenuItem(label, icon, new FEvent.FEventHandler() {
|
||||||
|
@Override
|
||||||
|
public void handleEvent(FEvent e) {
|
||||||
if (max == 1) {
|
if (max == 1) {
|
||||||
callback.run(max);
|
callback.run(max);
|
||||||
} else {
|
} else {
|
||||||
final Localizer localizer = Localizer.getInstance();
|
final Localizer localizer = Localizer.getInstance();
|
||||||
GuiChoose.getInteger(cardManager.getSelectedItem() + " - " + verb + " " + localizer.getMessage("lblHowMany"), 1, max, 20, callback);
|
GuiChoose.getInteger(cardManager.getSelectedItem() + " - " + verb + " " + localizer.getMessage("lblHowMany"), 1, max, 20, callback);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
}));
|
}));
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -488,7 +543,7 @@ import java.util.Map;
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
protected static class CatalogPage extends AdventureDeckEditor.CardManagerPage {
|
protected static class CatalogPage extends CardManagerPage {
|
||||||
private boolean initialized, needRefreshWhenShown;
|
private boolean initialized, needRefreshWhenShown;
|
||||||
|
|
||||||
protected CatalogPage(ItemManagerConfig config, String caption0, FImage icon0) {
|
protected CatalogPage(ItemManagerConfig config, String caption0, FImage icon0) {
|
||||||
@@ -537,7 +592,12 @@ import java.util.Map;
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void refresh() {
|
public void refresh() {
|
||||||
FThreads.invokeInEdtLater(() -> LoadingOverlay.show(Localizer.getInstance().getMessage("lblLoading"), () -> {
|
FThreads.invokeInEdtLater(new Runnable() {
|
||||||
|
@Override
|
||||||
|
public void run() {
|
||||||
|
LoadingOverlay.show(Localizer.getInstance().getMessage("lblLoading"), new Runnable() {
|
||||||
|
@Override
|
||||||
|
public void run() {
|
||||||
final ItemPool<PaperCard> adventurePool = new ItemPool<>(PaperCard.class);
|
final ItemPool<PaperCard> adventurePool = new ItemPool<>(PaperCard.class);
|
||||||
|
|
||||||
adventurePool.addAll(AdventurePlayer.current().getCards());
|
adventurePool.addAll(AdventurePlayer.current().getCards());
|
||||||
@@ -546,7 +606,10 @@ import java.util.Map;
|
|||||||
// remove sideboard cards from the catalog
|
// remove sideboard cards from the catalog
|
||||||
adventurePool.removeAll(AdventurePlayer.current().getSelectedDeck().getOrCreate(DeckSection.Sideboard));
|
adventurePool.removeAll(AdventurePlayer.current().getSelectedDeck().getOrCreate(DeckSection.Sideboard));
|
||||||
cardManager.setPool(adventurePool);
|
cardManager.setPool(adventurePool);
|
||||||
}));
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -621,17 +684,20 @@ import java.util.Map;
|
|||||||
protected void buildDeckMenu(FPopupMenu menu) {
|
protected void buildDeckMenu(FPopupMenu menu) {
|
||||||
if (cardManager.getConfig().getShowUniqueCardsOption()) {
|
if (cardManager.getConfig().getShowUniqueCardsOption()) {
|
||||||
final Localizer localizer = Localizer.getInstance();
|
final Localizer localizer = Localizer.getInstance();
|
||||||
menu.addItem(new FCheckBoxMenuItem(localizer.getMessage("lblUniqueCardsOnly"), cardManager.getWantUnique(), e -> {
|
menu.addItem(new FCheckBoxMenuItem(localizer.getMessage("lblUniqueCardsOnly"), cardManager.getWantUnique(), new FEvent.FEventHandler() {
|
||||||
|
@Override
|
||||||
|
public void handleEvent(FEvent e) {
|
||||||
boolean wantUnique = !cardManager.getWantUnique();
|
boolean wantUnique = !cardManager.getWantUnique();
|
||||||
cardManager.setWantUnique(wantUnique);
|
cardManager.setWantUnique(wantUnique);
|
||||||
refresh();
|
CatalogPage.this.refresh();
|
||||||
cardManager.getConfig().setUniqueCardsOnly(wantUnique);
|
cardManager.getConfig().setUniqueCardsOnly(wantUnique);
|
||||||
|
}
|
||||||
}));
|
}));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
protected static class DeckSectionPage extends AdventureDeckEditor.CardManagerPage {
|
protected static class DeckSectionPage extends CardManagerPage {
|
||||||
private final String captionPrefix;
|
private final String captionPrefix;
|
||||||
private final DeckSection deckSection;
|
private final DeckSection deckSection;
|
||||||
|
|
||||||
@@ -3,14 +3,19 @@ package forge.adventure.scene;
|
|||||||
import com.badlogic.gdx.Input;
|
import com.badlogic.gdx.Input;
|
||||||
import com.badlogic.gdx.graphics.Color;
|
import com.badlogic.gdx.graphics.Color;
|
||||||
import com.badlogic.gdx.scenes.scene2d.InputEvent;
|
import com.badlogic.gdx.scenes.scene2d.InputEvent;
|
||||||
import com.badlogic.gdx.scenes.scene2d.ui.*;
|
import com.badlogic.gdx.scenes.scene2d.ui.Dialog;
|
||||||
|
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.utils.Align;
|
import com.badlogic.gdx.utils.Align;
|
||||||
import com.badlogic.gdx.utils.IntMap;
|
import com.badlogic.gdx.utils.IntMap;
|
||||||
import forge.adventure.AdventureApplicationAdapter;
|
import forge.Forge;
|
||||||
|
import forge.adventure.player.AdventurePlayer;
|
||||||
import forge.adventure.util.Controls;
|
import forge.adventure.util.Controls;
|
||||||
import forge.adventure.util.Current;
|
import forge.adventure.util.Current;
|
||||||
import forge.adventure.player.AdventurePlayer;
|
|
||||||
|
|
||||||
public class DeckSelectScene extends UIScene {
|
public class DeckSelectScene extends UIScene {
|
||||||
private final IntMap<TextButton> buttons = new IntMap<>();
|
private final IntMap<TextButton> buttons = new IntMap<>();
|
||||||
@@ -51,7 +56,7 @@ public class DeckSelectScene extends UIScene {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void back() {
|
public void back() {
|
||||||
AdventureApplicationAdapter.instance.switchToLast();
|
Forge.switchScene(SceneType.GameScene.instance);
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean select(int slot) {
|
public boolean select(int slot) {
|
||||||
@@ -114,15 +119,38 @@ public class DeckSelectScene extends UIScene {
|
|||||||
dialog.getButtonTable().add(Controls.newLabel("Name:")).align(Align.left);
|
dialog.getButtonTable().add(Controls.newLabel("Name:")).align(Align.left);
|
||||||
dialog.getButtonTable().add(textInput).fillX().expandX();
|
dialog.getButtonTable().add(textInput).fillX().expandX();
|
||||||
dialog.getButtonTable().row();
|
dialog.getButtonTable().row();
|
||||||
dialog.getButtonTable().add(Controls.newTextButton("Rename", () -> rename())).align(Align.left);
|
dialog.getButtonTable().add(Controls.newTextButton("Rename", new Runnable() {
|
||||||
dialog.getButtonTable().add(Controls.newTextButton("Abort", () -> dialog.hide())).align(Align.left);
|
@Override
|
||||||
|
public void run() {
|
||||||
|
DeckSelectScene.this.rename();
|
||||||
|
}
|
||||||
|
})).align(Align.left);
|
||||||
|
dialog.getButtonTable().add(Controls.newTextButton("Abort", new Runnable() {
|
||||||
|
@Override
|
||||||
|
public void run() {
|
||||||
|
dialog.hide();
|
||||||
|
}
|
||||||
|
})).align(Align.left);
|
||||||
|
|
||||||
ui.onButtonPress("return",()-> back());
|
ui.onButtonPress("return", new Runnable() {
|
||||||
ui.onButtonPress("edit",()-> edit());
|
@Override
|
||||||
ui.onButtonPress("rename",()-> {
|
public void run() {
|
||||||
|
DeckSelectScene.this.back();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
ui.onButtonPress("edit", new Runnable() {
|
||||||
|
@Override
|
||||||
|
public void run() {
|
||||||
|
DeckSelectScene.this.edit();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
ui.onButtonPress("rename", new Runnable() {
|
||||||
|
@Override
|
||||||
|
public void run() {
|
||||||
textInput.setText(Current.player().getSelectedDeck().getName());
|
textInput.setText(Current.player().getSelectedDeck().getName());
|
||||||
dialog.show(stage);
|
dialog.show(stage);
|
||||||
stage.setKeyboardFocus(textInput);
|
stage.setKeyboardFocus(textInput);
|
||||||
|
}
|
||||||
});
|
});
|
||||||
defColor = ui.findActor("return").getColor();
|
defColor = ui.findActor("return").getColor();
|
||||||
|
|
||||||
@@ -139,6 +167,6 @@ public class DeckSelectScene extends UIScene {
|
|||||||
}
|
}
|
||||||
private void edit() {
|
private void edit() {
|
||||||
|
|
||||||
AdventureApplicationAdapter.instance.switchScene(SceneType.DeckEditScene.instance);
|
Forge.switchScene(SceneType.DeckEditScene.instance);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1,13 +1,13 @@
|
|||||||
package forge.adventure.scene;
|
package forge.adventure.scene;
|
||||||
|
|
||||||
import com.badlogic.gdx.Gdx;
|
import com.badlogic.gdx.Gdx;
|
||||||
|
import forge.Forge;
|
||||||
import forge.LobbyPlayer;
|
import forge.LobbyPlayer;
|
||||||
import forge.adventure.AdventureApplicationAdapter;
|
|
||||||
import forge.adventure.character.EnemySprite;
|
import forge.adventure.character.EnemySprite;
|
||||||
import forge.adventure.character.PlayerSprite;
|
import forge.adventure.character.PlayerSprite;
|
||||||
|
import forge.adventure.player.AdventurePlayer;
|
||||||
import forge.adventure.util.Config;
|
import forge.adventure.util.Config;
|
||||||
import forge.adventure.util.Current;
|
import forge.adventure.util.Current;
|
||||||
import forge.adventure.player.AdventurePlayer;
|
|
||||||
import forge.assets.FSkin;
|
import forge.assets.FSkin;
|
||||||
import forge.deck.Deck;
|
import forge.deck.Deck;
|
||||||
import forge.game.GameRules;
|
import forge.game.GameRules;
|
||||||
@@ -24,7 +24,12 @@ import forge.sound.MusicPlaylist;
|
|||||||
import forge.sound.SoundSystem;
|
import forge.sound.SoundSystem;
|
||||||
import forge.trackable.TrackableCollection;
|
import forge.trackable.TrackableCollection;
|
||||||
|
|
||||||
import java.util.*;
|
import java.util.ArrayList;
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.HashSet;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
import java.util.Set;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* DuelScene
|
* DuelScene
|
||||||
@@ -49,15 +54,17 @@ public class DuelScene extends ForgeScene {
|
|||||||
public void GameEnd() {
|
public void GameEnd() {
|
||||||
boolean winner=humanPlayer == hostedMatch.getGame().getMatch().getWinner();
|
boolean winner=humanPlayer == hostedMatch.getGame().getMatch().getWinner();
|
||||||
String enemyName=enemy.getData().name;
|
String enemyName=enemy.getData().name;
|
||||||
Gdx.app.postRunnable(() -> {
|
Gdx.app.postRunnable(new Runnable() {
|
||||||
|
@Override
|
||||||
|
public void run() {
|
||||||
SoundSystem.instance.setBackgroundMusic(MusicPlaylist.MENUS); //start background music
|
SoundSystem.instance.setBackgroundMusic(MusicPlaylist.MENUS); //start background music
|
||||||
Scene last= AdventureApplicationAdapter.instance.switchToLast();
|
Scene last = Forge.switchToLast();
|
||||||
|
|
||||||
if(last instanceof HudScene)
|
if (last instanceof HudScene) {
|
||||||
{
|
|
||||||
Current.player().getStatistic().setResult(enemyName, winner);
|
Current.player().getStatistic().setResult(enemyName, winner);
|
||||||
((HudScene) last).stage.setWinner(winner);
|
((HudScene) last).stage.setWinner(winner);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
@@ -105,7 +112,12 @@ public class DuelScene extends ForgeScene {
|
|||||||
rules.setGamesPerMatch(1);
|
rules.setGamesPerMatch(1);
|
||||||
rules.setManaBurn(false);
|
rules.setManaBurn(false);
|
||||||
|
|
||||||
hostedMatch.setEndGameHook(() -> GameEnd());
|
hostedMatch.setEndGameHook(new Runnable() {
|
||||||
|
@Override
|
||||||
|
public void run() {
|
||||||
|
DuelScene.this.GameEnd();
|
||||||
|
}
|
||||||
|
});
|
||||||
hostedMatch.startMatch(rules, appliedVariants, players, guiMap);
|
hostedMatch.startMatch(rules, appliedVariants, players, guiMap);
|
||||||
|
|
||||||
MatchController.instance.setGameView(hostedMatch.getGameView());
|
MatchController.instance.setGameView(hostedMatch.getGameView());
|
||||||
@@ -2,13 +2,14 @@ package forge.adventure.scene;
|
|||||||
|
|
||||||
import com.badlogic.gdx.Input;
|
import com.badlogic.gdx.Input;
|
||||||
import forge.Forge;
|
import forge.Forge;
|
||||||
|
import forge.gui.GuiBase;
|
||||||
|
import forge.gui.error.BugReporter;
|
||||||
import forge.screens.match.MatchController;
|
import forge.screens.match.MatchController;
|
||||||
import forge.toolbox.FContainer;
|
import forge.toolbox.FContainer;
|
||||||
import forge.toolbox.FDisplayObject;
|
import forge.toolbox.FDisplayObject;
|
||||||
import forge.toolbox.FGestureAdapter;
|
import forge.toolbox.FGestureAdapter;
|
||||||
import forge.toolbox.FOverlay;
|
import forge.toolbox.FOverlay;
|
||||||
import forge.util.Utils;
|
import forge.util.Utils;
|
||||||
import forge.gui.error.BugReporter;
|
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@@ -280,6 +281,20 @@ public class ForgeInput extends FGestureAdapter {
|
|||||||
public boolean mouseMoved(int x, int y) {
|
public boolean mouseMoved(int x, int y) {
|
||||||
mouseMovedX = x;
|
mouseMovedX = x;
|
||||||
mouseMovedY = y;
|
mouseMovedY = y;
|
||||||
|
//todo: mouse listener for android?
|
||||||
|
if (GuiBase.isAndroid())
|
||||||
|
return true;
|
||||||
|
Forge.hoveredCount = 0;
|
||||||
|
//reset
|
||||||
|
try {
|
||||||
|
for (FDisplayObject listener : potentialListeners) {
|
||||||
|
listener.setHovered(false);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (Exception ex) {
|
||||||
|
BugReporter.reportException(ex);
|
||||||
|
}
|
||||||
|
updatePotentialListeners(x, y);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -2,16 +2,15 @@ package forge.adventure.scene;
|
|||||||
|
|
||||||
import com.badlogic.gdx.Gdx;
|
import com.badlogic.gdx.Gdx;
|
||||||
import com.badlogic.gdx.graphics.GL20;
|
import com.badlogic.gdx.graphics.GL20;
|
||||||
import forge.adventure.AdventureApplicationAdapter;
|
|
||||||
import forge.Forge;
|
import forge.Forge;
|
||||||
import forge.Graphics;
|
import forge.Graphics;
|
||||||
import forge.animation.ForgeAnimation;
|
import forge.animation.ForgeAnimation;
|
||||||
import forge.assets.ImageCache;
|
import forge.assets.ImageCache;
|
||||||
|
import forge.gamemodes.match.LobbySlotType;
|
||||||
|
import forge.interfaces.IUpdateable;
|
||||||
import forge.screens.FScreen;
|
import forge.screens.FScreen;
|
||||||
import forge.toolbox.FDisplayObject;
|
import forge.toolbox.FDisplayObject;
|
||||||
import forge.toolbox.FOverlay;
|
import forge.toolbox.FOverlay;
|
||||||
import forge.gamemodes.match.LobbySlotType;
|
|
||||||
import forge.interfaces.IUpdateable;
|
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
@@ -35,10 +34,10 @@ public abstract class ForgeScene extends Scene implements IUpdateable {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
localGraphics.begin(AdventureApplicationAdapter.instance.getCurrentWidth(), AdventureApplicationAdapter.instance.getCurrentHeight());
|
localGraphics.begin(Forge.getScreenWidth(), Forge.getScreenHeight());
|
||||||
getScreen().screenPos.setSize(AdventureApplicationAdapter.instance.getCurrentWidth(), AdventureApplicationAdapter.instance.getCurrentHeight());
|
getScreen().screenPos.setSize(Forge.getScreenWidth(), Forge.getScreenHeight());
|
||||||
if (getScreen().getRotate180()) {
|
if (getScreen().getRotate180()) {
|
||||||
localGraphics.startRotateTransform(AdventureApplicationAdapter.instance.getCurrentWidth() / 2f, AdventureApplicationAdapter.instance.getCurrentHeight() / 2f, 180);
|
localGraphics.startRotateTransform( Forge.getScreenWidth() / 2f, Forge.getScreenHeight() / 2f, 180);
|
||||||
}
|
}
|
||||||
getScreen().draw(localGraphics);
|
getScreen().draw(localGraphics);
|
||||||
if (getScreen().getRotate180()) {
|
if (getScreen().getRotate180()) {
|
||||||
@@ -46,10 +45,10 @@ public abstract class ForgeScene extends Scene implements IUpdateable {
|
|||||||
}
|
}
|
||||||
for (FOverlay overlay : FOverlay.getOverlays()) {
|
for (FOverlay overlay : FOverlay.getOverlays()) {
|
||||||
if (overlay.isVisibleOnScreen(getScreen())) {
|
if (overlay.isVisibleOnScreen(getScreen())) {
|
||||||
overlay.screenPos.setSize(AdventureApplicationAdapter.instance.getCurrentWidth(), AdventureApplicationAdapter.instance.getCurrentHeight());
|
overlay.screenPos.setSize(Forge.getScreenWidth(), Forge.getScreenHeight());
|
||||||
overlay.setSize(AdventureApplicationAdapter.instance.getCurrentWidth(), AdventureApplicationAdapter.instance.getCurrentHeight()); //update overlay sizes as they're rendered
|
overlay.setSize(Forge.getScreenWidth(), Forge.getScreenHeight()); //update overlay sizes as they're rendered
|
||||||
if (overlay.getRotate180()) {
|
if (overlay.getRotate180()) {
|
||||||
localGraphics.startRotateTransform(AdventureApplicationAdapter.instance.getCurrentHeight() / 2f, AdventureApplicationAdapter.instance.getCurrentHeight() / 2f, 180);
|
localGraphics.startRotateTransform(Forge.getScreenWidth() / 2f, Forge.getScreenHeight() / 2f, 180);
|
||||||
}
|
}
|
||||||
overlay.draw(localGraphics);
|
overlay.draw(localGraphics);
|
||||||
if (overlay.getRotate180()) {
|
if (overlay.getRotate180()) {
|
||||||
@@ -73,7 +72,7 @@ public abstract class ForgeScene extends Scene implements IUpdateable {
|
|||||||
public void enter() {
|
public void enter() {
|
||||||
FOverlay.hideAll();
|
FOverlay.hideAll();
|
||||||
if(getScreen()!=null)
|
if(getScreen()!=null)
|
||||||
getScreen().setSize(AdventureApplicationAdapter.instance.getCurrentWidth(), AdventureApplicationAdapter.instance.getCurrentHeight());
|
getScreen().setSize(Forge.getScreenWidth(), Forge.getScreenHeight());
|
||||||
|
|
||||||
Forge.openScreen(getScreen());
|
Forge.openScreen(getScreen());
|
||||||
Gdx.input.setInputProcessor(input);
|
Gdx.input.setInputProcessor(input);
|
||||||
@@ -88,7 +87,7 @@ public abstract class ForgeScene extends Scene implements IUpdateable {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void resLoaded() {
|
public void resLoaded() {
|
||||||
localGraphics = AdventureApplicationAdapter.instance.getGraphics();
|
localGraphics = Forge.getGraphics();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -2,7 +2,7 @@ package forge.adventure.scene;
|
|||||||
|
|
||||||
import com.badlogic.gdx.Input;
|
import com.badlogic.gdx.Input;
|
||||||
import com.badlogic.gdx.scenes.scene2d.ui.TextButton;
|
import com.badlogic.gdx.scenes.scene2d.ui.TextButton;
|
||||||
import forge.adventure.AdventureApplicationAdapter;
|
import forge.Forge;
|
||||||
import forge.adventure.util.Current;
|
import forge.adventure.util.Current;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -18,7 +18,7 @@ public class InnScene extends UIScene {
|
|||||||
|
|
||||||
public void done()
|
public void done()
|
||||||
{
|
{
|
||||||
AdventureApplicationAdapter.instance.switchToLast();
|
Forge.switchToLast();
|
||||||
}
|
}
|
||||||
public void heal()
|
public void heal()
|
||||||
{
|
{
|
||||||
@@ -33,14 +33,29 @@ public class InnScene extends UIScene {
|
|||||||
@Override
|
@Override
|
||||||
public void resLoaded() {
|
public void resLoaded() {
|
||||||
super.resLoaded();
|
super.resLoaded();
|
||||||
ui.onButtonPress("done",()->done());
|
ui.onButtonPress("done", new Runnable() {
|
||||||
ui.onButtonPress("heal",()->heal());
|
@Override
|
||||||
ui.onButtonPress("sell",()->sell());
|
public void run() {
|
||||||
|
InnScene.this.done();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
ui.onButtonPress("heal", new Runnable() {
|
||||||
|
@Override
|
||||||
|
public void run() {
|
||||||
|
InnScene.this.heal();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
ui.onButtonPress("sell", new Runnable() {
|
||||||
|
@Override
|
||||||
|
public void run() {
|
||||||
|
InnScene.this.sell();
|
||||||
|
}
|
||||||
|
});
|
||||||
TextButton doneButton = ui.findActor("done");
|
TextButton doneButton = ui.findActor("done");
|
||||||
}
|
}
|
||||||
|
|
||||||
private void sell() {
|
private void sell() {
|
||||||
AdventureApplicationAdapter.instance.switchScene(SceneType.ShopScene.instance);
|
Forge.switchScene(SceneType.ShopScene.instance);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -1,11 +1,13 @@
|
|||||||
package forge.adventure.scene;
|
package forge.adventure.scene;
|
||||||
|
|
||||||
import com.badlogic.gdx.Gdx;
|
import com.badlogic.gdx.Gdx;
|
||||||
|
import com.badlogic.gdx.scenes.scene2d.Event;
|
||||||
|
import com.badlogic.gdx.scenes.scene2d.EventListener;
|
||||||
import com.badlogic.gdx.scenes.scene2d.ui.Image;
|
import com.badlogic.gdx.scenes.scene2d.ui.Image;
|
||||||
import com.badlogic.gdx.scenes.scene2d.ui.TextField;
|
import com.badlogic.gdx.scenes.scene2d.ui.TextField;
|
||||||
import com.badlogic.gdx.scenes.scene2d.utils.TextureRegionDrawable;
|
import com.badlogic.gdx.scenes.scene2d.utils.TextureRegionDrawable;
|
||||||
import com.badlogic.gdx.utils.Array;
|
import com.badlogic.gdx.utils.Array;
|
||||||
import forge.adventure.AdventureApplicationAdapter;
|
import forge.Forge;
|
||||||
import forge.adventure.data.DifficultyData;
|
import forge.adventure.data.DifficultyData;
|
||||||
import forge.adventure.data.HeroListData;
|
import forge.adventure.data.HeroListData;
|
||||||
import forge.adventure.util.Config;
|
import forge.adventure.util.Config;
|
||||||
@@ -47,12 +49,12 @@ public class NewGameScene extends UIScene {
|
|||||||
GamePlayerUtil.getGuiPlayer().setName(selectedName.getText());
|
GamePlayerUtil.getGuiPlayer().setName(selectedName.getText());
|
||||||
//image = new Texture(img);
|
//image = new Texture(img);
|
||||||
|
|
||||||
AdventureApplicationAdapter.instance.switchScene(SceneType.GameScene.instance);
|
Forge.switchScene(SceneType.GameScene.instance);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean back() {
|
public boolean back() {
|
||||||
AdventureApplicationAdapter.instance.switchScene(SceneType.StartScene.instance);
|
Forge.switchScene(SceneType.StartScene.instance);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -64,7 +66,12 @@ public class NewGameScene extends UIScene {
|
|||||||
avatarImage = ui.findActor("avatarPreview");
|
avatarImage = ui.findActor("avatarPreview");
|
||||||
gender = ui.findActor("gender");
|
gender = ui.findActor("gender");
|
||||||
gender.setTextList(new String[]{"Male", "Female"});
|
gender.setTextList(new String[]{"Male", "Female"});
|
||||||
gender.addListener(event -> updateAvatar());
|
gender.addListener(new EventListener() {
|
||||||
|
@Override
|
||||||
|
public boolean handle(Event event) {
|
||||||
|
return NewGameScene.this.updateAvatar();
|
||||||
|
}
|
||||||
|
});
|
||||||
Random rand=new Random();
|
Random rand=new Random();
|
||||||
|
|
||||||
deck = ui.findActor("deck");
|
deck = ui.findActor("deck");
|
||||||
@@ -77,7 +84,12 @@ public class NewGameScene extends UIScene {
|
|||||||
deck.setTextList(stringList);
|
deck.setTextList(stringList);
|
||||||
|
|
||||||
race = ui.findActor("race");
|
race = ui.findActor("race");
|
||||||
race.addListener(event -> updateAvatar());
|
race.addListener(new EventListener() {
|
||||||
|
@Override
|
||||||
|
public boolean handle(Event event) {
|
||||||
|
return NewGameScene.this.updateAvatar();
|
||||||
|
}
|
||||||
|
});
|
||||||
race.setTextList(HeroListData.getRaces());
|
race.setTextList(HeroListData.getRaces());
|
||||||
difficulty = ui.findActor("difficulty");
|
difficulty = ui.findActor("difficulty");
|
||||||
|
|
||||||
@@ -97,10 +109,30 @@ public class NewGameScene extends UIScene {
|
|||||||
gender.setCurrentIndex(rand.nextInt());
|
gender.setCurrentIndex(rand.nextInt());
|
||||||
deck.setCurrentIndex(rand.nextInt());
|
deck.setCurrentIndex(rand.nextInt());
|
||||||
race.setCurrentIndex(rand.nextInt());
|
race.setCurrentIndex(rand.nextInt());
|
||||||
ui.onButtonPress("back", this::back);
|
ui.onButtonPress("back", new Runnable() {
|
||||||
ui.onButtonPress("start", this::start);
|
@Override
|
||||||
ui.onButtonPress("leftAvatar", this::leftAvatar);
|
public void run() {
|
||||||
ui.onButtonPress("rightAvatar", this::rightAvatar);
|
NewGameScene.this.back();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
ui.onButtonPress("start", new Runnable() {
|
||||||
|
@Override
|
||||||
|
public void run() {
|
||||||
|
NewGameScene.this.start();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
ui.onButtonPress("leftAvatar", new Runnable() {
|
||||||
|
@Override
|
||||||
|
public void run() {
|
||||||
|
NewGameScene.this.leftAvatar();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
ui.onButtonPress("rightAvatar", new Runnable() {
|
||||||
|
@Override
|
||||||
|
public void run() {
|
||||||
|
NewGameScene.this.rightAvatar();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
updateAvatar();
|
updateAvatar();
|
||||||
}
|
}
|
||||||
@@ -7,7 +7,7 @@ import com.badlogic.gdx.scenes.scene2d.ui.ScrollPane;
|
|||||||
import com.badlogic.gdx.scenes.scene2d.ui.Table;
|
import com.badlogic.gdx.scenes.scene2d.ui.Table;
|
||||||
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;
|
||||||
import forge.adventure.AdventureApplicationAdapter;
|
import forge.Forge;
|
||||||
import forge.adventure.character.EnemySprite;
|
import forge.adventure.character.EnemySprite;
|
||||||
import forge.adventure.data.EnemyData;
|
import forge.adventure.data.EnemyData;
|
||||||
import forge.adventure.data.WorldData;
|
import forge.adventure.data.WorldData;
|
||||||
@@ -46,7 +46,7 @@ public class PlayerStatisticScene extends UIScene {
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
public boolean back() {
|
public boolean back() {
|
||||||
AdventureApplicationAdapter.instance.switchToLast();
|
Forge.switchToLast();
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@Override
|
@Override
|
||||||
@@ -101,7 +101,12 @@ public class PlayerStatisticScene extends UIScene {
|
|||||||
enemiesGroup = new Table(Controls.GetSkin());
|
enemiesGroup = new Table(Controls.GetSkin());
|
||||||
|
|
||||||
enemiesGroup.row();
|
enemiesGroup.row();
|
||||||
ui.onButtonPress("return", () -> back());
|
ui.onButtonPress("return", new Runnable() {
|
||||||
|
@Override
|
||||||
|
public void run() {
|
||||||
|
PlayerStatisticScene.this.back();
|
||||||
|
}
|
||||||
|
});
|
||||||
avatar=ui.findActor("avatar");
|
avatar=ui.findActor("avatar");
|
||||||
|
|
||||||
totalWins=ui.findActor("totalWins");
|
totalWins=ui.findActor("totalWins");
|
||||||
@@ -7,16 +7,16 @@ import com.badlogic.gdx.scenes.scene2d.InputEvent;
|
|||||||
import com.badlogic.gdx.scenes.scene2d.ui.TextButton;
|
import com.badlogic.gdx.scenes.scene2d.ui.TextButton;
|
||||||
import com.badlogic.gdx.scenes.scene2d.utils.ClickListener;
|
import com.badlogic.gdx.scenes.scene2d.utils.ClickListener;
|
||||||
import com.badlogic.gdx.utils.Array;
|
import com.badlogic.gdx.utils.Array;
|
||||||
import forge.adventure.AdventureApplicationAdapter;
|
import forge.Forge;
|
||||||
import forge.adventure.character.ShopActor;
|
import forge.adventure.character.ShopActor;
|
||||||
import forge.assets.ImageCache;
|
import forge.adventure.player.AdventurePlayer;
|
||||||
|
import forge.adventure.pointofintrest.PointOfInterestChanges;
|
||||||
import forge.adventure.util.CardUtil;
|
import forge.adventure.util.CardUtil;
|
||||||
import forge.adventure.util.Current;
|
import forge.adventure.util.Current;
|
||||||
import forge.adventure.util.Reward;
|
import forge.adventure.util.Reward;
|
||||||
import forge.adventure.util.RewardActor;
|
import forge.adventure.util.RewardActor;
|
||||||
import forge.adventure.player.AdventurePlayer;
|
|
||||||
import forge.adventure.pointofintrest.PointOfInterestChanges;
|
|
||||||
import forge.adventure.world.WorldSave;
|
import forge.adventure.world.WorldSave;
|
||||||
|
import forge.assets.ImageCache;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Displays the rewards of a fight or a treasure
|
* Displays the rewards of a fight or a treasure
|
||||||
@@ -73,12 +73,12 @@ public class RewardScene extends UIScene {
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
AdventureApplicationAdapter.instance.switchToLast();
|
Forge.switchToLast();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
AdventureApplicationAdapter.instance.switchToLast();
|
Forge.switchToLast();
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@@ -93,14 +93,19 @@ public class RewardScene extends UIScene {
|
|||||||
flipCountDown-=Gdx.graphics.getDeltaTime();
|
flipCountDown-=Gdx.graphics.getDeltaTime();
|
||||||
if(flipCountDown<=0)
|
if(flipCountDown<=0)
|
||||||
{
|
{
|
||||||
AdventureApplicationAdapter.instance.switchToLast();
|
Forge.switchToLast();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@Override
|
@Override
|
||||||
public void resLoaded() {
|
public void resLoaded() {
|
||||||
super.resLoaded();
|
super.resLoaded();
|
||||||
ui.onButtonPress("done",()->done());
|
ui.onButtonPress("done", new Runnable() {
|
||||||
|
@Override
|
||||||
|
public void run() {
|
||||||
|
RewardScene.this.done();
|
||||||
|
}
|
||||||
|
});
|
||||||
doneButton=ui.findActor("done");
|
doneButton=ui.findActor("done");
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -4,13 +4,19 @@ 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.*;
|
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.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;
|
||||||
import com.badlogic.gdx.utils.GdxRuntimeException;
|
import com.badlogic.gdx.utils.GdxRuntimeException;
|
||||||
import com.badlogic.gdx.utils.IntMap;
|
import com.badlogic.gdx.utils.IntMap;
|
||||||
import forge.adventure.AdventureApplicationAdapter;
|
import forge.Forge;
|
||||||
import forge.adventure.util.Controls;
|
import forge.adventure.util.Controls;
|
||||||
import forge.adventure.world.WorldSave;
|
import forge.adventure.world.WorldSave;
|
||||||
import forge.adventure.world.WorldSaveHeader;
|
import forge.adventure.world.WorldSaveHeader;
|
||||||
@@ -69,7 +75,7 @@ public class SaveLoadScene extends UIScene {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void back() {
|
public void back() {
|
||||||
AdventureApplicationAdapter.instance.switchToLast();
|
Forge.switchToLast();
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean select(int slot) {
|
public boolean select(int slot) {
|
||||||
@@ -100,7 +106,7 @@ public class SaveLoadScene extends UIScene {
|
|||||||
stage.setKeyboardFocus(textInput);
|
stage.setKeyboardFocus(textInput);
|
||||||
} else {
|
} else {
|
||||||
if(WorldSave.load(currentSlot))
|
if(WorldSave.load(currentSlot))
|
||||||
AdventureApplicationAdapter.instance.switchScene(SceneType.GameScene.instance);
|
Forge.switchScene(SceneType.GameScene.instance);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -124,7 +130,7 @@ public class SaveLoadScene extends UIScene {
|
|||||||
if( WorldSave.getCurrentSave().save(textInput.getText(), currentSlot))
|
if( WorldSave.getCurrentSave().save(textInput.getText(), currentSlot))
|
||||||
{
|
{
|
||||||
updateFiles();
|
updateFiles();
|
||||||
AdventureApplicationAdapter.instance.switchScene(SceneType.GameScene.instance);
|
Forge.switchScene(SceneType.GameScene.instance);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -196,8 +202,18 @@ public class SaveLoadScene extends UIScene {
|
|||||||
dialog.getButtonTable().add(Controls.newLabel("Name:")).align(Align.left);
|
dialog.getButtonTable().add(Controls.newLabel("Name:")).align(Align.left);
|
||||||
dialog.getButtonTable().add(textInput).fillX().expandX();
|
dialog.getButtonTable().add(textInput).fillX().expandX();
|
||||||
dialog.getButtonTable().row();
|
dialog.getButtonTable().row();
|
||||||
dialog.getButtonTable().add(Controls.newTextButton("Save", () -> save())).align(Align.left);
|
dialog.getButtonTable().add(Controls.newTextButton("Save", new Runnable() {
|
||||||
dialog.getButtonTable().add(Controls.newTextButton("Abort", () -> saveAbort())).align(Align.left);
|
@Override
|
||||||
|
public void run() {
|
||||||
|
SaveLoadScene.this.save();
|
||||||
|
}
|
||||||
|
})).align(Align.left);
|
||||||
|
dialog.getButtonTable().add(Controls.newTextButton("Abort", new Runnable() {
|
||||||
|
@Override
|
||||||
|
public void run() {
|
||||||
|
SaveLoadScene.this.saveAbort();
|
||||||
|
}
|
||||||
|
})).align(Align.left);
|
||||||
|
|
||||||
previewImage = ui.findActor("preview");
|
previewImage = ui.findActor("preview");
|
||||||
header = Controls.newLabel("Save");
|
header = Controls.newLabel("Save");
|
||||||
@@ -210,8 +226,18 @@ public class SaveLoadScene extends UIScene {
|
|||||||
addSaveSlot("Slot:" + i, i);
|
addSaveSlot("Slot:" + i, i);
|
||||||
|
|
||||||
saveLoadButton = ui.findActor("save");
|
saveLoadButton = ui.findActor("save");
|
||||||
ui.onButtonPress("save",()-> loadSave());
|
ui.onButtonPress("save", new Runnable() {
|
||||||
ui.onButtonPress("return",()-> back());
|
@Override
|
||||||
|
public void run() {
|
||||||
|
SaveLoadScene.this.loadSave();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
ui.onButtonPress("return", new Runnable() {
|
||||||
|
@Override
|
||||||
|
public void run() {
|
||||||
|
SaveLoadScene.this.back();
|
||||||
|
}
|
||||||
|
});
|
||||||
defColor = saveLoadButton.getColor();
|
defColor = saveLoadButton.getColor();
|
||||||
|
|
||||||
|
|
||||||
26
forge-gui-mobile/src/forge/adventure/scene/SceneType.java
Normal file
26
forge-gui-mobile/src/forge/adventure/scene/SceneType.java
Normal file
@@ -0,0 +1,26 @@
|
|||||||
|
package forge.adventure.scene;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Enum of all scenes
|
||||||
|
*/
|
||||||
|
public enum SceneType {
|
||||||
|
StartScene(new StartScene()),
|
||||||
|
NewGameScene(new NewGameScene()),
|
||||||
|
SettingsScene(new SettingsScene()),
|
||||||
|
GameScene(new GameScene()),
|
||||||
|
DuelScene(new DuelScene()),
|
||||||
|
SaveLoadScene(new SaveLoadScene()),
|
||||||
|
DeckEditScene(new DeckEditScene()),
|
||||||
|
TileMapScene(new TileMapScene()),
|
||||||
|
RewardScene(new RewardScene()),
|
||||||
|
InnScene(new InnScene()),
|
||||||
|
DeckSelectScene(new DeckSelectScene()),
|
||||||
|
ShopScene(new ShopScene()),
|
||||||
|
PlayerStatisticScene(new PlayerStatisticScene());
|
||||||
|
|
||||||
|
|
||||||
|
public final Scene instance;
|
||||||
|
SceneType(Scene scene) {
|
||||||
|
this.instance = scene;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -6,12 +6,19 @@ import com.badlogic.gdx.graphics.GL20;
|
|||||||
import com.badlogic.gdx.graphics.Texture;
|
import com.badlogic.gdx.graphics.Texture;
|
||||||
import com.badlogic.gdx.scenes.scene2d.Actor;
|
import com.badlogic.gdx.scenes.scene2d.Actor;
|
||||||
import com.badlogic.gdx.scenes.scene2d.Stage;
|
import com.badlogic.gdx.scenes.scene2d.Stage;
|
||||||
import com.badlogic.gdx.scenes.scene2d.ui.*;
|
import com.badlogic.gdx.scenes.scene2d.ui.CheckBox;
|
||||||
|
import com.badlogic.gdx.scenes.scene2d.ui.Label;
|
||||||
|
import com.badlogic.gdx.scenes.scene2d.ui.ScrollPane;
|
||||||
|
import com.badlogic.gdx.scenes.scene2d.ui.SelectBox;
|
||||||
|
import com.badlogic.gdx.scenes.scene2d.ui.Slider;
|
||||||
|
import com.badlogic.gdx.scenes.scene2d.ui.Table;
|
||||||
|
import com.badlogic.gdx.scenes.scene2d.ui.TextField;
|
||||||
import com.badlogic.gdx.scenes.scene2d.utils.ChangeListener;
|
import com.badlogic.gdx.scenes.scene2d.utils.ChangeListener;
|
||||||
import com.badlogic.gdx.utils.Align;
|
import com.badlogic.gdx.utils.Align;
|
||||||
import forge.adventure.AdventureApplicationAdapter;
|
import forge.Forge;
|
||||||
import forge.adventure.util.Config;
|
import forge.adventure.util.Config;
|
||||||
import forge.adventure.util.Controls;
|
import forge.adventure.util.Controls;
|
||||||
|
import forge.gui.GuiBase;
|
||||||
import forge.localinstance.properties.ForgePreferences;
|
import forge.localinstance.properties.ForgePreferences;
|
||||||
import forge.util.Localizer;
|
import forge.util.Localizer;
|
||||||
|
|
||||||
@@ -64,7 +71,7 @@ public class SettingsScene extends UIScene {
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
public boolean back() {
|
public boolean back() {
|
||||||
AdventureApplicationAdapter.instance.switchToLast();
|
Forge.switchToLast();
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
private void addInputField(String name, ForgePreferences.FPref pref) {
|
private void addInputField(String name, ForgePreferences.FPref pref) {
|
||||||
@@ -165,8 +172,7 @@ public class SettingsScene extends UIScene {
|
|||||||
addLabel("Plane");
|
addLabel("Plane");
|
||||||
settingGroup.add(plane).align(Align.right);
|
settingGroup.add(plane).align(Align.right);
|
||||||
|
|
||||||
|
if (!GuiBase.isAndroid()) {
|
||||||
|
|
||||||
addSettingField("Fullscreen", Config.instance().getSettingData().fullScreen, new ChangeListener() {
|
addSettingField("Fullscreen", Config.instance().getSettingData().fullScreen, new ChangeListener() {
|
||||||
@Override
|
@Override
|
||||||
public void changed(ChangeEvent event, Actor actor) {
|
public void changed(ChangeEvent event, Actor actor) {
|
||||||
@@ -190,6 +196,7 @@ public class SettingsScene extends UIScene {
|
|||||||
Config.instance().saveSettings();
|
Config.instance().saveSettings();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
}
|
||||||
addCheckBox(localizer.getMessage("lblCardName"), ForgePreferences.FPref.UI_OVERLAY_CARD_NAME);
|
addCheckBox(localizer.getMessage("lblCardName"), ForgePreferences.FPref.UI_OVERLAY_CARD_NAME);
|
||||||
addSettingSlider(localizer.getMessage("cbAdjustMusicVolume"), ForgePreferences.FPref.UI_VOL_MUSIC,0,100);
|
addSettingSlider(localizer.getMessage("cbAdjustMusicVolume"), ForgePreferences.FPref.UI_VOL_MUSIC,0,100);
|
||||||
addSettingSlider(localizer.getMessage("cbAdjustSoundsVolume"), ForgePreferences.FPref.UI_VOL_SOUNDS, 0,100);
|
addSettingSlider(localizer.getMessage("cbAdjustSoundsVolume"), ForgePreferences.FPref.UI_VOL_SOUNDS, 0,100);
|
||||||
@@ -203,15 +210,22 @@ public class SettingsScene extends UIScene {
|
|||||||
addCheckBox(localizer.getMessage("lblBattlefieldTextureFiltering"), ForgePreferences.FPref.UI_LIBGDX_TEXTURE_FILTERING);
|
addCheckBox(localizer.getMessage("lblBattlefieldTextureFiltering"), ForgePreferences.FPref.UI_LIBGDX_TEXTURE_FILTERING);
|
||||||
addCheckBox(localizer.getMessage("lblAltZoneTabs"), ForgePreferences.FPref.UI_ALT_PLAYERZONETABS);
|
addCheckBox(localizer.getMessage("lblAltZoneTabs"), ForgePreferences.FPref.UI_ALT_PLAYERZONETABS);
|
||||||
addCheckBox(localizer.getMessage("lblAnimatedCardTapUntap"), ForgePreferences.FPref.UI_ANIMATED_CARD_TAPUNTAP);
|
addCheckBox(localizer.getMessage("lblAnimatedCardTapUntap"), ForgePreferences.FPref.UI_ANIMATED_CARD_TAPUNTAP);
|
||||||
|
if (!GuiBase.isAndroid()) {
|
||||||
addCheckBox(localizer.getMessage("lblBorderMaskOption"), ForgePreferences.FPref.UI_ENABLE_BORDER_MASKING);
|
addCheckBox(localizer.getMessage("lblBorderMaskOption"), ForgePreferences.FPref.UI_ENABLE_BORDER_MASKING);
|
||||||
addCheckBox(localizer.getMessage("lblPreloadExtendedArtCards"), ForgePreferences.FPref.UI_ENABLE_PRELOAD_EXTENDED_ART);
|
addCheckBox(localizer.getMessage("lblPreloadExtendedArtCards"), ForgePreferences.FPref.UI_ENABLE_PRELOAD_EXTENDED_ART);
|
||||||
addCheckBox(localizer.getMessage("lblAutoCacheSize"), ForgePreferences.FPref.UI_AUTO_CACHE_SIZE);
|
addCheckBox(localizer.getMessage("lblAutoCacheSize"), ForgePreferences.FPref.UI_AUTO_CACHE_SIZE);
|
||||||
addCheckBox(localizer.getMessage("lblDisposeTextures"), ForgePreferences.FPref.UI_ENABLE_DISPOSE_TEXTURES);
|
addCheckBox(localizer.getMessage("lblDisposeTextures"), ForgePreferences.FPref.UI_ENABLE_DISPOSE_TEXTURES);
|
||||||
addInputField(localizer.getMessage("lblDisposeTextures"), ForgePreferences.FPref.UI_LANGUAGE);
|
//addInputField(localizer.getMessage("lblDisposeTextures"), ForgePreferences.FPref.UI_LANGUAGE);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
settingGroup.row();
|
settingGroup.row();
|
||||||
ui.onButtonPress("return", () -> back());
|
ui.onButtonPress("return", new Runnable() {
|
||||||
|
@Override
|
||||||
|
public void run() {
|
||||||
|
SettingsScene.this.back();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
ScrollPane scrollPane = ui.findActor("settings");
|
ScrollPane scrollPane = ui.findActor("settings");
|
||||||
scrollPane.setActor(settingGroup);
|
scrollPane.setActor(settingGroup);
|
||||||
@@ -3,7 +3,7 @@ package forge.adventure.scene;
|
|||||||
import com.badlogic.gdx.Gdx;
|
import com.badlogic.gdx.Gdx;
|
||||||
import com.badlogic.gdx.Input;
|
import com.badlogic.gdx.Input;
|
||||||
import com.badlogic.gdx.scenes.scene2d.Actor;
|
import com.badlogic.gdx.scenes.scene2d.Actor;
|
||||||
import forge.adventure.AdventureApplicationAdapter;
|
import forge.Forge;
|
||||||
import forge.adventure.world.WorldSave;
|
import forge.adventure.world.WorldSave;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -20,29 +20,29 @@ public class StartScene extends UIScene {
|
|||||||
|
|
||||||
}
|
}
|
||||||
public boolean NewGame() {
|
public boolean NewGame() {
|
||||||
AdventureApplicationAdapter.instance.switchScene(SceneType.NewGameScene.instance);
|
Forge.switchScene(SceneType.NewGameScene.instance);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean Save() {
|
public boolean Save() {
|
||||||
((SaveLoadScene) SceneType.SaveLoadScene.instance).setSaveGame(true);
|
((SaveLoadScene) SceneType.SaveLoadScene.instance).setSaveGame(true);
|
||||||
AdventureApplicationAdapter.instance.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).setSaveGame(false);
|
||||||
AdventureApplicationAdapter.instance.switchScene(SceneType.SaveLoadScene.instance);
|
Forge.switchScene(SceneType.SaveLoadScene.instance);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean Resume() {
|
public boolean Resume() {
|
||||||
AdventureApplicationAdapter.instance.switchToLast();
|
Forge.switchToLast();
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean settings() {
|
public boolean settings() {
|
||||||
AdventureApplicationAdapter.instance.switchScene(forge.adventure.scene.SceneType.SettingsScene.instance);
|
Forge.switchScene(SceneType.SettingsScene.instance);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -83,16 +83,51 @@ public class StartScene extends UIScene {
|
|||||||
public void resLoaded() {
|
public void resLoaded() {
|
||||||
super.resLoaded();
|
super.resLoaded();
|
||||||
|
|
||||||
ui.onButtonPress("Start", () -> NewGame());
|
ui.onButtonPress("Start", new Runnable() {
|
||||||
ui.onButtonPress("Load", () -> Load());
|
@Override
|
||||||
ui.onButtonPress("Start", () -> NewGame());
|
public void run() {
|
||||||
ui.onButtonPress("Save", () -> Save());
|
StartScene.this.NewGame();
|
||||||
ui.onButtonPress("Resume", () -> Resume());
|
}
|
||||||
|
});
|
||||||
|
ui.onButtonPress("Load", new Runnable() {
|
||||||
|
@Override
|
||||||
|
public void run() {
|
||||||
|
StartScene.this.Load();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
ui.onButtonPress("Start", new Runnable() {
|
||||||
|
@Override
|
||||||
|
public void run() {
|
||||||
|
StartScene.this.NewGame();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
ui.onButtonPress("Save", new Runnable() {
|
||||||
|
@Override
|
||||||
|
public void run() {
|
||||||
|
StartScene.this.Save();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
ui.onButtonPress("Resume", new Runnable() {
|
||||||
|
@Override
|
||||||
|
public void run() {
|
||||||
|
StartScene.this.Resume();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
saveButton = ui.findActor("Save");
|
saveButton = ui.findActor("Save");
|
||||||
resumeButton = ui.findActor("Resume");
|
resumeButton = ui.findActor("Resume");
|
||||||
ui.onButtonPress("Settings", () -> settings());
|
ui.onButtonPress("Settings", new Runnable() {
|
||||||
ui.onButtonPress("Exit", () -> Exit());
|
@Override
|
||||||
|
public void run() {
|
||||||
|
StartScene.this.settings();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
ui.onButtonPress("Exit", new Runnable() {
|
||||||
|
@Override
|
||||||
|
public void run() {
|
||||||
|
StartScene.this.Exit();
|
||||||
|
}
|
||||||
|
});
|
||||||
saveButton.setVisible(false);
|
saveButton.setVisible(false);
|
||||||
resumeButton.setVisible(false);
|
resumeButton.setVisible(false);
|
||||||
}
|
}
|
||||||
@@ -3,11 +3,11 @@ package forge.adventure.scene;
|
|||||||
import com.badlogic.gdx.Gdx;
|
import com.badlogic.gdx.Gdx;
|
||||||
import com.badlogic.gdx.graphics.GL20;
|
import com.badlogic.gdx.graphics.GL20;
|
||||||
import com.badlogic.gdx.maps.tiled.TiledMap;
|
import com.badlogic.gdx.maps.tiled.TiledMap;
|
||||||
|
import forge.adventure.pointofintrest.PointOfInterest;
|
||||||
import forge.adventure.stage.MapStage;
|
import forge.adventure.stage.MapStage;
|
||||||
import forge.adventure.stage.PointOfInterestMapRenderer;
|
import forge.adventure.stage.PointOfInterestMapRenderer;
|
||||||
import forge.adventure.util.Config;
|
import forge.adventure.util.Config;
|
||||||
import forge.adventure.util.TemplateTmxMapLoader;
|
import forge.adventure.util.TemplateTmxMapLoader;
|
||||||
import forge.adventure.pointofintrest.PointOfInterest;
|
|
||||||
import forge.adventure.world.WorldSave;
|
import forge.adventure.world.WorldSave;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -8,7 +8,7 @@ import com.badlogic.gdx.scenes.scene2d.ui.Image;
|
|||||||
import com.badlogic.gdx.scenes.scene2d.ui.Label;
|
import com.badlogic.gdx.scenes.scene2d.ui.Label;
|
||||||
import com.badlogic.gdx.scenes.scene2d.utils.TextureRegionDrawable;
|
import com.badlogic.gdx.scenes.scene2d.utils.TextureRegionDrawable;
|
||||||
import com.badlogic.gdx.utils.viewport.FitViewport;
|
import com.badlogic.gdx.utils.viewport.FitViewport;
|
||||||
import forge.adventure.AdventureApplicationAdapter;
|
import forge.Forge;
|
||||||
import forge.adventure.player.AdventurePlayer;
|
import forge.adventure.player.AdventurePlayer;
|
||||||
import forge.adventure.scene.Scene;
|
import forge.adventure.scene.Scene;
|
||||||
import forge.adventure.scene.SceneType;
|
import forge.adventure.scene.SceneType;
|
||||||
@@ -43,19 +43,49 @@ public class GameHUD extends Stage {
|
|||||||
|
|
||||||
|
|
||||||
avatar = ui.findActor("avatar");
|
avatar = ui.findActor("avatar");
|
||||||
ui.onButtonPress("menu", () -> menu());
|
ui.onButtonPress("menu", new Runnable() {
|
||||||
ui.onButtonPress("statistic",()-> AdventureApplicationAdapter.instance.switchScene(SceneType.PlayerStatisticScene.instance));
|
@Override
|
||||||
ui.onButtonPress("deck", () -> openDeck());
|
public void run() {
|
||||||
|
GameHUD.this.menu();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
ui.onButtonPress("statistic", new Runnable() {
|
||||||
|
@Override
|
||||||
|
public void run() {
|
||||||
|
Forge.switchScene(SceneType.PlayerStatisticScene.instance);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
ui.onButtonPress("deck", new Runnable() {
|
||||||
|
@Override
|
||||||
|
public void run() {
|
||||||
|
GameHUD.this.openDeck();
|
||||||
|
}
|
||||||
|
});
|
||||||
lifePoints = ui.findActor("lifePoints");
|
lifePoints = ui.findActor("lifePoints");
|
||||||
lifePoints.setText("20/20");
|
lifePoints.setText("20/20");
|
||||||
AdventurePlayer.current().onLifeChange(()-> lifePoints.setText(AdventurePlayer.current().getLife() +"/"+ AdventurePlayer.current().getMaxLife()));
|
AdventurePlayer.current().onLifeChange(new Runnable() {
|
||||||
|
@Override
|
||||||
|
public void run() {
|
||||||
|
lifePoints.setText(AdventurePlayer.current().getLife() + "/" + AdventurePlayer.current().getMaxLife());
|
||||||
|
}
|
||||||
|
});
|
||||||
money = ui.findActor("money");
|
money = ui.findActor("money");
|
||||||
WorldSave.getCurrentSave().getPlayer().onGoldChange(()-> money.setText(String.valueOf(AdventurePlayer.current().getGold()))) ;
|
WorldSave.getCurrentSave().getPlayer().onGoldChange(new Runnable() {
|
||||||
|
@Override
|
||||||
|
public void run() {
|
||||||
|
money.setText(String.valueOf(AdventurePlayer.current().getGold()));
|
||||||
|
}
|
||||||
|
}) ;
|
||||||
miniMap = ui.findActor("map");
|
miniMap = ui.findActor("map");
|
||||||
|
|
||||||
addActor(ui);
|
addActor(ui);
|
||||||
addActor(miniMapPlayer);
|
addActor(miniMapPlayer);
|
||||||
WorldSave.getCurrentSave().onLoad(() -> enter());
|
WorldSave.getCurrentSave().onLoad(new Runnable() {
|
||||||
|
@Override
|
||||||
|
public void run() {
|
||||||
|
GameHUD.this.enter();
|
||||||
|
}
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
private void statistic() {
|
private void statistic() {
|
||||||
@@ -109,7 +139,7 @@ public class GameHUD extends Stage {
|
|||||||
|
|
||||||
private Object openDeck() {
|
private Object openDeck() {
|
||||||
|
|
||||||
AdventureApplicationAdapter.instance.switchScene(SceneType.DeckSelectScene.instance);
|
Forge.switchScene(SceneType.DeckSelectScene.instance);
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -8,7 +8,7 @@ import com.badlogic.gdx.scenes.scene2d.Actor;
|
|||||||
import com.badlogic.gdx.scenes.scene2d.Group;
|
import com.badlogic.gdx.scenes.scene2d.Group;
|
||||||
import com.badlogic.gdx.scenes.scene2d.Stage;
|
import com.badlogic.gdx.scenes.scene2d.Stage;
|
||||||
import com.badlogic.gdx.utils.viewport.StretchViewport;
|
import com.badlogic.gdx.utils.viewport.StretchViewport;
|
||||||
import forge.adventure.AdventureApplicationAdapter;
|
import forge.Forge;
|
||||||
import forge.adventure.character.MapActor;
|
import forge.adventure.character.MapActor;
|
||||||
import forge.adventure.character.PlayerSprite;
|
import forge.adventure.character.PlayerSprite;
|
||||||
import forge.adventure.scene.Scene;
|
import forge.adventure.scene.Scene;
|
||||||
@@ -46,12 +46,15 @@ public abstract class GameStage extends Stage {
|
|||||||
|
|
||||||
public GameStage() {
|
public GameStage() {
|
||||||
super(new StretchViewport(Scene.GetIntendedWidth(), Scene.GetIntendedHeight(), new OrthographicCamera()));
|
super(new StretchViewport(Scene.GetIntendedWidth(), Scene.GetIntendedHeight(), new OrthographicCamera()));
|
||||||
WorldSave.getCurrentSave().onLoad(() -> {
|
WorldSave.getCurrentSave().onLoad(new Runnable() {
|
||||||
|
@Override
|
||||||
|
public void run() {
|
||||||
if (player == null)
|
if (player == null)
|
||||||
return;
|
return;
|
||||||
foregroundSprites.removeActor(player);
|
foregroundSprites.removeActor(player);
|
||||||
player = null;
|
player = null;
|
||||||
GetPlayer();
|
GameStage.this.GetPlayer();
|
||||||
|
}
|
||||||
});
|
});
|
||||||
camera = (OrthographicCamera) getCamera();
|
camera = (OrthographicCamera) getCamera();
|
||||||
|
|
||||||
@@ -283,7 +286,7 @@ public abstract class GameStage extends Stage {
|
|||||||
public void openMenu() {
|
public void openMenu() {
|
||||||
|
|
||||||
WorldSave.getCurrentSave().header.createPreview();
|
WorldSave.getCurrentSave().header.createPreview();
|
||||||
AdventureApplicationAdapter.instance.switchScene(SceneType.StartScene.instance);
|
Forge.switchScene(SceneType.StartScene.instance);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void enter() {
|
public void enter() {
|
||||||
@@ -11,18 +11,24 @@ import com.badlogic.gdx.math.Rectangle;
|
|||||||
import com.badlogic.gdx.math.Vector2;
|
import com.badlogic.gdx.math.Vector2;
|
||||||
import com.badlogic.gdx.scenes.scene2d.Group;
|
import com.badlogic.gdx.scenes.scene2d.Group;
|
||||||
import com.badlogic.gdx.utils.Array;
|
import com.badlogic.gdx.utils.Array;
|
||||||
import forge.adventure.AdventureApplicationAdapter;
|
import forge.Forge;
|
||||||
import forge.adventure.character.*;
|
import forge.adventure.character.CharacterSprite;
|
||||||
|
import forge.adventure.character.EnemySprite;
|
||||||
|
import forge.adventure.character.EntryActor;
|
||||||
|
import forge.adventure.character.MapActor;
|
||||||
|
import forge.adventure.character.OnCollide;
|
||||||
|
import forge.adventure.character.ShopActor;
|
||||||
|
import forge.adventure.character.TextureSprite;
|
||||||
import forge.adventure.data.RewardData;
|
import forge.adventure.data.RewardData;
|
||||||
import forge.adventure.data.ShopData;
|
import forge.adventure.data.ShopData;
|
||||||
import forge.adventure.data.WorldData;
|
import forge.adventure.data.WorldData;
|
||||||
|
import forge.adventure.pointofintrest.PointOfInterestChanges;
|
||||||
import forge.adventure.scene.DuelScene;
|
import forge.adventure.scene.DuelScene;
|
||||||
import forge.adventure.scene.RewardScene;
|
import forge.adventure.scene.RewardScene;
|
||||||
import forge.adventure.scene.SceneType;
|
import forge.adventure.scene.SceneType;
|
||||||
import forge.adventure.util.Config;
|
import forge.adventure.util.Config;
|
||||||
import forge.adventure.util.Current;
|
import forge.adventure.util.Current;
|
||||||
import forge.adventure.util.Reward;
|
import forge.adventure.util.Reward;
|
||||||
import forge.adventure.pointofintrest.PointOfInterestChanges;
|
|
||||||
import forge.adventure.world.WorldSave;
|
import forge.adventure.world.WorldSave;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
@@ -235,10 +241,20 @@ public class MapStage extends GameStage {
|
|||||||
addMapActor(obj, mob);
|
addMapActor(obj, mob);
|
||||||
break;
|
break;
|
||||||
case "inn":
|
case "inn":
|
||||||
addMapActor(obj, new OnCollide(() -> AdventureApplicationAdapter.instance.switchScene(SceneType.InnScene.instance)));
|
addMapActor(obj, new OnCollide(new Runnable() {
|
||||||
|
@Override
|
||||||
|
public void run() {
|
||||||
|
Forge.switchScene(SceneType.InnScene.instance);
|
||||||
|
}
|
||||||
|
}));
|
||||||
break;
|
break;
|
||||||
case "exit":
|
case "exit":
|
||||||
addMapActor(obj, new OnCollide(() -> exit()));
|
addMapActor(obj, new OnCollide(new Runnable() {
|
||||||
|
@Override
|
||||||
|
public void run() {
|
||||||
|
MapStage.this.exit();
|
||||||
|
}
|
||||||
|
}));
|
||||||
break;
|
break;
|
||||||
case "shop":
|
case "shop":
|
||||||
String shopList=prop.get("shopList").toString();
|
String shopList=prop.get("shopList").toString();
|
||||||
@@ -290,7 +306,7 @@ public class MapStage extends GameStage {
|
|||||||
public boolean exit() {
|
public boolean exit() {
|
||||||
|
|
||||||
isInMap=false;
|
isInMap=false;
|
||||||
AdventureApplicationAdapter.instance.switchScene(SceneType.GameScene.instance);
|
Forge.switchScene(SceneType.GameScene.instance);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -302,19 +318,26 @@ public class MapStage extends GameStage {
|
|||||||
if (playerWins) {
|
if (playerWins) {
|
||||||
player.setAnimation(CharacterSprite.AnimationTypes.Attack);
|
player.setAnimation(CharacterSprite.AnimationTypes.Attack);
|
||||||
currentMob.setAnimation(CharacterSprite.AnimationTypes.Death);
|
currentMob.setAnimation(CharacterSprite.AnimationTypes.Death);
|
||||||
startPause(1,()->getReward());
|
startPause(1, new Runnable() {
|
||||||
|
@Override
|
||||||
|
public void run() {
|
||||||
|
MapStage.this.getReward();
|
||||||
|
}
|
||||||
|
});
|
||||||
} else {
|
} else {
|
||||||
player.setAnimation(CharacterSprite.AnimationTypes.Hit);
|
player.setAnimation(CharacterSprite.AnimationTypes.Hit);
|
||||||
currentMob.setAnimation(CharacterSprite.AnimationTypes.Attack);
|
currentMob.setAnimation(CharacterSprite.AnimationTypes.Attack);
|
||||||
startPause(1,()->
|
startPause(1, new Runnable() {
|
||||||
{
|
@Override
|
||||||
|
public void run() {
|
||||||
|
|
||||||
player.setAnimation(CharacterSprite.AnimationTypes.Idle);
|
player.setAnimation(CharacterSprite.AnimationTypes.Idle);
|
||||||
currentMob.setAnimation(CharacterSprite.AnimationTypes.Idle);
|
currentMob.setAnimation(CharacterSprite.AnimationTypes.Idle);
|
||||||
player.setPosition(oldPosition4);
|
player.setPosition(oldPosition4);
|
||||||
Current.player().defeated();
|
Current.player().defeated();
|
||||||
stop();
|
MapStage.this.stop();
|
||||||
currentMob = null;
|
currentMob = null;
|
||||||
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -328,7 +351,7 @@ public class MapStage extends GameStage {
|
|||||||
actors.removeValue(currentMob,true);
|
actors.removeValue(currentMob,true);
|
||||||
changes.deleteObject(currentMob.getId());
|
changes.deleteObject(currentMob.getId());
|
||||||
currentMob = null;
|
currentMob = null;
|
||||||
AdventureApplicationAdapter.instance.switchScene(SceneType.RewardScene.instance);
|
Forge.switchScene(SceneType.RewardScene.instance);
|
||||||
}
|
}
|
||||||
@Override
|
@Override
|
||||||
protected void onActing(float delta) {
|
protected void onActing(float delta) {
|
||||||
@@ -346,18 +369,25 @@ public class MapStage extends GameStage {
|
|||||||
if(mob.getData().deck==null||mob.getData().deck.isEmpty())
|
if(mob.getData().deck==null||mob.getData().deck.isEmpty())
|
||||||
{
|
{
|
||||||
currentMob.setAnimation(CharacterSprite.AnimationTypes.Death);
|
currentMob.setAnimation(CharacterSprite.AnimationTypes.Death);
|
||||||
startPause(1,()->getReward());
|
startPause(1, new Runnable() {
|
||||||
|
@Override
|
||||||
|
public void run() {
|
||||||
|
MapStage.this.getReward();
|
||||||
|
}
|
||||||
|
});
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
player.setAnimation(CharacterSprite.AnimationTypes.Attack);
|
player.setAnimation(CharacterSprite.AnimationTypes.Attack);
|
||||||
mob.setAnimation(CharacterSprite.AnimationTypes.Attack);
|
mob.setAnimation(CharacterSprite.AnimationTypes.Attack);
|
||||||
|
|
||||||
startPause(1,()->
|
startPause(1, new Runnable() {
|
||||||
{
|
@Override
|
||||||
|
public void run() {
|
||||||
((DuelScene) SceneType.DuelScene.instance).setEnemy(mob);
|
((DuelScene) SceneType.DuelScene.instance).setEnemy(mob);
|
||||||
((DuelScene) SceneType.DuelScene.instance).setPlayer(player);
|
((DuelScene) SceneType.DuelScene.instance).setPlayer(player);
|
||||||
AdventureApplicationAdapter.instance.switchScene(SceneType.DuelScene.instance);
|
Forge.switchScene(SceneType.DuelScene.instance);
|
||||||
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -9,6 +9,7 @@ import com.badlogic.gdx.utils.SnapshotArray;
|
|||||||
|
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.Comparator;
|
import java.util.Comparator;
|
||||||
|
import java.util.function.ToIntFunction;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Sprite group to order actors based on the Y position on the map, the render sprites further up first.
|
* Sprite group to order actors based on the Y position on the map, the render sprites further up first.
|
||||||
@@ -25,7 +26,12 @@ public class SpriteGroup extends Group {
|
|||||||
protected void drawChildren(Batch batch, float parentAlpha) {
|
protected void drawChildren(Batch batch, float parentAlpha) {
|
||||||
|
|
||||||
Actor[] actors = getChildren().toArray();
|
Actor[] actors = getChildren().toArray();
|
||||||
Arrays.sort(actors, Comparator.comparingInt(o -> (int) -o.getY()));
|
Arrays.sort(actors, Comparator.comparingInt(new ToIntFunction<Actor>() {
|
||||||
|
@Override
|
||||||
|
public int applyAsInt(Actor o) {
|
||||||
|
return (int) -o.getY();
|
||||||
|
}
|
||||||
|
}));
|
||||||
|
|
||||||
for(int i=0;i<actors.length;i++)
|
for(int i=0;i<actors.length;i++)
|
||||||
{
|
{
|
||||||
@@ -3,10 +3,10 @@ package forge.adventure.stage;
|
|||||||
import com.badlogic.gdx.graphics.Pixmap;
|
import com.badlogic.gdx.graphics.Pixmap;
|
||||||
import com.badlogic.gdx.graphics.Texture;
|
import com.badlogic.gdx.graphics.Texture;
|
||||||
import com.badlogic.gdx.graphics.g2d.Batch;
|
import com.badlogic.gdx.graphics.g2d.Batch;
|
||||||
|
import com.badlogic.gdx.math.Vector2;
|
||||||
import com.badlogic.gdx.scenes.scene2d.Actor;
|
import com.badlogic.gdx.scenes.scene2d.Actor;
|
||||||
import forge.adventure.world.WorldSave;
|
import forge.adventure.world.WorldSave;
|
||||||
|
|
||||||
import java.awt.*;
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -37,36 +37,36 @@ public class WorldBackground extends Actor {
|
|||||||
if (chunks == null) {
|
if (chunks == null) {
|
||||||
initialize();
|
initialize();
|
||||||
}
|
}
|
||||||
Point pos = translateFromWorldToChunk(playerX, playerY);
|
Vector2 pos = translateFromWorldToChunk(playerX, playerY);
|
||||||
if (currentChunkX != pos.x || currentChunkY != pos.y) {
|
if (currentChunkX != pos.x || currentChunkY != pos.y) {
|
||||||
int xDiff = currentChunkX - pos.x;
|
int xDiff = currentChunkX - (int)pos.x;
|
||||||
int yDiff = currentChunkY - pos.y;
|
int yDiff = currentChunkY - (int)pos.y;
|
||||||
ArrayList<Point> points = new ArrayList<Point>();
|
ArrayList<Vector2> points = new ArrayList<>();
|
||||||
for (int x = -1; x < 2; x++) {
|
for (int x = -1; x < 2; x++) {
|
||||||
for (int y = -1; y < 2; y++) {
|
for (int y = -1; y < 2; y++) {
|
||||||
points.add(new Point(pos.x + x, pos.y + y));
|
points.add(new Vector2(pos.x + x, pos.y + y));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
for (int x = -1; x < 2; x++) {
|
for (int x = -1; x < 2; x++) {
|
||||||
for (int y = -1; y < 2; y++) {
|
for (int y = -1; y < 2; y++) {
|
||||||
Point point = new Point(currentChunkX + x, currentChunkY + y);
|
Vector2 point = new Vector2(currentChunkX + x, currentChunkY + y);
|
||||||
if (points.contains(point))// old Point is part of new points
|
if (points.contains(point))// old Point is part of new points
|
||||||
{
|
{
|
||||||
points.remove(point);
|
points.remove(point);
|
||||||
} else {
|
} else {
|
||||||
if (point.y < 0 || point.x < 0 || point.y >= chunks[0].length || point.x >= chunks.length)
|
if (point.y < 0 || point.x < 0 || point.y >= chunks[0].length || point.x >= chunks.length)
|
||||||
continue;
|
continue;
|
||||||
unLoadChunk(point.x, point.y);
|
unLoadChunk((int)point.x, (int)point.y);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
for (Point point : points) {
|
for (Vector2 point : points) {
|
||||||
if (point.y < 0 || point.x < 0 || point.y >= chunks[0].length || point.x >= chunks.length)
|
if (point.y < 0 || point.x < 0 || point.y >= chunks[0].length || point.x >= chunks.length)
|
||||||
continue;
|
continue;
|
||||||
loadChunk(point.x, point.y);
|
loadChunk((int)point.x, (int)point.y);
|
||||||
}
|
}
|
||||||
currentChunkX = pos.x;
|
currentChunkX = (int)pos.x;
|
||||||
currentChunkY = pos.y;
|
currentChunkY = (int)pos.y;
|
||||||
}
|
}
|
||||||
batch.disableBlending();
|
batch.disableBlending();
|
||||||
for (int x = -1; x < 2; x++) {
|
for (int x = -1; x < 2; x++) {
|
||||||
@@ -75,7 +75,7 @@ public class WorldBackground extends Actor {
|
|||||||
continue;
|
continue;
|
||||||
|
|
||||||
|
|
||||||
batch.draw(getChunkTexture(pos.x + x, pos.y + y), transChunkToWorld(pos.x + x), transChunkToWorld(pos.y + y));
|
batch.draw(getChunkTexture((int)pos.x + x, (int)pos.y + y), transChunkToWorld((int)pos.x + x), transChunkToWorld((int)pos.y + y));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
batch.enableBlending();
|
batch.enableBlending();
|
||||||
@@ -154,10 +154,10 @@ public class WorldBackground extends Actor {
|
|||||||
|
|
||||||
for (int x = -1; x < 2; x++) {
|
for (int x = -1; x < 2; x++) {
|
||||||
for (int y = -1; y < 2; y++) {
|
for (int y = -1; y < 2; y++) {
|
||||||
Point point = new Point(currentChunkX + x, currentChunkY + y);
|
Vector2 point = new Vector2(currentChunkX + x, currentChunkY + y);
|
||||||
if (point.y < 0 || point.x < 0 || point.y >= chunks[0].length || point.x >= chunks.length)
|
if (point.y < 0 || point.x < 0 || point.y >= chunks[0].length || point.x >= chunks.length)
|
||||||
continue;
|
continue;
|
||||||
loadChunk(point.x, point.y);
|
loadChunk((int)point.x, (int)point.y);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -171,10 +171,10 @@ public class WorldBackground extends Actor {
|
|||||||
return xy * tileSize * chunkSize;
|
return xy * tileSize * chunkSize;
|
||||||
}
|
}
|
||||||
|
|
||||||
Point translateFromWorldToChunk(float x, float y) {
|
Vector2 translateFromWorldToChunk(float x, float y) {
|
||||||
float worldWidthTiles = x / tileSize;
|
float worldWidthTiles = x / tileSize;
|
||||||
float worldHeightTiles = y / tileSize;
|
float worldHeightTiles = y / tileSize;
|
||||||
return new Point((int) worldWidthTiles / chunkSize, (int) worldHeightTiles / chunkSize);
|
return new Vector2((int) worldWidthTiles / chunkSize, (int) worldHeightTiles / chunkSize);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setPlayerPos(float x, float y) {
|
public void setPlayerPos(float x, float y) {
|
||||||
@@ -3,13 +3,17 @@ package forge.adventure.stage;
|
|||||||
import com.badlogic.gdx.math.Rectangle;
|
import com.badlogic.gdx.math.Rectangle;
|
||||||
import com.badlogic.gdx.math.Vector2;
|
import com.badlogic.gdx.math.Vector2;
|
||||||
import com.badlogic.gdx.scenes.scene2d.Actor;
|
import com.badlogic.gdx.scenes.scene2d.Actor;
|
||||||
import forge.adventure.AdventureApplicationAdapter;
|
import forge.Forge;
|
||||||
import forge.adventure.character.CharacterSprite;
|
import forge.adventure.character.CharacterSprite;
|
||||||
import forge.adventure.character.EnemySprite;
|
import forge.adventure.character.EnemySprite;
|
||||||
import forge.adventure.data.BiomeData;
|
import forge.adventure.data.BiomeData;
|
||||||
import forge.adventure.data.EnemyData;
|
import forge.adventure.data.EnemyData;
|
||||||
import forge.adventure.data.WorldData;
|
import forge.adventure.data.WorldData;
|
||||||
import forge.adventure.scene.*;
|
import forge.adventure.scene.DuelScene;
|
||||||
|
import forge.adventure.scene.RewardScene;
|
||||||
|
import forge.adventure.scene.Scene;
|
||||||
|
import forge.adventure.scene.SceneType;
|
||||||
|
import forge.adventure.scene.TileMapScene;
|
||||||
import forge.adventure.util.Current;
|
import forge.adventure.util.Current;
|
||||||
import forge.adventure.util.SaveFileContent;
|
import forge.adventure.util.SaveFileContent;
|
||||||
import forge.adventure.util.SaveFileData;
|
import forge.adventure.util.SaveFileData;
|
||||||
@@ -71,11 +75,14 @@ public class WorldStage extends GameStage implements SaveFileContent {
|
|||||||
if (player.collideWith(mob)) {
|
if (player.collideWith(mob)) {
|
||||||
player.setAnimation(CharacterSprite.AnimationTypes.Attack);
|
player.setAnimation(CharacterSprite.AnimationTypes.Attack);
|
||||||
mob.setAnimation(CharacterSprite.AnimationTypes.Attack);
|
mob.setAnimation(CharacterSprite.AnimationTypes.Attack);
|
||||||
startPause(1,()->{
|
startPause(1, new Runnable() {
|
||||||
|
@Override
|
||||||
|
public void run() {
|
||||||
|
|
||||||
((DuelScene) SceneType.DuelScene.instance).setEnemy(currentMob);
|
((DuelScene) SceneType.DuelScene.instance).setEnemy(currentMob);
|
||||||
((DuelScene) SceneType.DuelScene.instance).setPlayer(player);
|
((DuelScene) SceneType.DuelScene.instance).setPlayer(player);
|
||||||
AdventureApplicationAdapter.instance.switchScene(SceneType.DuelScene.instance);
|
Forge.switchScene(SceneType.DuelScene.instance);
|
||||||
|
}
|
||||||
});
|
});
|
||||||
currentMob = mob;
|
currentMob = mob;
|
||||||
WorldSave.getCurrentSave().autoSave();
|
WorldSave.getCurrentSave().autoSave();
|
||||||
@@ -108,21 +115,25 @@ public class WorldStage extends GameStage implements SaveFileContent {
|
|||||||
if (playerIsWinner) {
|
if (playerIsWinner) {
|
||||||
player.setAnimation(CharacterSprite.AnimationTypes.Attack);
|
player.setAnimation(CharacterSprite.AnimationTypes.Attack);
|
||||||
currentMob.setAnimation(CharacterSprite.AnimationTypes.Death);
|
currentMob.setAnimation(CharacterSprite.AnimationTypes.Death);
|
||||||
startPause(1,()->
|
startPause(1, new Runnable() {
|
||||||
{
|
@Override
|
||||||
|
public void run() {
|
||||||
((RewardScene) SceneType.RewardScene.instance).loadRewards(currentMob.getRewards(), RewardScene.Type.Loot, null);
|
((RewardScene) SceneType.RewardScene.instance).loadRewards(currentMob.getRewards(), RewardScene.Type.Loot, null);
|
||||||
removeEnemy(currentMob);
|
WorldStage.this.removeEnemy(currentMob);
|
||||||
currentMob = null;
|
currentMob = null;
|
||||||
AdventureApplicationAdapter.instance.switchScene(SceneType.RewardScene.instance);
|
Forge.switchScene(SceneType.RewardScene.instance);
|
||||||
|
}
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
player.setAnimation(CharacterSprite.AnimationTypes.Hit);
|
player.setAnimation(CharacterSprite.AnimationTypes.Hit);
|
||||||
currentMob.setAnimation(CharacterSprite.AnimationTypes.Attack);
|
currentMob.setAnimation(CharacterSprite.AnimationTypes.Attack);
|
||||||
startPause(1,()->
|
startPause(1, new Runnable() {
|
||||||
{
|
@Override
|
||||||
|
public void run() {
|
||||||
Current.player().defeated();
|
Current.player().defeated();
|
||||||
removeEnemy(currentMob);
|
WorldStage.this.removeEnemy(currentMob);
|
||||||
currentMob = null;
|
currentMob = null;
|
||||||
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -138,7 +149,7 @@ public class WorldStage extends GameStage implements SaveFileContent {
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
((TileMapScene) SceneType.TileMapScene.instance).load(point.getPointOfInterest());
|
((TileMapScene) SceneType.TileMapScene.instance).load(point.getPointOfInterest());
|
||||||
AdventureApplicationAdapter.instance.switchScene(SceneType.TileMapScene.instance);
|
Forge.switchScene(SceneType.TileMapScene.instance);
|
||||||
} else {
|
} else {
|
||||||
if (point == collidingPoint) {
|
if (point == collidingPoint) {
|
||||||
collidingPoint = null;
|
collidingPoint = null;
|
||||||
@@ -25,7 +25,7 @@ import java.util.Collection;
|
|||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.regex.Pattern;
|
import java.util.regex.Pattern;
|
||||||
|
|
||||||
import static forge.adventure.data.RewardData.*;
|
import static forge.adventure.data.RewardData.generateAllCards;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Utility class to deck generation and card filtering
|
* Utility class to deck generation and card filtering
|
||||||
@@ -7,6 +7,7 @@ import com.badlogic.gdx.utils.JsonWriter;
|
|||||||
import forge.adventure.data.ConfigData;
|
import forge.adventure.data.ConfigData;
|
||||||
import forge.adventure.data.SettingData;
|
import forge.adventure.data.SettingData;
|
||||||
import forge.deck.Deck;
|
import forge.deck.Deck;
|
||||||
|
import forge.gui.GuiBase;
|
||||||
import forge.localinstance.properties.ForgeConstants;
|
import forge.localinstance.properties.ForgeConstants;
|
||||||
import forge.localinstance.properties.ForgePreferences;
|
import forge.localinstance.properties.ForgePreferences;
|
||||||
import forge.localinstance.properties.ForgeProfileProperties;
|
import forge.localinstance.properties.ForgeProfileProperties;
|
||||||
@@ -39,8 +40,8 @@ public class Config {
|
|||||||
}
|
}
|
||||||
private Config() {
|
private Config() {
|
||||||
|
|
||||||
String path= Files.exists(Paths.get("./res"))?"./":"../forge-gui/";
|
String path= GuiBase.isAndroid() ? ForgeConstants.ASSETS_DIR : Files.exists(Paths.get("./res"))?"./":"../forge-gui/";
|
||||||
adventures = new File(path + "/res/adventure").list();
|
adventures = new File(GuiBase.isAndroid() ? ForgeConstants.ADVENTURE_DIR : path + "/res/adventure").list();
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
settingsData = new Json().fromJson(SettingData.class, new FileHandle(ForgeConstants.USER_DIR + "/adventure/settings.json"));
|
settingsData = new Json().fromJson(SettingData.class, new FileHandle(ForgeConstants.USER_DIR + "/adventure/settings.json"));
|
||||||
@@ -5,7 +5,14 @@ import com.badlogic.gdx.graphics.g2d.BitmapFont;
|
|||||||
import com.badlogic.gdx.graphics.g2d.TextureAtlas;
|
import com.badlogic.gdx.graphics.g2d.TextureAtlas;
|
||||||
import com.badlogic.gdx.scenes.scene2d.Actor;
|
import com.badlogic.gdx.scenes.scene2d.Actor;
|
||||||
import com.badlogic.gdx.scenes.scene2d.InputEvent;
|
import com.badlogic.gdx.scenes.scene2d.InputEvent;
|
||||||
import com.badlogic.gdx.scenes.scene2d.ui.*;
|
import com.badlogic.gdx.scenes.scene2d.ui.CheckBox;
|
||||||
|
import com.badlogic.gdx.scenes.scene2d.ui.Dialog;
|
||||||
|
import com.badlogic.gdx.scenes.scene2d.ui.Label;
|
||||||
|
import com.badlogic.gdx.scenes.scene2d.ui.SelectBox;
|
||||||
|
import com.badlogic.gdx.scenes.scene2d.ui.Skin;
|
||||||
|
import com.badlogic.gdx.scenes.scene2d.ui.Slider;
|
||||||
|
import com.badlogic.gdx.scenes.scene2d.ui.TextButton;
|
||||||
|
import com.badlogic.gdx.scenes.scene2d.ui.TextField;
|
||||||
import com.badlogic.gdx.scenes.scene2d.utils.ChangeListener;
|
import com.badlogic.gdx.scenes.scene2d.utils.ChangeListener;
|
||||||
import com.badlogic.gdx.scenes.scene2d.utils.ClickListener;
|
import com.badlogic.gdx.scenes.scene2d.utils.ClickListener;
|
||||||
|
|
||||||
@@ -5,7 +5,11 @@ import com.badlogic.gdx.graphics.PixmapIO;
|
|||||||
import com.badlogic.gdx.math.Rectangle;
|
import com.badlogic.gdx.math.Rectangle;
|
||||||
import com.badlogic.gdx.math.Vector2;
|
import com.badlogic.gdx.math.Vector2;
|
||||||
|
|
||||||
import java.io.*;
|
import java.io.ByteArrayInputStream;
|
||||||
|
import java.io.ByteArrayOutputStream;
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.io.ObjectInputStream;
|
||||||
|
import java.io.ObjectOutputStream;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
|
|
||||||
public class SaveFileData extends HashMap<String,byte[]>
|
public class SaveFileData extends HashMap<String,byte[]>
|
||||||
@@ -16,7 +16,7 @@ import java.io.ObjectOutputStream;
|
|||||||
public abstract class Serializer {
|
public abstract class Serializer {
|
||||||
|
|
||||||
|
|
||||||
static public void WritePixmap(java.io.ObjectOutputStream out, Pixmap pixmap) throws IOException {
|
static public void WritePixmap(ObjectOutputStream out, Pixmap pixmap) throws IOException {
|
||||||
|
|
||||||
if (pixmap != null) {
|
if (pixmap != null) {
|
||||||
PixmapIO.PNG png = new PixmapIO.PNG();
|
PixmapIO.PNG png = new PixmapIO.PNG();
|
||||||
@@ -18,7 +18,7 @@ public class TemplateTmxMapLoader extends TmxMapLoader {
|
|||||||
FileHandle tmxFile;
|
FileHandle tmxFile;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected TiledMap loadTiledMap(FileHandle tmxFile, TmxMapLoader.Parameters parameter, ImageResolver imageResolver) {
|
protected TiledMap loadTiledMap(FileHandle tmxFile, Parameters parameter, ImageResolver imageResolver) {
|
||||||
this.tmxFile = tmxFile;
|
this.tmxFile = tmxFile;
|
||||||
return super.loadTiledMap(tmxFile, parameter, imageResolver);
|
return super.loadTiledMap(tmxFile, parameter, imageResolver);
|
||||||
}
|
}
|
||||||
@@ -5,7 +5,13 @@ import com.badlogic.gdx.graphics.Texture;
|
|||||||
import com.badlogic.gdx.scenes.scene2d.Actor;
|
import com.badlogic.gdx.scenes.scene2d.Actor;
|
||||||
import com.badlogic.gdx.scenes.scene2d.Group;
|
import com.badlogic.gdx.scenes.scene2d.Group;
|
||||||
import com.badlogic.gdx.scenes.scene2d.InputEvent;
|
import com.badlogic.gdx.scenes.scene2d.InputEvent;
|
||||||
import com.badlogic.gdx.scenes.scene2d.ui.*;
|
import com.badlogic.gdx.scenes.scene2d.ui.Image;
|
||||||
|
import com.badlogic.gdx.scenes.scene2d.ui.ImageButton;
|
||||||
|
import com.badlogic.gdx.scenes.scene2d.ui.Label;
|
||||||
|
import com.badlogic.gdx.scenes.scene2d.ui.ScrollPane;
|
||||||
|
import com.badlogic.gdx.scenes.scene2d.ui.TextButton;
|
||||||
|
import com.badlogic.gdx.scenes.scene2d.ui.TextField;
|
||||||
|
import com.badlogic.gdx.scenes.scene2d.ui.Window;
|
||||||
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.Array;
|
import com.badlogic.gdx.utils.Array;
|
||||||
@@ -8,7 +8,11 @@ import com.badlogic.gdx.math.Vector2;
|
|||||||
import com.badlogic.gdx.scenes.scene2d.Actor;
|
import com.badlogic.gdx.scenes.scene2d.Actor;
|
||||||
import com.badlogic.gdx.utils.Disposable;
|
import com.badlogic.gdx.utils.Disposable;
|
||||||
import com.badlogic.gdx.utils.Json;
|
import com.badlogic.gdx.utils.Json;
|
||||||
import forge.adventure.data.*;
|
import forge.adventure.data.BiomeData;
|
||||||
|
import forge.adventure.data.BiomeSpriteData;
|
||||||
|
import forge.adventure.data.BiomeTerrainData;
|
||||||
|
import forge.adventure.data.PointOfInterestData;
|
||||||
|
import forge.adventure.data.WorldData;
|
||||||
import forge.adventure.pointofintrest.PointOfInterest;
|
import forge.adventure.pointofintrest.PointOfInterest;
|
||||||
import forge.adventure.pointofintrest.PointOfInterestMap;
|
import forge.adventure.pointofintrest.PointOfInterestMap;
|
||||||
import forge.adventure.scene.Scene;
|
import forge.adventure.scene.Scene;
|
||||||
@@ -9,9 +9,13 @@ import forge.adventure.util.SaveFileData;
|
|||||||
import forge.adventure.util.SignalList;
|
import forge.adventure.util.SignalList;
|
||||||
import forge.deck.Deck;
|
import forge.deck.Deck;
|
||||||
import forge.localinstance.properties.ForgeProfileProperties;
|
import forge.localinstance.properties.ForgeProfileProperties;
|
||||||
import org.jetbrains.annotations.NotNull;
|
|
||||||
|
|
||||||
import java.io.*;
|
import java.io.File;
|
||||||
|
import java.io.FileInputStream;
|
||||||
|
import java.io.FileOutputStream;
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.io.ObjectInputStream;
|
||||||
|
import java.io.ObjectOutputStream;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.zip.DeflaterOutputStream;
|
import java.util.zip.DeflaterOutputStream;
|
||||||
import java.util.zip.InflaterInputStream;
|
import java.util.zip.InflaterInputStream;
|
||||||
@@ -79,7 +83,7 @@ public class WorldSave {
|
|||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
public static boolean isSafeFile(@NotNull String name) {
|
public static boolean isSafeFile(String name) {
|
||||||
return filenameToSlot(name)!= INVALID_SAVE_SLOT;
|
return filenameToSlot(name)!= INVALID_SAVE_SLOT;
|
||||||
}
|
}
|
||||||
static public int filenameToSlot(String name) {
|
static public int filenameToSlot(String name) {
|
||||||
@@ -1,26 +1,35 @@
|
|||||||
package forge.screens;
|
package forge.screens;
|
||||||
|
|
||||||
|
import com.badlogic.gdx.Gdx;
|
||||||
import com.badlogic.gdx.graphics.Color;
|
import com.badlogic.gdx.graphics.Color;
|
||||||
import com.badlogic.gdx.graphics.g2d.TextureRegion;
|
import com.badlogic.gdx.graphics.g2d.TextureRegion;
|
||||||
import com.badlogic.gdx.utils.Align;
|
import com.badlogic.gdx.utils.Align;
|
||||||
|
|
||||||
import forge.Forge;
|
import forge.Forge;
|
||||||
import forge.Graphics;
|
import forge.Graphics;
|
||||||
|
import forge.animation.ForgeAnimation;
|
||||||
|
import forge.assets.FSkin;
|
||||||
import forge.assets.FSkinColor;
|
import forge.assets.FSkinColor;
|
||||||
import forge.assets.FSkinFont;
|
import forge.assets.FSkinFont;
|
||||||
import forge.assets.FSkinTexture;
|
import forge.assets.FSkinTexture;
|
||||||
|
import forge.toolbox.FButton;
|
||||||
import forge.toolbox.FContainer;
|
import forge.toolbox.FContainer;
|
||||||
|
import forge.toolbox.FEvent;
|
||||||
import forge.toolbox.FProgressBar;
|
import forge.toolbox.FProgressBar;
|
||||||
|
import forge.util.Localizer;
|
||||||
|
|
||||||
public class SplashScreen extends FContainer {
|
public class SplashScreen extends FContainer {
|
||||||
private TextureRegion background;
|
private TextureRegion background;
|
||||||
private final FProgressBar progressBar;
|
private final FProgressBar progressBar;
|
||||||
private FSkinFont disclaimerFont;
|
private FSkinFont disclaimerFont;
|
||||||
private boolean preparedForDialogs;
|
private boolean preparedForDialogs, showModeSelector, init, nobg;
|
||||||
|
private FButton btnAdventure, btnHome;
|
||||||
|
private BGAnimation bgAnimation;
|
||||||
|
|
||||||
public SplashScreen() {
|
public SplashScreen() {
|
||||||
progressBar = new FProgressBar();
|
progressBar = new FProgressBar();
|
||||||
progressBar.setDescription("Welcome to Forge");
|
progressBar.setDescription("Welcome to Forge");
|
||||||
|
bgAnimation = new BGAnimation();
|
||||||
}
|
}
|
||||||
|
|
||||||
public FProgressBar getProgressBar() {
|
public FProgressBar getProgressBar() {
|
||||||
@@ -63,14 +72,140 @@ public class SplashScreen extends FContainer {
|
|||||||
preparedForDialogs = true;
|
preparedForDialogs = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void setShowModeSelector(boolean value) {
|
||||||
|
showModeSelector = value;
|
||||||
|
}
|
||||||
|
|
||||||
|
private class BGAnimation extends ForgeAnimation {
|
||||||
|
private static final float DURATION = 0.8f;
|
||||||
|
private float progress = 0;
|
||||||
|
private boolean finished, openAdventure;
|
||||||
|
|
||||||
|
public void drawBackground(Graphics g) {
|
||||||
|
float percentage = progress / DURATION;
|
||||||
|
if (percentage < 0) {
|
||||||
|
percentage = 0;
|
||||||
|
} else if (percentage > 1) {
|
||||||
|
percentage = 1;
|
||||||
|
}
|
||||||
|
if (nobg) {
|
||||||
|
float scale = 1.3f+(percentage*0.7f);
|
||||||
|
float hscale = 1.5f+(percentage*0.9f);
|
||||||
|
float logoHeight = FSkin.hdLogo.getHeight()*scale;
|
||||||
|
float logoWidth = FSkin.hdLogo.getWidth()*scale;
|
||||||
|
float logoY = getHeight()/2 - logoHeight/hscale;
|
||||||
|
float logoX = getWidth()/2 - logoWidth/2;
|
||||||
|
float mod = getHeight()/2 - logoHeight/2;
|
||||||
|
float oldalpha = g.getfloatAlphaComposite();
|
||||||
|
g.setAlphaComposite(oldalpha-percentage);
|
||||||
|
g.drawImage(FSkin.hdLogo, logoX, logoY+(mod*percentage), logoWidth, logoHeight);
|
||||||
|
g.setAlphaComposite(oldalpha);
|
||||||
|
} else if (showModeSelector)
|
||||||
|
showSelector(g);
|
||||||
|
else
|
||||||
|
showSplash(g);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected boolean advance(float dt) {
|
||||||
|
progress += dt;
|
||||||
|
return progress < DURATION;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void onEnd(boolean endingAll) {
|
||||||
|
if (nobg) {
|
||||||
|
if (openAdventure)
|
||||||
|
Forge.openAdventure();
|
||||||
|
else
|
||||||
|
Forge.openHomeDefault();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void drawBackground(Graphics g) {
|
protected void drawBackground(Graphics g) {
|
||||||
|
bgAnimation.start();
|
||||||
|
bgAnimation.drawBackground(g);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void showSelector(Graphics g) {
|
||||||
|
g.drawImage(FSkinTexture.BG_TEXTURE, 0, 0, getWidth(), getHeight());
|
||||||
|
|
||||||
|
float x, y, w, h;
|
||||||
|
float backgroundRatio = (float) background.getRegionWidth() / background.getRegionHeight();
|
||||||
|
float screenRatio = getWidth() / getHeight();
|
||||||
|
if (backgroundRatio > screenRatio) {
|
||||||
|
x = 0;
|
||||||
|
w = getWidth();
|
||||||
|
h = getWidth() * backgroundRatio;
|
||||||
|
y = (getHeight() - h) / 2;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
y = 0;
|
||||||
|
h = getHeight();
|
||||||
|
w = getHeight() / backgroundRatio;
|
||||||
|
x = (getWidth() - w) / 2;
|
||||||
|
}
|
||||||
|
if (FSkin.hdLogo != null) {
|
||||||
|
g.drawImage(FSkin.hdLogo, getWidth()/2 - (FSkin.hdLogo.getWidth()*1.3f)/2, getHeight()/2 - (FSkin.hdLogo.getHeight()*1.3f)/1.5f, FSkin.hdLogo.getWidth()*1.3f, FSkin.hdLogo.getHeight()*1.3f);
|
||||||
|
} else {
|
||||||
|
g.drawImage(background, x, y, w, h);
|
||||||
|
}
|
||||||
|
y += h * 295f / 450f;
|
||||||
|
float padding = 20f / 450f * w;
|
||||||
|
float height = 57f / 450f * h;
|
||||||
|
|
||||||
|
if (!init) {
|
||||||
|
btnAdventure = new FButton(Localizer.getInstance().getMessageorUseDefault("lblAdventureMode", "Adventure Mode"));
|
||||||
|
btnHome = new FButton(Localizer.getInstance().getMessageorUseDefault("lblClassicMode", "Classic Mode"));
|
||||||
|
btnAdventure.setCommand(new FEvent.FEventHandler() {
|
||||||
|
@Override
|
||||||
|
public void handleEvent(FEvent e) {
|
||||||
|
if (FSkin.hdLogo == null)
|
||||||
|
Forge.openAdventure();
|
||||||
|
else {
|
||||||
|
btnAdventure.setVisible(false);
|
||||||
|
btnHome.setVisible(false);
|
||||||
|
nobg = true;
|
||||||
|
bgAnimation.progress = 0;
|
||||||
|
bgAnimation.openAdventure = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
btnHome.setCommand(new FEvent.FEventHandler() {
|
||||||
|
@Override
|
||||||
|
public void handleEvent(FEvent e) {
|
||||||
|
if (FSkin.hdLogo == null)
|
||||||
|
Forge.openHomeDefault();
|
||||||
|
else {
|
||||||
|
btnAdventure.setVisible(false);
|
||||||
|
btnHome.setVisible(false);
|
||||||
|
nobg = true;
|
||||||
|
bgAnimation.progress = 0;
|
||||||
|
bgAnimation.openAdventure = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
float btn_w = (w - 2 * padding);
|
||||||
|
float btn_x = x + padding;
|
||||||
|
float btn_y = y + padding;
|
||||||
|
btnHome.setFont(FSkinFont.get(22));
|
||||||
|
btnAdventure.setFont(FSkinFont.get(22));
|
||||||
|
btnHome.setBounds(btn_x, btn_y, btn_w, height);
|
||||||
|
add(btnHome);
|
||||||
|
btnAdventure.setBounds(btn_x, btn_y+height+padding/2, btn_w, height);
|
||||||
|
add(btnAdventure);
|
||||||
|
init = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
private void showSplash(Graphics g) {
|
||||||
if (background == null) { return; }
|
if (background == null) { return; }
|
||||||
|
|
||||||
g.drawImage(FSkinTexture.BG_TEXTURE, 0, 0, getWidth(), getHeight());
|
g.drawImage(FSkinTexture.BG_TEXTURE, 0, 0, getWidth(), getHeight());
|
||||||
|
|
||||||
float x, y, w, h;
|
float x, y, w, h;
|
||||||
float backgroundRatio = background.getRegionWidth() / background.getRegionHeight();
|
float backgroundRatio = (float) background.getRegionWidth() / background.getRegionHeight();
|
||||||
float screenRatio = getWidth() / getHeight();
|
float screenRatio = getWidth() / getHeight();
|
||||||
if (backgroundRatio > screenRatio) {
|
if (backgroundRatio > screenRatio) {
|
||||||
x = 0;
|
x = 0;
|
||||||
|
|||||||
@@ -304,6 +304,10 @@ public class MatchController extends AbstractGuiGame {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void finishGame() {
|
public void finishGame() {
|
||||||
|
if (Forge.isMobileAdventureMode) {
|
||||||
|
Forge.clearCurrentScreen();
|
||||||
|
return;
|
||||||
|
}
|
||||||
if (hasLocalPlayers() || getGameView().isMatchOver()) {
|
if (hasLocalPlayers() || getGameView().isMatchOver()) {
|
||||||
view.setViewWinLose(new ViewWinLose(getGameView()));
|
view.setViewWinLose(new ViewWinLose(getGameView()));
|
||||||
view.getViewWinLose().setVisible(true);
|
view.getViewWinLose().setVisible(true);
|
||||||
|
|||||||
@@ -359,16 +359,20 @@ public class MatchScreen extends FScreen {
|
|||||||
if (viewWinLose == null) {
|
if (viewWinLose == null) {
|
||||||
gameMenu.getChildAt(0).setEnabled(!game.isMulligan());
|
gameMenu.getChildAt(0).setEnabled(!game.isMulligan());
|
||||||
gameMenu.getChildAt(1).setEnabled(!game.isMulligan());
|
gameMenu.getChildAt(1).setEnabled(!game.isMulligan());
|
||||||
|
if (!Forge.isMobileAdventureMode) {
|
||||||
gameMenu.getChildAt(2).setEnabled(!game.isMulligan());
|
gameMenu.getChildAt(2).setEnabled(!game.isMulligan());
|
||||||
gameMenu.getChildAt(3).setEnabled(false);
|
gameMenu.getChildAt(3).setEnabled(false);
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
gameMenu.getChildAt(0).setEnabled(false);
|
gameMenu.getChildAt(0).setEnabled(false);
|
||||||
gameMenu.getChildAt(1).setEnabled(false);
|
gameMenu.getChildAt(1).setEnabled(false);
|
||||||
|
if (!Forge.isMobileAdventureMode) {
|
||||||
gameMenu.getChildAt(2).setEnabled(false);
|
gameMenu.getChildAt(2).setEnabled(false);
|
||||||
gameMenu.getChildAt(3).setEnabled(true);
|
gameMenu.getChildAt(3).setEnabled(true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
if (devMenu!=null) {
|
if (devMenu!=null) {
|
||||||
if (devMenu.isVisible()){
|
if (devMenu.isVisible()){
|
||||||
if (viewWinLose == null)
|
if (viewWinLose == null)
|
||||||
|
|||||||
@@ -68,6 +68,7 @@ public class VGameMenu extends FDropDownMenu {
|
|||||||
autoYields.show();
|
autoYields.show();
|
||||||
}
|
}
|
||||||
}));
|
}));
|
||||||
|
if (!Forge.isMobileAdventureMode) {
|
||||||
addItem(new FMenuItem(localizer.getMessage("lblSettings"), Forge.hdbuttons ? FSkinImage.HDPREFERENCE : FSkinImage.SETTINGS, new FEventHandler() {
|
addItem(new FMenuItem(localizer.getMessage("lblSettings"), Forge.hdbuttons ? FSkinImage.HDPREFERENCE : FSkinImage.SETTINGS, new FEventHandler() {
|
||||||
@Override
|
@Override
|
||||||
public void handleEvent(FEvent e) {
|
public void handleEvent(FEvent e) {
|
||||||
@@ -87,3 +88,4 @@ public class VGameMenu extends FDropDownMenu {
|
|||||||
}));
|
}));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|||||||
@@ -55,6 +55,8 @@ public class VPlayers extends FDropDown {
|
|||||||
player = player0;
|
player = player0;
|
||||||
playerDeck = MatchController.getPlayerDeck(player0);
|
playerDeck = MatchController.getPlayerDeck(player0);
|
||||||
btnDeck = new FLabel.ButtonBuilder().opaque(true).iconScaleFactor(0.99f).selectable().alphaComposite(1).iconInBackground(true).build();
|
btnDeck = new FLabel.ButtonBuilder().opaque(true).iconScaleFactor(0.99f).selectable().alphaComposite(1).iconInBackground(true).build();
|
||||||
|
btnDeck.setEnabled(!Forge.isMobileAdventureMode);
|
||||||
|
btnDeck.setVisible(!Forge.isMobileAdventureMode);
|
||||||
btnDeck.setCommand(new FEvent.FEventHandler() {
|
btnDeck.setCommand(new FEvent.FEventHandler() {
|
||||||
@Override
|
@Override
|
||||||
public void handleEvent(FEvent e) {
|
public void handleEvent(FEvent e) {
|
||||||
@@ -86,9 +88,15 @@ public class VPlayers extends FDropDown {
|
|||||||
float x = PADDING;
|
float x = PADDING;
|
||||||
float y = PADDING;
|
float y = PADDING;
|
||||||
float h = getHeight() - 2 * y;
|
float h = getHeight() - 2 * y;
|
||||||
|
String details = player.getDetails();
|
||||||
|
if (Forge.isMobileAdventureMode) {
|
||||||
|
g.drawImage(MatchController.getPlayerAvatar(player), x, y, h, h);
|
||||||
|
} else {
|
||||||
|
details += playerDeck.getName();
|
||||||
|
}
|
||||||
x += h + PADDING;
|
x += h + PADDING;
|
||||||
//Draw Player Details
|
//Draw Player Details
|
||||||
g.drawText(player.getDetails() + playerDeck.getName(), FONT, FList.FORE_COLOR, x, y, getWidth() - PADDING - x, h, true, Align.left, true);
|
g.drawText(details, FONT, FList.FORE_COLOR, x, y, getWidth() - PADDING - x, h, true, Align.left, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@@ -135,8 +135,10 @@ public abstract class FDisplayObject {
|
|||||||
//TODO: mouse detection on android?
|
//TODO: mouse detection on android?
|
||||||
if (Forge.afterDBloaded && !GuiBase.isAndroid()) {
|
if (Forge.afterDBloaded && !GuiBase.isAndroid()) {
|
||||||
Forge.hoveredCount = listeners.size();
|
Forge.hoveredCount = listeners.size();
|
||||||
|
if (Forge.getCurrentScreen() != null) {
|
||||||
if (!Forge.getCurrentScreen().toString().contains("Match"))
|
if (!Forge.getCurrentScreen().toString().contains("Match"))
|
||||||
Forge.hoveredCount = 1;
|
Forge.hoveredCount = 1;
|
||||||
|
}
|
||||||
if (exact) {
|
if (exact) {
|
||||||
setHovered(this.enabled && this.visible && ((FCardPanel) this).renderedCardContains(screenToLocalX(screenX), screenToLocalY(screenY)) && Forge.hoveredCount < 2);
|
setHovered(this.enabled && this.visible && ((FCardPanel) this).renderedCardContains(screenToLocalX(screenX), screenToLocalY(screenY)) && Forge.hoveredCount < 2);
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
@@ -11,6 +11,10 @@
|
|||||||
<name>Forge Gui</name>
|
<name>Forge Gui</name>
|
||||||
|
|
||||||
<repositories>
|
<repositories>
|
||||||
|
<repository>
|
||||||
|
<id>jitpack.io</id>
|
||||||
|
<url>https://jitpack.io</url>
|
||||||
|
</repository>
|
||||||
<repository>
|
<repository>
|
||||||
<id>4thline-repo</id>
|
<id>4thline-repo</id>
|
||||||
<url>http://4thline.org/m2</url>
|
<url>http://4thline.org/m2</url>
|
||||||
@@ -57,6 +61,12 @@
|
|||||||
<artifactId>lz4-java</artifactId>
|
<artifactId>lz4-java</artifactId>
|
||||||
<version>1.7.1</version>
|
<version>1.7.1</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>com.github.raeleus.TenPatch</groupId>
|
||||||
|
<artifactId>tenpatch</artifactId>
|
||||||
|
<version>5.2.2</version>
|
||||||
|
<scope>compile</scope>
|
||||||
|
</dependency>
|
||||||
</dependencies>
|
</dependencies>
|
||||||
|
|
||||||
</project>
|
</project>
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user