From aee9699d1406e0c5fdd0002b64f7886064e08060 Mon Sep 17 00:00:00 2001 From: Grimm Date: Tue, 7 Dec 2021 00:11:41 +0100 Subject: [PATCH] Added statistic --- .../adventure/character/PlayerSprite.java | 2 +- .../{world => player}/AdventurePlayer.java | 15 ++- .../adventure/player/PlayerStatistic.java | 83 +++++++++++++ .../PointOfInterest.java | 2 +- .../PointOfInterestChanges.java | 2 +- .../PointOfInterestMap.java | 4 +- .../adventure/scene/AdventureDeckEditor.java | 2 +- .../adventure/scene/DeckSelectScene.java | 2 +- .../java/forge/adventure/scene/DuelScene.java | 4 +- .../adventure/scene/PlayerStatisticScene.java | 113 ++++++++++++++++++ .../forge/adventure/scene/RewardScene.java | 4 +- .../java/forge/adventure/scene/SceneType.java | 3 +- .../forge/adventure/scene/SettingsScene.java | 6 - .../java/forge/adventure/scene/ShopScene.java | 4 - .../forge/adventure/scene/TileMapScene.java | 2 +- .../java/forge/adventure/stage/GameHUD.java | 7 +- .../java/forge/adventure/stage/MapSprite.java | 2 +- .../java/forge/adventure/stage/MapStage.java | 2 +- .../stage/PointOfInterestMapSprite.java | 2 +- .../java/forge/adventure/util/Controls.java | 2 + .../java/forge/adventure/util/Current.java | 2 +- .../java/forge/adventure/world/World.java | 4 +- .../java/forge/adventure/world/WorldSave.java | 4 +- forge-gui/res/adventure/Shandalar/ui/hud.json | 23 ++-- .../res/adventure/Shandalar/ui/settings.json | 2 +- .../res/adventure/Shandalar/ui/statistic.json | 97 +++++++++++++++ 26 files changed, 356 insertions(+), 39 deletions(-) rename forge-adventure/src/main/java/forge/adventure/{world => player}/AdventurePlayer.java (96%) create mode 100644 forge-adventure/src/main/java/forge/adventure/player/PlayerStatistic.java rename forge-adventure/src/main/java/forge/adventure/{world => pointofintrest}/PointOfInterest.java (98%) rename forge-adventure/src/main/java/forge/adventure/{world => pointofintrest}/PointOfInterestChanges.java (96%) rename forge-adventure/src/main/java/forge/adventure/{world => pointofintrest}/PointOfInterestMap.java (95%) create mode 100644 forge-adventure/src/main/java/forge/adventure/scene/PlayerStatisticScene.java create mode 100644 forge-gui/res/adventure/Shandalar/ui/statistic.json diff --git a/forge-adventure/src/main/java/forge/adventure/character/PlayerSprite.java b/forge-adventure/src/main/java/forge/adventure/character/PlayerSprite.java index 744654a115d..1eec9ea7a01 100644 --- a/forge-adventure/src/main/java/forge/adventure/character/PlayerSprite.java +++ b/forge-adventure/src/main/java/forge/adventure/character/PlayerSprite.java @@ -4,7 +4,7 @@ import com.badlogic.gdx.math.Vector2; import forge.adventure.stage.GameStage; import forge.adventure.util.Config; import forge.adventure.util.Current; -import forge.adventure.world.AdventurePlayer; +import forge.adventure.player.AdventurePlayer; /** * Class that will represent the player sprite on the map diff --git a/forge-adventure/src/main/java/forge/adventure/world/AdventurePlayer.java b/forge-adventure/src/main/java/forge/adventure/player/AdventurePlayer.java similarity index 96% rename from forge-adventure/src/main/java/forge/adventure/world/AdventurePlayer.java rename to forge-adventure/src/main/java/forge/adventure/player/AdventurePlayer.java index 7b607de8ff4..0f4760c7c0f 100644 --- a/forge-adventure/src/main/java/forge/adventure/world/AdventurePlayer.java +++ b/forge-adventure/src/main/java/forge/adventure/player/AdventurePlayer.java @@ -1,4 +1,4 @@ -package forge.adventure.world; +package forge.adventure.player; import com.badlogic.gdx.files.FileHandle; import com.badlogic.gdx.graphics.g2d.TextureRegion; @@ -6,6 +6,7 @@ import com.google.common.collect.Lists; import forge.adventure.data.DifficultyData; import forge.adventure.data.HeroListData; import forge.adventure.util.*; +import forge.adventure.world.WorldSave; import forge.deck.CardPool; import forge.deck.Deck; import forge.deck.DeckSection; @@ -31,8 +32,11 @@ public class AdventurePlayer implements Serializable, SaveFileContent { private int maxLife=20; private int life=20; private int selectedDeckIndex=0; + private PlayerStatistic statistic=new PlayerStatistic(); private Deck[] decks=new Deck[NUMBER_OF_DECKS]; private final DifficultyData difficultyData=new DifficultyData(); + + public AdventurePlayer() { @@ -41,9 +45,12 @@ public class AdventurePlayer implements Serializable, SaveFileContent { decks[i]=new Deck("Empty Deck"); } } + + public PlayerStatistic getStatistic(){return statistic;} + static public AdventurePlayer current() { - return WorldSave.currentSave.getPlayer(); + return WorldSave.getCurrentSave().getPlayer(); } private final CardPool cards=new CardPool(); private final ItemPool newCards=new ItemPool<>(InventoryItem.class); @@ -67,6 +74,7 @@ public class AdventurePlayer implements Serializable, SaveFileContent { heroRace = race; isFemale = !male; name = n; + statistic.clear(); newCards.clear(); onGoldChangeList.emit(); onLifeTotalChangeList.emit(); @@ -118,6 +126,8 @@ public class AdventurePlayer implements Serializable, SaveFileContent { @Override public void load(SaveFileData data) { + + this.statistic.load(data.readSubData("statistic")); this.difficultyData.startingLife=data.readInt("startingLife"); this.difficultyData.staringMoney=data.readInt("staringMoney"); this.difficultyData.startingDifficulty=data.readBool("startingDifficulty"); @@ -174,6 +184,7 @@ public class AdventurePlayer implements Serializable, SaveFileContent { SaveFileData data= new SaveFileData(); + data.store("statistic",this.statistic.save()); data.store("startingLife",this.difficultyData.startingLife); data.store("staringMoney",this.difficultyData.staringMoney); data.store("startingDifficulty",this.difficultyData.startingDifficulty); diff --git a/forge-adventure/src/main/java/forge/adventure/player/PlayerStatistic.java b/forge-adventure/src/main/java/forge/adventure/player/PlayerStatistic.java new file mode 100644 index 00000000000..a5aa5996fa0 --- /dev/null +++ b/forge-adventure/src/main/java/forge/adventure/player/PlayerStatistic.java @@ -0,0 +1,83 @@ +package forge.adventure.player; + +import forge.adventure.util.SaveFileContent; +import forge.adventure.util.SaveFileData; +import org.apache.commons.lang3.tuple.Pair; + +import java.util.HashMap; +import java.util.Map; + +public class PlayerStatistic implements SaveFileContent { + + HashMap> winLossRecord=new HashMap<>(); + int secondPlayed=0; + + public HashMap> getWinLossRecord() + { + return winLossRecord; + } + public int totalWins() + { + int wins=0; + for(Map.Entry> value:winLossRecord.entrySet()) + { + wins+=value.getValue().getLeft(); + } + return wins; + } + public int totalLoss() + { + int loss=0; + for(Map.Entry> value:winLossRecord.entrySet()) + { + loss+=value.getValue().getRight(); + } + return loss; + } + public float winLossRatio() + { + return (float) totalWins()/(float)totalLoss(); + } + public int getPlayTime() + { + return secondPlayed; + } + @Override + public void load(SaveFileData data) { + + winLossRecord = (HashMap>) data.readObject("winLossRecord"); + } + + public void setResult(String enemy,boolean win) + { + if(!winLossRecord.containsKey(enemy)) + { + if(win) + winLossRecord.put(enemy,Pair.of(1,0)); + else + winLossRecord.put(enemy,Pair.of(0,1)); + } + else + { + + if(win) + winLossRecord.put(enemy,Pair.of(winLossRecord.get(enemy).getLeft()+1,winLossRecord.get(enemy).getRight())); + else + winLossRecord.put(enemy,Pair.of(winLossRecord.get(enemy).getLeft(),winLossRecord.get(enemy).getRight()+1)); + } + } + + + @Override + public SaveFileData save() { + + SaveFileData data=new SaveFileData(); + data.storeObject("winLossRecord",winLossRecord); + return data; + } + + + public void clear() { + winLossRecord.clear(); + } +} diff --git a/forge-adventure/src/main/java/forge/adventure/world/PointOfInterest.java b/forge-adventure/src/main/java/forge/adventure/pointofintrest/PointOfInterest.java similarity index 98% rename from forge-adventure/src/main/java/forge/adventure/world/PointOfInterest.java rename to forge-adventure/src/main/java/forge/adventure/pointofintrest/PointOfInterest.java index 0b1b59d3a63..572841c97fb 100644 --- a/forge-adventure/src/main/java/forge/adventure/world/PointOfInterest.java +++ b/forge-adventure/src/main/java/forge/adventure/pointofintrest/PointOfInterest.java @@ -1,4 +1,4 @@ -package forge.adventure.world; +package forge.adventure.pointofintrest; import com.badlogic.gdx.graphics.g2d.Sprite; import com.badlogic.gdx.math.Rectangle; diff --git a/forge-adventure/src/main/java/forge/adventure/world/PointOfInterestChanges.java b/forge-adventure/src/main/java/forge/adventure/pointofintrest/PointOfInterestChanges.java similarity index 96% rename from forge-adventure/src/main/java/forge/adventure/world/PointOfInterestChanges.java rename to forge-adventure/src/main/java/forge/adventure/pointofintrest/PointOfInterestChanges.java index f03df301142..769a3c4e7f5 100644 --- a/forge-adventure/src/main/java/forge/adventure/world/PointOfInterestChanges.java +++ b/forge-adventure/src/main/java/forge/adventure/pointofintrest/PointOfInterestChanges.java @@ -1,4 +1,4 @@ -package forge.adventure.world; +package forge.adventure.pointofintrest; import java.util.HashMap; import java.util.HashSet; diff --git a/forge-adventure/src/main/java/forge/adventure/world/PointOfInterestMap.java b/forge-adventure/src/main/java/forge/adventure/pointofintrest/PointOfInterestMap.java similarity index 95% rename from forge-adventure/src/main/java/forge/adventure/world/PointOfInterestMap.java rename to forge-adventure/src/main/java/forge/adventure/pointofintrest/PointOfInterestMap.java index 9202066a025..305d99eb528 100644 --- a/forge-adventure/src/main/java/forge/adventure/world/PointOfInterestMap.java +++ b/forge-adventure/src/main/java/forge/adventure/pointofintrest/PointOfInterestMap.java @@ -1,4 +1,4 @@ -package forge.adventure.world; +package forge.adventure.pointofintrest; import forge.adventure.util.SaveFileContent; import forge.adventure.util.SaveFileData; @@ -17,7 +17,7 @@ public class PointOfInterestMap implements SaveFileContent { int chunkSize; private List[][] mapObjects; - PointOfInterestMap(int chunkSize, int tiles, int numberOfChunksX, int numberOfChunksY) { + public PointOfInterestMap(int chunkSize, int tiles, int numberOfChunksX, int numberOfChunksY) { this.tileSize = tiles; this.chunkSize = chunkSize; this.numberOfChunksX = numberOfChunksX; diff --git a/forge-adventure/src/main/java/forge/adventure/scene/AdventureDeckEditor.java b/forge-adventure/src/main/java/forge/adventure/scene/AdventureDeckEditor.java index d3508dba641..4aea111e892 100644 --- a/forge-adventure/src/main/java/forge/adventure/scene/AdventureDeckEditor.java +++ b/forge-adventure/src/main/java/forge/adventure/scene/AdventureDeckEditor.java @@ -6,7 +6,7 @@ import com.google.common.base.Function; import forge.Forge; import forge.Graphics; import forge.adventure.AdventureApplicationAdapter; -import forge.adventure.world.AdventurePlayer; +import forge.adventure.player.AdventurePlayer; import forge.assets.FImage; import forge.assets.FSkinFont; import forge.assets.FSkinImage; diff --git a/forge-adventure/src/main/java/forge/adventure/scene/DeckSelectScene.java b/forge-adventure/src/main/java/forge/adventure/scene/DeckSelectScene.java index 22bbd7faa37..68a1b24ede2 100644 --- a/forge-adventure/src/main/java/forge/adventure/scene/DeckSelectScene.java +++ b/forge-adventure/src/main/java/forge/adventure/scene/DeckSelectScene.java @@ -10,7 +10,7 @@ import com.badlogic.gdx.utils.IntMap; import forge.adventure.AdventureApplicationAdapter; import forge.adventure.util.Controls; import forge.adventure.util.Current; -import forge.adventure.world.AdventurePlayer; +import forge.adventure.player.AdventurePlayer; public class DeckSelectScene extends UIScene { private final IntMap buttons = new IntMap<>(); diff --git a/forge-adventure/src/main/java/forge/adventure/scene/DuelScene.java b/forge-adventure/src/main/java/forge/adventure/scene/DuelScene.java index 10fd7438fe1..c86a0252eb3 100644 --- a/forge-adventure/src/main/java/forge/adventure/scene/DuelScene.java +++ b/forge-adventure/src/main/java/forge/adventure/scene/DuelScene.java @@ -7,7 +7,7 @@ import forge.adventure.character.EnemySprite; import forge.adventure.character.PlayerSprite; import forge.adventure.util.Config; import forge.adventure.util.Current; -import forge.adventure.world.AdventurePlayer; +import forge.adventure.player.AdventurePlayer; import forge.assets.FSkin; import forge.deck.Deck; import forge.game.GameRules; @@ -48,12 +48,14 @@ public class DuelScene extends ForgeScene { public void GameEnd() { boolean winner=humanPlayer == hostedMatch.getGame().getMatch().getWinner(); + String enemyName=enemy.getData().name; Gdx.app.postRunnable(() -> { SoundSystem.instance.setBackgroundMusic(MusicPlaylist.MENUS); //start background music Scene last= AdventureApplicationAdapter.instance.switchToLast(); if(last instanceof HudScene) { + Current.player().getStatistic().setResult(enemyName,winner); ((HudScene)last).stage.setWinner(winner); } }); diff --git a/forge-adventure/src/main/java/forge/adventure/scene/PlayerStatisticScene.java b/forge-adventure/src/main/java/forge/adventure/scene/PlayerStatisticScene.java new file mode 100644 index 00000000000..6d2492dcac9 --- /dev/null +++ b/forge-adventure/src/main/java/forge/adventure/scene/PlayerStatisticScene.java @@ -0,0 +1,113 @@ +package forge.adventure.scene; + +import com.badlogic.gdx.Input; +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.utils.TextureRegionDrawable; +import com.badlogic.gdx.utils.Align; +import forge.adventure.AdventureApplicationAdapter; +import forge.adventure.character.EnemySprite; +import forge.adventure.data.EnemyData; +import forge.adventure.data.WorldData; +import forge.adventure.util.Controls; +import forge.adventure.util.Current; +import org.apache.commons.lang3.tuple.Pair; + +import java.util.Map; + +public class PlayerStatisticScene extends UIScene { + + + Image avatar; + Label totalWins; + Label totalLoss; + Label lossWinRatio; + private Table enemiesGroup; + + public PlayerStatisticScene() { + super("ui/statistic.json"); + } + + + @Override + public void dispose() { + } + + + @Override + public boolean keyPressed(int keycode) + { + if (keycode == Input.Keys.ESCAPE) + { + back(); + } + return true; + } + public boolean back() { + AdventureApplicationAdapter.instance.switchToLast(); + return true; + } + @Override + public void enter() { + super.enter(); + enemiesGroup.clear(); + if(avatar!=null) + { + avatar.setDrawable(new TextureRegionDrawable(Current.player().avatar())); + } + if(totalWins!=null) + { + totalWins.setText(Current.player().getStatistic().totalWins()); + } + if(totalLoss!=null) + { + totalLoss.setText(Current.player().getStatistic().totalLoss()); + } + if(lossWinRatio!=null) + { + lossWinRatio.setText(Float.toString(Current.player().getStatistic().winLossRatio())); + } + + for(Map.Entry> entry : Current.player().getStatistic().getWinLossRecord().entrySet()) + { + EnemyData data=WorldData.getEnemy(entry.getKey()); + if(data==null)continue; + Image enemyImage=new Image(); + enemyImage.setDrawable(new TextureRegionDrawable(new EnemySprite(data).getAvatar())); + enemyImage.setSize(8,8); + Label name = Controls.newLabel(data.name); + + enemiesGroup.add(enemyImage).align(Align.left).space(2); + enemiesGroup.add((data.name)).align(Align.left).space(2); + enemiesGroup.add((entry.getValue().getLeft().toString())).align(Align.right).space(2); + enemiesGroup.add(("/")).align(Align.right).space(2); + enemiesGroup.add((entry.getValue().getRight().toString())).align(Align.right).space(2); + enemiesGroup.row().space(5); + } + + } + @Override + public void resLoaded() { + super.resLoaded(); + enemiesGroup = new Table(Controls.GetSkin()); + + + enemiesGroup.row(); + ui.onButtonPress("return", () -> back()); + avatar=ui.findActor("avatar"); + + totalWins=ui.findActor("totalWins"); + totalLoss=ui.findActor("totalLoss"); + lossWinRatio=ui.findActor("lossWinRatio"); + + ScrollPane scrollPane = ui.findActor("enemies"); + scrollPane.setActor(enemiesGroup); + } + + @Override + public void create() { + + } +} diff --git a/forge-adventure/src/main/java/forge/adventure/scene/RewardScene.java b/forge-adventure/src/main/java/forge/adventure/scene/RewardScene.java index c391fd39294..ccc6875de9d 100644 --- a/forge-adventure/src/main/java/forge/adventure/scene/RewardScene.java +++ b/forge-adventure/src/main/java/forge/adventure/scene/RewardScene.java @@ -14,8 +14,8 @@ import forge.adventure.util.CardUtil; import forge.adventure.util.Current; import forge.adventure.util.Reward; import forge.adventure.util.RewardActor; -import forge.adventure.world.AdventurePlayer; -import forge.adventure.world.PointOfInterestChanges; +import forge.adventure.player.AdventurePlayer; +import forge.adventure.pointofintrest.PointOfInterestChanges; import forge.adventure.world.WorldSave; /** diff --git a/forge-adventure/src/main/java/forge/adventure/scene/SceneType.java b/forge-adventure/src/main/java/forge/adventure/scene/SceneType.java index d4025d48a45..89a2c78f72d 100644 --- a/forge-adventure/src/main/java/forge/adventure/scene/SceneType.java +++ b/forge-adventure/src/main/java/forge/adventure/scene/SceneType.java @@ -15,7 +15,8 @@ public enum SceneType { RewardScene(new forge.adventure.scene.RewardScene()), InnScene(new forge.adventure.scene.InnScene()), DeckSelectScene(new forge.adventure.scene.DeckSelectScene()), - ShopScene(new forge.adventure.scene.ShopScene()); + ShopScene(new forge.adventure.scene.ShopScene()), + PlayerStatisticScene(new forge.adventure.scene.PlayerStatisticScene()); public final forge.adventure.scene.Scene instance; diff --git a/forge-adventure/src/main/java/forge/adventure/scene/SettingsScene.java b/forge-adventure/src/main/java/forge/adventure/scene/SettingsScene.java index 1d51b89ea6e..c45b9e4e52a 100644 --- a/forge-adventure/src/main/java/forge/adventure/scene/SettingsScene.java +++ b/forge-adventure/src/main/java/forge/adventure/scene/SettingsScene.java @@ -221,10 +221,4 @@ public class SettingsScene extends UIScene { public void create() { } - - enum ControlTypes { - CheckBox, - Slider, - Resolution - } } diff --git a/forge-adventure/src/main/java/forge/adventure/scene/ShopScene.java b/forge-adventure/src/main/java/forge/adventure/scene/ShopScene.java index 4ffe0e2f29c..bda6dcd7a47 100644 --- a/forge-adventure/src/main/java/forge/adventure/scene/ShopScene.java +++ b/forge-adventure/src/main/java/forge/adventure/scene/ShopScene.java @@ -1,6 +1,5 @@ package forge.adventure.scene; -import com.badlogic.gdx.scenes.scene2d.Stage; import forge.screens.FScreen; /** @@ -10,7 +9,6 @@ import forge.screens.FScreen; public class ShopScene extends ForgeScene { AdventureDeckEditor screen; - Stage stage; public ShopScene() { @@ -18,8 +16,6 @@ public class ShopScene extends ForgeScene { @Override public void dispose() { - if (stage != null) - stage.dispose(); } diff --git a/forge-adventure/src/main/java/forge/adventure/scene/TileMapScene.java b/forge-adventure/src/main/java/forge/adventure/scene/TileMapScene.java index 5a37b723704..27ecf8f54a3 100644 --- a/forge-adventure/src/main/java/forge/adventure/scene/TileMapScene.java +++ b/forge-adventure/src/main/java/forge/adventure/scene/TileMapScene.java @@ -7,7 +7,7 @@ import forge.adventure.stage.MapStage; import forge.adventure.stage.PointOfInterestMapRenderer; import forge.adventure.util.Config; import forge.adventure.util.TemplateTmxMapLoader; -import forge.adventure.world.PointOfInterest; +import forge.adventure.pointofintrest.PointOfInterest; import forge.adventure.world.WorldSave; /** diff --git a/forge-adventure/src/main/java/forge/adventure/stage/GameHUD.java b/forge-adventure/src/main/java/forge/adventure/stage/GameHUD.java index 750d9b17cf7..841f9ecb5cd 100644 --- a/forge-adventure/src/main/java/forge/adventure/stage/GameHUD.java +++ b/forge-adventure/src/main/java/forge/adventure/stage/GameHUD.java @@ -15,7 +15,7 @@ import forge.adventure.scene.SceneType; import forge.adventure.util.Current; import forge.adventure.util.Config; import forge.adventure.util.UIActor; -import forge.adventure.world.AdventurePlayer; +import forge.adventure.player.AdventurePlayer; import forge.adventure.world.WorldSave; /** @@ -47,6 +47,7 @@ public class GameHUD extends Stage { avatar = ui.findActor("avatar"); ui.onButtonPress("menu", () -> menu()); + ui.onButtonPress("statistic",()-> AdventureApplicationAdapter.instance.switchScene(SceneType.PlayerStatisticScene.instance)); ui.onButtonPress("deck", () -> openDeck()); lifePoints = ui.findActor("lifePoints"); lifePoints.setText("20/20"); @@ -60,6 +61,10 @@ public class GameHUD extends Stage { WorldSave.getCurrentSave().onLoad(() -> enter()); } + private void statistic() { + + } + public static GameHUD getInstance() { return instance == null ? instance = new GameHUD(WorldStage.getInstance()) : instance; } diff --git a/forge-adventure/src/main/java/forge/adventure/stage/MapSprite.java b/forge-adventure/src/main/java/forge/adventure/stage/MapSprite.java index 5ad91391b49..14190ec12df 100644 --- a/forge-adventure/src/main/java/forge/adventure/stage/MapSprite.java +++ b/forge-adventure/src/main/java/forge/adventure/stage/MapSprite.java @@ -5,7 +5,7 @@ import com.badlogic.gdx.graphics.g2d.TextureRegion; import com.badlogic.gdx.math.Vector2; import com.badlogic.gdx.scenes.scene2d.Actor; import forge.adventure.data.BiomeSpriteData; -import forge.adventure.world.PointOfInterest; +import forge.adventure.pointofintrest.PointOfInterest; import forge.adventure.world.WorldSave; import org.apache.commons.lang3.tuple.Pair; diff --git a/forge-adventure/src/main/java/forge/adventure/stage/MapStage.java b/forge-adventure/src/main/java/forge/adventure/stage/MapStage.java index 93267acb8e9..dae72fb28f6 100644 --- a/forge-adventure/src/main/java/forge/adventure/stage/MapStage.java +++ b/forge-adventure/src/main/java/forge/adventure/stage/MapStage.java @@ -22,7 +22,7 @@ import forge.adventure.scene.SceneType; import forge.adventure.util.Config; import forge.adventure.util.Current; import forge.adventure.util.Reward; -import forge.adventure.world.PointOfInterestChanges; +import forge.adventure.pointofintrest.PointOfInterestChanges; import forge.adventure.world.WorldSave; import java.util.ArrayList; diff --git a/forge-adventure/src/main/java/forge/adventure/stage/PointOfInterestMapSprite.java b/forge-adventure/src/main/java/forge/adventure/stage/PointOfInterestMapSprite.java index 24d593d7e50..5651ced85ea 100644 --- a/forge-adventure/src/main/java/forge/adventure/stage/PointOfInterestMapSprite.java +++ b/forge-adventure/src/main/java/forge/adventure/stage/PointOfInterestMapSprite.java @@ -5,7 +5,7 @@ import com.badlogic.gdx.graphics.Pixmap; import com.badlogic.gdx.graphics.Texture; import com.badlogic.gdx.graphics.g2d.Batch; import com.badlogic.gdx.math.Rectangle; -import forge.adventure.world.PointOfInterest; +import forge.adventure.pointofintrest.PointOfInterest; /** * MapSprite for points of interest to add a bounding rect for collision detection diff --git a/forge-adventure/src/main/java/forge/adventure/util/Controls.java b/forge-adventure/src/main/java/forge/adventure/util/Controls.java index afc9538948a..c110e9ec9c5 100644 --- a/forge-adventure/src/main/java/forge/adventure/util/Controls.java +++ b/forge-adventure/src/main/java/forge/adventure/util/Controls.java @@ -126,4 +126,6 @@ public class Controls { Dialog ret = new Dialog(title, GetSkin()); return ret; } + + } diff --git a/forge-adventure/src/main/java/forge/adventure/util/Current.java b/forge-adventure/src/main/java/forge/adventure/util/Current.java index b526ee07ab1..9f8ddb94ceb 100644 --- a/forge-adventure/src/main/java/forge/adventure/util/Current.java +++ b/forge-adventure/src/main/java/forge/adventure/util/Current.java @@ -1,6 +1,6 @@ package forge.adventure.util; -import forge.adventure.world.AdventurePlayer; +import forge.adventure.player.AdventurePlayer; import forge.adventure.world.WorldSave; import forge.deck.Deck; /** diff --git a/forge-adventure/src/main/java/forge/adventure/world/World.java b/forge-adventure/src/main/java/forge/adventure/world/World.java index 2fe99fa445f..11d2cffbc25 100644 --- a/forge-adventure/src/main/java/forge/adventure/world/World.java +++ b/forge-adventure/src/main/java/forge/adventure/world/World.java @@ -9,6 +9,8 @@ import com.badlogic.gdx.scenes.scene2d.Actor; import com.badlogic.gdx.utils.Disposable; import com.badlogic.gdx.utils.Json; import forge.adventure.data.*; +import forge.adventure.pointofintrest.PointOfInterest; +import forge.adventure.pointofintrest.PointOfInterestMap; import forge.adventure.scene.Scene; import forge.adventure.util.Config; import forge.adventure.util.Paths; @@ -375,7 +377,7 @@ public class World implements Disposable, SaveFileContent { if(i==j||usedEdges.contains((long)i|((long)j<<32))) continue; - float dist = current.position.dst(towns.get(j).position); + float dist = current.getPosition().dst(towns.get(j).getPosition()); if (dist < smallestDistance) { smallestDistance = dist; smallestIndex = j; diff --git a/forge-adventure/src/main/java/forge/adventure/world/WorldSave.java b/forge-adventure/src/main/java/forge/adventure/world/WorldSave.java index f9ec6d57ae2..5b4b795bc39 100644 --- a/forge-adventure/src/main/java/forge/adventure/world/WorldSave.java +++ b/forge-adventure/src/main/java/forge/adventure/world/WorldSave.java @@ -1,6 +1,8 @@ package forge.adventure.world; import forge.adventure.data.DifficultyData; +import forge.adventure.player.AdventurePlayer; +import forge.adventure.pointofintrest.PointOfInterestChanges; import forge.adventure.stage.WorldStage; import forge.adventure.util.Config; import forge.adventure.util.SaveFileData; @@ -26,7 +28,7 @@ public class WorldSave { public WorldSaveHeader header = new WorldSaveHeader(); private final AdventurePlayer player=new AdventurePlayer(); private final World world=new World(); - private final HashMap pointOfInterestChanges=new HashMap<>(); + private final HashMap pointOfInterestChanges=new HashMap<>(); private final SignalList onLoadList=new SignalList(); diff --git a/forge-gui/res/adventure/Shandalar/ui/hud.json b/forge-gui/res/adventure/Shandalar/ui/hud.json index 01d221af329..c14e03e70d2 100644 --- a/forge-gui/res/adventure/Shandalar/ui/hud.json +++ b/forge-gui/res/adventure/Shandalar/ui/hud.json @@ -66,19 +66,28 @@ "name" : "deck" , "text" : "Deck", "width": 32, - "height": 32, + "height": 24, "x": 432, "y": 176 } , { - "type" : "TextButton", - "name" : "menu" , - "text" : "Menu", + "type" : "TextButton", + "name" : "statistic" , + "text" : "Status", "width": 32, - "height": 32, + "height": 24, "x": 432, - "y": 224 - } + "y": 204 + } , + { + "type" : "TextButton", + "name" : "menu" , + "text" : "Menu", + "width": 32, + "height": 24, + "x": 432, + "y": 232 + } ] diff --git a/forge-gui/res/adventure/Shandalar/ui/settings.json b/forge-gui/res/adventure/Shandalar/ui/settings.json index 9ce28803fb6..ec4fb69f80f 100644 --- a/forge-gui/res/adventure/Shandalar/ui/settings.json +++ b/forge-gui/res/adventure/Shandalar/ui/settings.json @@ -12,7 +12,7 @@ { "type" : "Scroll", - "name": "settings" + "name": "settings", "x": 10, "y": 10 , "width": 450, diff --git a/forge-gui/res/adventure/Shandalar/ui/statistic.json b/forge-gui/res/adventure/Shandalar/ui/statistic.json new file mode 100644 index 00000000000..18bc53684e4 --- /dev/null +++ b/forge-gui/res/adventure/Shandalar/ui/statistic.json @@ -0,0 +1,97 @@ +{ + "width": 480, + "height": 270, + "yDown": true, + "elements":[ + { + "type" : "Image", + "image":"ui/title_bg.png", + "width": 480, + "height": 270 + } , + + { + "type" : "Scroll", + "name": "enemies", + "x": 116, + "y": 10 , + "width": 344, + "height": 235 + } , + { + "type" : "Image", + "name": "avatar", + "x": 10, + "y": 10 , + "width": 64, + "height": 64 + } , + { + "type" : "Label", + "name": "totalWins", + "x": 90, + "y": 84 , + "width": 80, + "height": 24 + } , + { + "type" : "Label", + "text": "Win:", + "x": 10, + "y": 84 , + "width": 80, + "height": 24 + } , + { + "type" : "Label", + "name": "totalLoss", + "x": 90, + "y": 104 , + "width": 80, + "height": 24 + } , + { + "type" : "Label", + "text": "Loss:", + "x": 10, + "y": 104 , + "width": 80, + "height": 24 + } , + { + "type" : "Label", + "name": "lossWinRatio", + "x": 90, + "y": 124 , + "width": 80, + "height": 24 + } , + { + "type" : "Label", + "text": "Win Loss Ratio:", + "x": 10, + "y": 124 , + "width": 80, + "height": 24 + } , + { + "type" : "Image", + "image" : "ui/avatarhud.png" , + "x": 10, + "y": 10 , + "width": 64, + "height": 64 + } , + { + "type" : "TextButton", + "name" : "return" , + "text" : "Back" , + "width": 48, + "height": 16, + "x": 15, + "y": 250 + } + ] + + +} \ No newline at end of file