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