diff --git a/forge-adventure/src/main/java/forge/adventure/scene/PlayerStatisticScene.java b/forge-adventure/src/main/java/forge/adventure/scene/PlayerStatisticScene.java index 6d2492dcac9..dd084daf674 100644 --- a/forge-adventure/src/main/java/forge/adventure/scene/PlayerStatisticScene.java +++ b/forge-adventure/src/main/java/forge/adventure/scene/PlayerStatisticScene.java @@ -79,11 +79,11 @@ public class PlayerStatisticScene extends UIScene { 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.add(enemyImage).align(Align.left).space(5); + enemiesGroup.add((data.name)).align(Align.left).space(5); + enemiesGroup.add((entry.getValue().getLeft().toString())).align(Align.right).space(5); + enemiesGroup.add(("/")).align(Align.right).space(5); + enemiesGroup.add((entry.getValue().getRight().toString())).align(Align.right).space(5); enemiesGroup.row().space(5); } diff --git a/forge-adventure/src/main/java/forge/adventure/util/CardUtil.java b/forge-adventure/src/main/java/forge/adventure/util/CardUtil.java index 45e61a45159..b1f0887130c 100644 --- a/forge-adventure/src/main/java/forge/adventure/util/CardUtil.java +++ b/forge-adventure/src/main/java/forge/adventure/util/CardUtil.java @@ -255,6 +255,8 @@ public class CardUtil { } public static int getCardPrice(PaperCard card) { + if(card==null) + return 0; switch (card.getRarity()) { case BasicLand: diff --git a/forge-gui-mobile/src/forge/itemmanager/views/ImageView.java b/forge-gui-mobile/src/forge/itemmanager/views/ImageView.java index 9b8edea6964..efbf7caa317 100644 --- a/forge-gui-mobile/src/forge/itemmanager/views/ImageView.java +++ b/forge-gui-mobile/src/forge/itemmanager/views/ImageView.java @@ -1,63 +1,40 @@ package forge.itemmanager.views; -import java.util.ArrayList; -import java.util.List; -import java.util.Map; -import java.util.Map.Entry; -import java.util.TreeMap; - import com.badlogic.gdx.graphics.Color; import com.badlogic.gdx.graphics.Texture; import com.badlogic.gdx.graphics.g2d.TextureRegion; import com.badlogic.gdx.math.Rectangle; import com.badlogic.gdx.math.Vector2; import com.badlogic.gdx.utils.Align; - import forge.Forge; import forge.Forge.KeyInputAdapter; import forge.Graphics; import forge.ImageKeys; -import forge.assets.FImage; -import forge.assets.FImageComplex; -import forge.assets.FSkin; -import forge.assets.FSkinColor; +import forge.assets.*; import forge.assets.FSkinColor.Colors; -import forge.assets.FSkinFont; -import forge.assets.FSkinImage; -import forge.assets.ImageCache; import forge.card.*; import forge.card.CardRenderer.CardStackPosition; -import forge.deck.ArchetypeDeckGenerator; -import forge.deck.CardThemedDeckGenerator; -import forge.deck.CommanderDeckGenerator; -import forge.deck.DeckProxy; -import forge.deck.FDeckViewer; +import forge.deck.*; import forge.deck.io.DeckPreferences; import forge.game.card.CardView; import forge.gamemodes.planarconquest.ConquestCommander; import forge.item.InventoryItem; import forge.item.PaperCard; -import forge.itemmanager.ColumnDef; -import forge.itemmanager.GroupDef; -import forge.itemmanager.ItemColumn; -import forge.itemmanager.ItemManager; -import forge.itemmanager.ItemManagerConfig; -import forge.itemmanager.ItemManagerModel; -import forge.itemmanager.SItemManagerUtil; +import forge.itemmanager.*; import forge.itemmanager.filters.ItemFilter; -import forge.toolbox.FCardPanel; -import forge.toolbox.FComboBox; -import forge.toolbox.FDisplayObject; -import forge.toolbox.FEvent; +import forge.toolbox.*; import forge.toolbox.FEvent.FEventHandler; -import forge.toolbox.FLabel; -import forge.toolbox.FScrollPane; -import forge.toolbox.FTextField; import forge.util.ImageUtil; import forge.util.Localizer; import forge.util.TextUtil; import forge.util.Utils; +import java.util.ArrayList; +import java.util.List; +import java.util.Map; +import java.util.Map.Entry; +import java.util.TreeMap; + public class ImageView extends ItemView { private static final float PADDING = Utils.scale(5); private static final float PILE_SPACING_Y = 0.1f; @@ -584,7 +561,10 @@ public class ImageView extends ItemView { private ItemInfo getItemAtPoint(float x, float y) { //check selected items first since they appear on top for (int i = selectedIndices.size() - 1; i >= 0; i--) { - ItemInfo item = orderedItems.get(selectedIndices.get(i)); + int currentIndex=selectedIndices.get(i); + if(currentIndex<0||orderedItems.size()<=currentIndex) + continue; + ItemInfo item = orderedItems.get(currentIndex); float relX = x + item.group.getScrollLeft() - item.group.getLeft(); float relY = y + getScrollValue(); if (item.contains(relX, relY)) { @@ -760,16 +740,20 @@ public class ImageView extends ItemView { @Override public void scrollSelectionIntoView() { if (selectedIndices.isEmpty()) { return; } + int index=selectedIndices.get(0); + if(index<0||orderedItems.size()<=index) { return ; } - ItemInfo itemInfo = orderedItems.get(selectedIndices.get(0)); + ItemInfo itemInfo = orderedItems.get(index); getScroller().scrollIntoView(itemInfo); } @Override public Rectangle getSelectionBounds() { - if (selectedIndices.isEmpty()) { return null; } + if (selectedIndices.isEmpty()) { return new Rectangle(); } - ItemInfo itemInfo = orderedItems.get(selectedIndices.get(0)); + int index=selectedIndices.get(0); + if(index<0||orderedItems.size()<=index) { return new Rectangle(); } + ItemInfo itemInfo = orderedItems.get(index); Vector2 relPos = itemInfo.group.getChildRelativePosition(itemInfo); return new Rectangle(itemInfo.group.screenPos.x + relPos.x - SEL_BORDER_SIZE + itemInfo.group.getLeft(), itemInfo.group.screenPos.y + relPos.y - SEL_BORDER_SIZE, diff --git a/forge-gui/res/adventure/Shandalar/decks/bear.json b/forge-gui/res/adventure/Shandalar/decks/bear.json index 0df1259a655..95941b98123 100644 --- a/forge-gui/res/adventure/Shandalar/decks/bear.json +++ b/forge-gui/res/adventure/Shandalar/decks/bear.json @@ -6,7 +6,7 @@ "colors":["Green"], "tribe":"Bear", "tribeCards":1.0, - "tribeSynergyCards":0.2 - "rares":0.8 + "tribeSynergyCards":0.2, + "rares":0.4 } } diff --git a/forge-gui/res/adventure/Shandalar/decks/wurm.json b/forge-gui/res/adventure/Shandalar/decks/wurm.json new file mode 100644 index 00000000000..0c56dc06897 --- /dev/null +++ b/forge-gui/res/adventure/Shandalar/decks/wurm.json @@ -0,0 +1,11 @@ +{ +"name":"Wurm", + "template": + { + "count":60, + "colors":["Green"], + "tribe":"Wurm", + "tribeCards":1.0, + "rares":0.3 + } +} diff --git a/forge-gui/res/adventure/Shandalar/maps/main.tiled-session b/forge-gui/res/adventure/Shandalar/maps/main.tiled-session index 88f6a995735..0ed50bc94d7 100644 --- a/forge-gui/res/adventure/Shandalar/maps/main.tiled-session +++ b/forge-gui/res/adventure/Shandalar/maps/main.tiled-session @@ -7,12 +7,28 @@ ], "file.lastUsedOpenFilter": "Alle Dateien (*)", "fileStates": { + "map/cave_1.tmx": { + "scale": 3.8134072580645157, + "selectedLayer": 4, + "viewCenter": { + "x": 232.07592059002357, + "y": 136.0987602104206 + } + }, + "map/cave_2.tmx": { + "scale": 3.8134072580645157, + "selectedLayer": 1, + "viewCenter": { + "x": 231.8136879113908, + "y": 135.8365275317878 + } + }, "map/crypt.tmx": { "scale": 3.8134072580645157, "selectedLayer": 0, "viewCenter": { - "x": 231.8136879113908, - "y": 136.0987602104206 + "x": 232.07592059002357, + "y": 136.36099288905336 } }, "map/forest_town.tmx": { @@ -59,8 +75,8 @@ "scale": 1.7753124999999998, "selectedLayer": 3, "viewCenter": { - "x": 240.52103502904419, - "y": 135.75074810772753 + "x": 239.957753916564, + "y": 136.31402922020771 } }, "map/waste_town.tmx": { diff --git a/forge-gui/res/adventure/Shandalar/maps/map/cave_1.tmx b/forge-gui/res/adventure/Shandalar/maps/map/cave_1.tmx new file mode 100644 index 00000000000..00c3bb50f10 --- /dev/null +++ b/forge-gui/res/adventure/Shandalar/maps/map/cave_1.tmx @@ -0,0 +1,47 @@ + + + + + + + + + + eJzz42Rg8BvFo3gUj+JRPIpH8YjAAAvyrVM= + + + + + eJxz42RgcBvFo3gA8CoOBoY1HPS31x2IHwPxaqDdTzjp4waQX58CaWTgSie/ogOY31fTMPyx2YvuBlrYTcheWoX7MyBeAfTPSg7sdi4Hir+gYTyD7Ee3m9Z2YrObXnaixzc98hIy9oDa6zVE7QUATYCf+g== + + + + + + + + eJxjYBgFo2AUjIJRMApGwUgBAAf4AAE= + + + + + eJxjYBgFo2AUjIJRMApGwUgBAAf4AAE= + + + + + + + + + + + + + + + + + + + diff --git a/forge-gui/res/adventure/Shandalar/maps/map/cave_2.tmx b/forge-gui/res/adventure/Shandalar/maps/map/cave_2.tmx new file mode 100644 index 00000000000..0a69eccf144 --- /dev/null +++ b/forge-gui/res/adventure/Shandalar/maps/map/cave_2.tmx @@ -0,0 +1,39 @@ + + + + + + + + + + eJzz42Rg8BvFo3gUj+JRPIpH8YjAAAvyrVM= + + + + + eJxz42RgcBvFo3gE4lUcDAyrgXgNB33tfAqkQcCVjn59BsQrOSD2Puakr789oP4FgeVAO18MgJ+9oGFPDz8jxzEorEFsLzqHMz3DGjmc6Rm/IOzOSf+8hBzW9IhXWtgLAD1zph0= + + + + + + + + eJxjYBgFo2AUjIJRMApGwUgBAAf4AAE= + + + + + eJxjYBgFo2AUjIJRMApGwUgBAAf4AAE= + + + + + + + + + + + diff --git a/forge-gui/res/adventure/Shandalar/maps/tileset/buildings.atlas b/forge-gui/res/adventure/Shandalar/maps/tileset/buildings.atlas index c40c121f8c5..73aceb68f2d 100644 --- a/forge-gui/res/adventure/Shandalar/maps/tileset/buildings.atlas +++ b/forge-gui/res/adventure/Shandalar/maps/tileset/buildings.atlas @@ -33,7 +33,10 @@ WasteTown size: 48, 48 Gate xy: 384, 128 - size: 64, 48 + size: 64, 48 +Cave + xy: 192, 272 + size: 32, 32 Monestory xy: 384, 592 size: 64, 64 diff --git a/forge-gui/res/adventure/Shandalar/maps/tileset/main.tsx b/forge-gui/res/adventure/Shandalar/maps/tileset/main.tsx index 03812847a5f..43b6bccc6e1 100644 --- a/forge-gui/res/adventure/Shandalar/maps/tileset/main.tsx +++ b/forge-gui/res/adventure/Shandalar/maps/tileset/main.tsx @@ -1,5 +1,5 @@ - + @@ -423,6 +423,44 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -443,6 +481,31 @@ + + + + + + + + + + + + + + + + + + + + + + + + + @@ -458,6 +521,43 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -515,6 +615,84 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/forge-gui/res/adventure/Shandalar/world/black.json b/forge-gui/res/adventure/Shandalar/world/black.json index 60f937217cc..3b1e998448d 100644 --- a/forge-gui/res/adventure/Shandalar/world/black.json +++ b/forge-gui/res/adventure/Shandalar/world/black.json @@ -24,6 +24,6 @@ "color": "110903", "spriteNames":[ "SwampTree","SwampTree2","DarkGras","Skull","SwampRock","DarkWood","Reed","Waterlily","Shroom","Shroom2"] , "enemies":[ "Zombie","Skeleton","Vampire","High Vampire","Zombie Lord","Big Zombie","Demon","Black Wiz1"] , - "pointsOfInterest":[ "Graveyard","Swamp Town"] + "pointsOfInterest":[ "Graveyard","Swamp Town","Cave_1","Cave_2"] } \ No newline at end of file diff --git a/forge-gui/res/adventure/Shandalar/world/blue.json b/forge-gui/res/adventure/Shandalar/world/blue.json index 09faebedcc5..9d10ac14ff3 100644 --- a/forge-gui/res/adventure/Shandalar/world/blue.json +++ b/forge-gui/res/adventure/Shandalar/world/blue.json @@ -24,5 +24,5 @@ "color": "10a2e0", "spriteNames":["IslandTree","Coral","Shell"] , "enemies":[ "Merfolk","Merfolk warrior","Merfolk Avatar","Djinn","Blue Wiz1"] , - "pointsOfInterest":[ "Island Town"] + "pointsOfInterest":[ "Island Town","Cave_1","Cave_2"] } \ No newline at end of file diff --git a/forge-gui/res/adventure/Shandalar/world/enemies.json b/forge-gui/res/adventure/Shandalar/world/enemies.json index d668c22a09f..a5bf8dbf902 100644 --- a/forge-gui/res/adventure/Shandalar/world/enemies.json +++ b/forge-gui/res/adventure/Shandalar/world/enemies.json @@ -488,6 +488,40 @@ } ] }, + { + "name": "Wurm", + "sprite": "sprites/leech.atlas", + "deck": "decks/wurm.json", + "spawnRate": 0.2, + "difficulty": 0.1, + "speed": 25, + "life": 14, + "rewards": [ + { + "type": "deckCard", + "probability": 1, + "count": 2, + "addMaxCount": 4 + }, + { + "type": "gold", + "probability": 0.7, + "count": 10, + "addMaxCount": 90 + }, + { + "type": "card", + "probability": 0.5, + "count": 2, + "colors": [ + "White" + ], + "rarity": [ + "Rare" + ] + } + ] + }, { "name": "Human elite", "sprite": "sprites/legionite.atlas", diff --git a/forge-gui/res/adventure/Shandalar/world/green.json b/forge-gui/res/adventure/Shandalar/world/green.json index 941b76c77ad..4004f831c0b 100644 --- a/forge-gui/res/adventure/Shandalar/world/green.json +++ b/forge-gui/res/adventure/Shandalar/world/green.json @@ -24,5 +24,5 @@ "color": "59a650" , "spriteNames":[ "WoodTree","WoodTree2","Bush","Stump","Moss","Stone","Flower","Wood"] , "enemies":[ "Elf","Elf warrior","High Elf","Dino","Snake","Hydra","Bear","Spider","Green Wiz1"] , - "pointsOfInterest":[ "Forest Town"] + "pointsOfInterest":[ "Forest Town","Cave_1","Cave_2"] } \ No newline at end of file diff --git a/forge-gui/res/adventure/Shandalar/world/points_of_interest.json b/forge-gui/res/adventure/Shandalar/world/points_of_interest.json index 50524720752..6d74678e166 100644 --- a/forge-gui/res/adventure/Shandalar/world/points_of_interest.json +++ b/forge-gui/res/adventure/Shandalar/world/points_of_interest.json @@ -54,5 +54,21 @@ "spriteAtlas":"maps/tileset/buildings.atlas", "sprite":"Graveyard", "map": "maps/map/graveyard.tmx" -} +}, + { + "name":"Cave_1", + "count":20, + "radiusFactor":0.8, + "spriteAtlas":"maps/tileset/buildings.atlas", + "sprite":"Cave", + "map": "maps/map/cave_1.tmx" + }, + { + "name":"Cave_2", + "count":20, + "radiusFactor":0.8, + "spriteAtlas":"maps/tileset/buildings.atlas", + "sprite":"Cave", + "map": "maps/map/cave_2.tmx" + } ] diff --git a/forge-gui/res/adventure/Shandalar/world/red.json b/forge-gui/res/adventure/Shandalar/world/red.json index df29b9f3cf3..3baf115072c 100644 --- a/forge-gui/res/adventure/Shandalar/world/red.json +++ b/forge-gui/res/adventure/Shandalar/world/red.json @@ -24,5 +24,5 @@ "color": "e53b28", "spriteNames":[ "MountainTree","MountainTree2","MountainRock","LargeMountainRock","Gravel"] , "enemies":[ "Goblin","Goblin Warrior","Goblin Chief","Minotaur","Devil","Red Wiz1"] , - "pointsOfInterest":[ "Mountain Town"] + "pointsOfInterest":[ "Mountain Town","Cave_1","Cave_2"] } \ No newline at end of file diff --git a/forge-gui/res/adventure/Shandalar/world/waste.json b/forge-gui/res/adventure/Shandalar/world/waste.json index c91f87ecf07..6488a368730 100644 --- a/forge-gui/res/adventure/Shandalar/world/waste.json +++ b/forge-gui/res/adventure/Shandalar/world/waste.json @@ -24,5 +24,5 @@ "color": "aeaeae", "spriteNames":[ "WasteTree","Stone","WasteRock"] , "enemies":[ "Golem","ClayGolem","Black Wiz1","White Wiz1","Blue Wiz1","Red Wiz1","Green Wiz1"] , - "pointsOfInterest":[ "Waste Town"] + "pointsOfInterest":[ "Waste Town","Cave_1","Cave_2"] } \ No newline at end of file diff --git a/forge-gui/res/adventure/Shandalar/world/white.json b/forge-gui/res/adventure/Shandalar/world/white.json index 6a0e8dfa3e1..c77193725f8 100644 --- a/forge-gui/res/adventure/Shandalar/world/white.json +++ b/forge-gui/res/adventure/Shandalar/world/white.json @@ -24,5 +24,5 @@ "color": "efe697" , "spriteNames":[ "PlainsTree","Cactus","PlainsRock","LargePlainsRock","DarkGras"] , "enemies":[ "Cat","Human","Human guard","Human elite","Knight","White Wiz1"] , - "pointsOfInterest":[ "Plains Town"] + "pointsOfInterest":[ "Plains Town","Cave_1","Cave_2"] } \ No newline at end of file