diff --git a/forge-adventure/pom.xml b/forge-adventure/pom.xml
index cb4ca672937..3d696393376 100644
--- a/forge-adventure/pom.xml
+++ b/forge-adventure/pom.xml
@@ -19,6 +19,13 @@
jitpack.io
https://jitpack.io
+
+ 4thline-repo
+ http://4thline.org/m2
+
+ false
+
+
src/main/java
@@ -62,7 +69,7 @@
${project.build.finalName}-jar-with-dependencies.jar
true
forge
- src/main/config/forge-adventure.ico
+ src/main/config/forge-adventure-editor.ico
forge.adventure.Main
false
@@ -110,7 +117,7 @@
true
forge
https://www.oracle.com/java/technologies/downloads/
- src/main/config/forge-adventure.ico
+ src/main/config/forge-adventure-editor.ico
forge.adventure.Main
false
@@ -297,12 +304,6 @@
22.0.0
compile
-
- forge
- forge-gui-mobile
- 1.6.54-SNAPSHOT
- compile
-
com.badlogicgames.gdx-controllers
gdx-controllers-desktop
diff --git a/forge-adventure/src/main/config/forge-adventure-mac.sh b/forge-adventure/src/main/config/forge-adventure-editor-mac.sh
similarity index 100%
rename from forge-adventure/src/main/config/forge-adventure-mac.sh
rename to forge-adventure/src/main/config/forge-adventure-editor-mac.sh
diff --git a/forge-adventure/src/main/config/forge-adventure.cmd b/forge-adventure/src/main/config/forge-adventure-editor.cmd
similarity index 100%
rename from forge-adventure/src/main/config/forge-adventure.cmd
rename to forge-adventure/src/main/config/forge-adventure-editor.cmd
diff --git a/forge-adventure/src/main/config/forge-adventure.command b/forge-adventure/src/main/config/forge-adventure-editor.command
similarity index 100%
rename from forge-adventure/src/main/config/forge-adventure.command
rename to forge-adventure/src/main/config/forge-adventure-editor.command
diff --git a/forge-adventure/src/main/config/forge-adventure-editor.ico b/forge-adventure/src/main/config/forge-adventure-editor.ico
new file mode 100644
index 00000000000..d9d869a7dfb
Binary files /dev/null and b/forge-adventure/src/main/config/forge-adventure-editor.ico differ
diff --git a/forge-adventure/src/main/config/forge-adventure.sh b/forge-adventure/src/main/config/forge-adventure-editor.sh
similarity index 100%
rename from forge-adventure/src/main/config/forge-adventure.sh
rename to forge-adventure/src/main/config/forge-adventure-editor.sh
diff --git a/forge-gui-desktop/pom.xml b/forge-gui-desktop/pom.xml
index ac3df2e206b..809b03181a0 100644
--- a/forge-gui-desktop/pom.xml
+++ b/forge-gui-desktop/pom.xml
@@ -560,11 +560,17 @@
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
@@ -575,10 +581,15 @@
+
+
+
+
+
diff --git a/forge-gui-mobile-dev/src/forge/app/Main.java b/forge-gui-mobile-dev/src/forge/app/Main.java
index d44e10a6b25..363d83480c9 100644
--- a/forge-gui-mobile-dev/src/forge/app/Main.java
+++ b/forge-gui-mobile-dev/src/forge/app/Main.java
@@ -22,6 +22,8 @@ import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
+import java.nio.file.Files;
+import java.nio.file.Paths;
public class Main {
public static void main(String[] args) {
@@ -46,18 +48,27 @@ public class Main {
}
// Set this to "true" to make the mobile game port run as a full-screen desktop application
- boolean desktopMode = cmd.hasOption("fullscreen");
+ boolean desktopMode = true;//cmd.hasOption("fullscreen");
// Set this to the location where you want the mobile game port to look for assets when working as a full-screen desktop application
// (uncomment the bottom version and comment the top one to load the res folder from the current folder the .jar is in if you would
// like to make the game load from a desktop game folder configuration).
- String desktopModeAssetsDir = "../forge-gui/";
- //String desktopModeAssetsDir = "./";
+ //String desktopModeAssetsDir = "../forge-gui/";
+ String desktopModeAssetsDir = "./";
+ if(!Files.exists(Paths.get(desktopModeAssetsDir+"res")))
+ desktopModeAssetsDir = "../forge-gui/";//try IDE run
// Assets directory used when the game fully emulates smartphone/tablet mode (desktopMode = false), useful when debugging from IDE
- String assetsDir = AssetsDownloader.SHARE_DESKTOP_ASSETS ? "../forge-gui/" : "testAssets/";
+ String assetsDir ;
if (!AssetsDownloader.SHARE_DESKTOP_ASSETS) {
+ assetsDir= "testAssets/";
FileUtil.ensureDirectoryExists(assetsDir);
}
+ else
+ {
+ assetsDir= "./";
+ if(!Files.exists(Paths.get(assetsDir+"res")))
+ assetsDir = "../forge-gui/";
+ }
// Place the file "switch_orientation.ini" to your assets folder to make the game switch to landscape orientation (unless desktopMode = true)
String switchOrientationFile = assetsDir + "switch_orientation.ini";
@@ -73,6 +84,7 @@ public class Main {
screenWidth = Integer.parseInt(res[0].trim());
screenHeight = Integer.parseInt(res[1].trim());
}
+ desktopMode=false;
}
// Fullscreen width and height for desktop mode (desktopMode = true)
diff --git a/forge-gui-mobile/src/forge/adventure/character/CharacterSprite.java b/forge-gui-mobile/src/forge/adventure/character/CharacterSprite.java
index 8fd5205f4e0..4604d138c5d 100644
--- a/forge-gui-mobile/src/forge/adventure/character/CharacterSprite.java
+++ b/forge-gui-mobile/src/forge/adventure/character/CharacterSprite.java
@@ -20,7 +20,7 @@ public class CharacterSprite extends MapActor {
private Animation currentAnimation = null;
private AnimationTypes currentAnimationType = AnimationTypes.Idle;
private AnimationDirections currentAnimationDir = AnimationDirections.None;
- private Array avatar=new Array<>();
+ private final Array avatar=new Array<>();
public boolean hidden = false;
public CharacterSprite(int id,String path) {
@@ -40,10 +40,6 @@ public class CharacterSprite extends MapActor {
protected void load(String path) {
if(path==null||path.isEmpty())return;
TextureAtlas atlas = Config.instance().getAtlas(path);
- /*
- for (Texture texture : new ObjectSet.ObjectSetIterator<>( atlas.getTextures()))
- texture.setFilter(Texture.TextureFilter.Nearest, Texture.TextureFilter.Nearest);
- */
animations.clear();
for (AnimationTypes stand : AnimationTypes.values()) {
if (stand == AnimationTypes.Avatar) {
diff --git a/forge-gui-mobile/src/forge/adventure/character/MapActor.java b/forge-gui-mobile/src/forge/adventure/character/MapActor.java
index e6a39646a85..fd8e4de2215 100644
--- a/forge-gui-mobile/src/forge/adventure/character/MapActor.java
+++ b/forge-gui-mobile/src/forge/adventure/character/MapActor.java
@@ -25,7 +25,7 @@ public class MapActor extends Actor {
removeIfEffectsAreFinished=true;
}
- class CurrentEffect
+ static class CurrentEffect
{
public CurrentEffect(String path,ParticleEffect effect,Vector2 offset,boolean overlay)
{
@@ -35,7 +35,7 @@ public class MapActor extends Actor {
this.overlay=overlay;
}
- private String path;
+ private final String path;
public ParticleEffect effect;
public Vector2 offset;
public boolean overlay=true;
@@ -63,7 +63,7 @@ public class MapActor extends Actor {
{
ParticleEffect effect = new ParticleEffect();
effect.load(Config.instance().getFile(path),Config.instance().getFile(path).parent());
- effects.add(new CurrentEffect(path,effect,offset,overlay));
+ effects.add(new CurrentEffect(path, effect, offset, overlay));
if(duration!=0)//ParticleEffect.setDuration uses an integer for some reason
{
for(ParticleEmitter emitter:effect.getEmitters()){
diff --git a/forge-gui-mobile/src/forge/adventure/character/RewardSprite.java b/forge-gui-mobile/src/forge/adventure/character/RewardSprite.java
index a6ba72c8b55..47cd0fe395c 100644
--- a/forge-gui-mobile/src/forge/adventure/character/RewardSprite.java
+++ b/forge-gui-mobile/src/forge/adventure/character/RewardSprite.java
@@ -11,7 +11,7 @@ import forge.adventure.util.Reward;
*/
public class RewardSprite extends CharacterSprite {
- private final String default_reward = "[\n" +
+ private final static String default_reward = "[\n" +
"\t\t{\n" +
"\t\t\t\"type\": \"gold\",\n" +
"\t\t\t\"count\": 10,\n" +
diff --git a/forge-gui-mobile/src/forge/adventure/data/BiomeSpriteData.java b/forge-gui-mobile/src/forge/adventure/data/BiomeSpriteData.java
index 3043eadce73..bd188ebb3b8 100644
--- a/forge-gui-mobile/src/forge/adventure/data/BiomeSpriteData.java
+++ b/forge-gui-mobile/src/forge/adventure/data/BiomeSpriteData.java
@@ -26,7 +26,7 @@ public class BiomeSpriteData implements SaveFileContent {
startArea=data.readDouble("startArea");
endArea=data.readDouble("endArea");
density=data.readDouble("density");
- resolution=data.readDouble("resolution");;
+ resolution=data.readDouble("resolution");
layer=data.readInt("layer");
}
diff --git a/forge-gui-mobile/src/forge/adventure/data/BiomeStructureData.java b/forge-gui-mobile/src/forge/adventure/data/BiomeStructureData.java
index cc2271953be..60117944564 100644
--- a/forge-gui-mobile/src/forge/adventure/data/BiomeStructureData.java
+++ b/forge-gui-mobile/src/forge/adventure/data/BiomeStructureData.java
@@ -45,10 +45,14 @@ public class BiomeStructureData {
this.structureAtlasPath=biomeStructureData.structureAtlasPath;
this.sourcePath=biomeStructureData.sourcePath;
this.maskPath=biomeStructureData.maskPath;
+ this.periodicInput=biomeStructureData.periodicInput;
this.x=biomeStructureData.x;
this.y=biomeStructureData.y;
this.width=biomeStructureData.width;
this.height=biomeStructureData.height;
+ this.periodicOutput=biomeStructureData.periodicOutput;
+ this.symmetry=biomeStructureData.symmetry;
+ this.ground=biomeStructureData.ground;
this.randomPosition=biomeStructureData.randomPosition;
if(biomeStructureData.mappingInfo!=null)
{
diff --git a/forge-gui-mobile/src/forge/adventure/data/EffectData.java b/forge-gui-mobile/src/forge/adventure/data/EffectData.java
index a41f9e7bfc1..77c12986070 100644
--- a/forge-gui-mobile/src/forge/adventure/data/EffectData.java
+++ b/forge-gui-mobile/src/forge/adventure/data/EffectData.java
@@ -65,7 +65,7 @@ public class EffectData implements Serializable {
if(name != null && !name.isEmpty()) description += name + "\n";
if(colorView) description += "Manasight.\n";
if(lifeModifier != 0)
- description += "Life: " + ((lifeModifier > 0) ? "+" : "") + lifeModifier + "\n";
+ description += "[+Life] " + ((lifeModifier > 0) ? "+" : "") + lifeModifier + "\n";
if(startBattleWithCard != null && startBattleWithCard.length != 0)
description+="Cards on battlefield: \n" + cardNames() + "\n";
if(changeStartCards != 0)
diff --git a/forge-gui-mobile/src/forge/adventure/data/EnemyData.java b/forge-gui-mobile/src/forge/adventure/data/EnemyData.java
index b4cb9db9622..a1c94c200a5 100644
--- a/forge-gui-mobile/src/forge/adventure/data/EnemyData.java
+++ b/forge-gui-mobile/src/forge/adventure/data/EnemyData.java
@@ -42,6 +42,8 @@ public class EnemyData {
life = enemyData.life;
equipment = enemyData.equipment;
colors = enemyData.colors;
+ teamNumber = enemyData.teamNumber;
+ nextEnemy =enemyData.nextEnemy==null?null: new EnemyData(enemyData.nextEnemy);
if(enemyData.rewards == null) {
rewards=null;
} else {
diff --git a/forge-gui-mobile/src/forge/adventure/data/ItemData.java b/forge-gui-mobile/src/forge/adventure/data/ItemData.java
index 294f47b7308..65c337e9dcc 100644
--- a/forge-gui-mobile/src/forge/adventure/data/ItemData.java
+++ b/forge-gui-mobile/src/forge/adventure/data/ItemData.java
@@ -43,6 +43,9 @@ public class ItemData {
iconName = cpy.iconName;
questItem = cpy.questItem;
cost = cpy.cost;
+ usableInPoi = cpy.usableInPoi;
+ usableOnWorldMap = cpy.usableOnWorldMap;
+ commandOnUse = cpy.commandOnUse;
manaNeeded = cpy.manaNeeded;
}
@@ -62,7 +65,7 @@ public class ItemData {
Json json = new Json();
FileHandle handle = Config.instance().getFile(Paths.ITEMS);
if (handle.exists()) {
- Array readJson = json.fromJson(Array.class, ItemData.class, handle);
+ Array readJson = json.fromJson(Array.class, ItemData.class, handle);
itemList = readJson;
}
@@ -88,7 +91,7 @@ public class ItemData {
if(effect != null)
result += effect.getDescription();
if(manaNeeded != 0)
- result += "Mana cost: "+manaNeeded;
+ result += manaNeeded+" [Mana]";
return result;
}
diff --git a/forge-gui-mobile/src/forge/adventure/data/PointOfInterestData.java b/forge-gui-mobile/src/forge/adventure/data/PointOfInterestData.java
index 412af979dcd..fe888ff566f 100644
--- a/forge-gui-mobile/src/forge/adventure/data/PointOfInterestData.java
+++ b/forge-gui-mobile/src/forge/adventure/data/PointOfInterestData.java
@@ -58,5 +58,7 @@ public class PointOfInterestData {
sprite=other.sprite;
map=other.map;
radiusFactor=other.radiusFactor;
+ offsetX=other.offsetX;
+ offsetY=other.offsetY;
}
}
diff --git a/forge-gui-mobile/src/forge/adventure/player/AdventurePlayer.java b/forge-gui-mobile/src/forge/adventure/player/AdventurePlayer.java
index a409d3ad5cd..39d63041b0a 100644
--- a/forge-gui-mobile/src/forge/adventure/player/AdventurePlayer.java
+++ b/forge-gui-mobile/src/forge/adventure/player/AdventurePlayer.java
@@ -66,12 +66,12 @@ public class AdventurePlayer implements Serializable, SaveFileContent {
private boolean announceCustom = false;
// Signals
- SignalList onLifeTotalChangeList = new SignalList();
- SignalList onManaTotalChangeList = new SignalList();
- SignalList onGoldChangeList = new SignalList();
- SignalList onPlayerChangeList = new SignalList();
- SignalList onEquipmentChange = new SignalList();
- SignalList onBlessing = new SignalList();
+ final SignalList onLifeTotalChangeList = new SignalList();
+ final SignalList onManaTotalChangeList = new SignalList();
+ final SignalList onGoldChangeList = new SignalList();
+ final SignalList onPlayerChangeList = new SignalList();
+ final SignalList onEquipmentChange = new SignalList();
+ final SignalList onBlessing = new SignalList();
public AdventurePlayer() { clear(); }
@@ -458,7 +458,7 @@ public class AdventurePlayer implements Serializable, SaveFileContent {
public boolean fullHeal() {
if (life < maxLife) {
- life = Math.max(maxLife, life);
+ life = maxLife;
onLifeTotalChangeList.emit();
return true;
}
diff --git a/forge-gui-mobile/src/forge/adventure/pointofintrest/PointOfInterestChanges.java b/forge-gui-mobile/src/forge/adventure/pointofintrest/PointOfInterestChanges.java
index 9130d385aac..ec5a953008f 100644
--- a/forge-gui-mobile/src/forge/adventure/pointofintrest/PointOfInterestChanges.java
+++ b/forge-gui-mobile/src/forge/adventure/pointofintrest/PointOfInterestChanges.java
@@ -13,7 +13,7 @@ import java.util.HashSet;
public class PointOfInterestChanges implements SaveFileContent {
private final HashSet deletedObjects=new HashSet<>();
private final HashMap> cardsBought = new HashMap<>();
- private java.util.Map mapFlags = new HashMap<>();
+ private final java.util.Map mapFlags = new HashMap<>();
public static class Map extends HashMap implements SaveFileContent {
@Override
diff --git a/forge-gui-mobile/src/forge/adventure/scene/AdventureDeckEditor.java b/forge-gui-mobile/src/forge/adventure/scene/AdventureDeckEditor.java
index dcc922651ca..0422b15c4d2 100644
--- a/forge-gui-mobile/src/forge/adventure/scene/AdventureDeckEditor.java
+++ b/forge-gui-mobile/src/forge/adventure/scene/AdventureDeckEditor.java
@@ -97,7 +97,7 @@ import java.util.Map;
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;
public AdventureDeckEditor(boolean createAsShop) {
super(e -> leave(),getPages());
diff --git a/forge-gui-mobile/src/forge/adventure/scene/ArenaScene.java b/forge-gui-mobile/src/forge/adventure/scene/ArenaScene.java
index f2374230a72..283b397d5dc 100644
--- a/forge-gui-mobile/src/forge/adventure/scene/ArenaScene.java
+++ b/forge-gui-mobile/src/forge/adventure/scene/ArenaScene.java
@@ -29,7 +29,7 @@ public class ArenaScene extends UIScene implements IAfterMatch {
private static ArenaScene object;
private final float gridSize;
private ArenaData arenaData;
- private TextraButton startButton;
+ private final TextraButton startButton;
public static ArenaScene instance() {
if(object==null)
@@ -37,24 +37,24 @@ public class ArenaScene extends UIScene implements IAfterMatch {
return object;
}
- private TextraButton doneButton;
+ private final TextraButton doneButton;
Dialog startDialog;
Dialog areYouSureDialog;
- private TextraLabel goldLabel;
+ private final TextraLabel goldLabel;
- private Group arenaPlane;
- private Random rand=new Random();
+ private final Group arenaPlane;
+ private final Random rand=new Random();
- Sprite fighterSpot;
- Sprite lostOverlay;
- Sprite up;
- Sprite upWin;
- Sprite side;
- Sprite sideWin;
- Sprite edge;
- Sprite edgeM;
- Sprite edgeWin;
- Sprite edgeWinM;
+ final Sprite fighterSpot;
+ final Sprite lostOverlay;
+ final Sprite up;
+ final Sprite upWin;
+ final Sprite side;
+ final Sprite sideWin;
+ final Sprite edge;
+ final Sprite edgeM;
+ final Sprite edgeWin;
+ final Sprite edgeWinM;
boolean arenaStarted=false;
private ArenaScene() {
super(Forge.isLandscapeMode() ? "ui/arena.json" : "ui/arena_portrait.json");
@@ -98,7 +98,7 @@ public class ArenaScene extends UIScene implements IAfterMatch {
if(object!=null&&object.equals(true))
startArena();
startDialog.hide();
- };
+ }
};
startDialog.text("Do you want to go into the Arena?");
startDialog.button(Forge.getLocalizer().getMessage("lblYes"), true);
diff --git a/forge-gui-mobile/src/forge/adventure/scene/GameScene.java b/forge-gui-mobile/src/forge/adventure/scene/GameScene.java
index e5f0fd7577d..f6376d54828 100644
--- a/forge-gui-mobile/src/forge/adventure/scene/GameScene.java
+++ b/forge-gui-mobile/src/forge/adventure/scene/GameScene.java
@@ -10,14 +10,9 @@ import forge.adventure.stage.WorldStage;
* does render the WorldStage and HUD
*/
public class GameScene extends HudScene {
- private float cameraWidth = 0f, cameraHeight = 0f;
public GameScene() {
super(WorldStage.getInstance());
- if (cameraWidth == 0f)
- cameraWidth = stage.getCamera().viewportWidth;
- if (cameraHeight == 0f)
- cameraHeight = stage.getCamera().viewportHeight;
}
diff --git a/forge-gui-mobile/src/forge/adventure/scene/InventoryScene.java b/forge-gui-mobile/src/forge/adventure/scene/InventoryScene.java
index 3f023c735d4..388cf1e581f 100644
--- a/forge-gui-mobile/src/forge/adventure/scene/InventoryScene.java
+++ b/forge-gui-mobile/src/forge/adventure/scene/InventoryScene.java
@@ -30,9 +30,9 @@ public class InventoryScene extends UIScene {
TextraLabel itemDescription;
Dialog confirm;
Dialog useDialog;
- private Table inventory;
- Array