diff --git a/.idea/inspectionProfiles/Project_Default.xml b/.idea/inspectionProfiles/Project_Default.xml
index a5d4b84..f9a6ec1 100644
--- a/.idea/inspectionProfiles/Project_Default.xml
+++ b/.idea/inspectionProfiles/Project_Default.xml
@@ -3,7 +3,7 @@
-
+
diff --git a/src/main/java/cz/jull/market/Market.java b/src/main/java/cz/jull/market/Market.java
index e848d45..b76eb30 100644
--- a/src/main/java/cz/jull/market/Market.java
+++ b/src/main/java/cz/jull/market/Market.java
@@ -35,17 +35,17 @@ public class Market {
}
if (availableItems.contains(item)) {
- game.getPlayer().getInventory().add(item);
- game.getPlayer().setCoins(game.getPlayer().getCoins() - item.getPrice());
- game.getStrings().print("marketBuyMessage", item);
- } else {
if (List.of(Item.WHEAT_SEEDS, Item.HOPS_SEEDS, Item.GRAPEVINE_SEEDS, Item.WHEAT_FARMLAND, Item.HOPS_FARMLAND, Item.VINEYARD).contains(item)) {
for (int i = 0; i < game.getWaterType().getFarmlandAndVineyardCount() ; i++) {
game.getPlayer().getInventory().add(item);
game.getPlayer().setCoins(game.getPlayer().getCoins() - item.getPrice());
}
- return;
+ } else {
+ game.getPlayer().getInventory().add(item);
+ game.getPlayer().setCoins(game.getPlayer().getCoins() - item.getPrice());
}
+ game.getStrings().print("marketBuyMessage", item);
+ } else {
throw new ItemNotAvailableException("Item is not available");
}
}
@@ -57,7 +57,7 @@ public class Market {
}
if (game.getSoilType() == SoilType.LESS_FERTILE) {
- availableItems.addAll(List.of(Item.FENCE_WITH_COWS, Item.WHEAT_FARMLAND));
+ availableItems.addAll(List.of(Item.FENCE_WITH_COWS, Item.HOPS_FARMLAND, Item.HOPS_SEEDS));
}
if (game.getSoilType() == SoilType.FERTILE) {
diff --git a/src/main/java/cz/jull/tui/Menu.java b/src/main/java/cz/jull/tui/Menu.java
index 642d2d4..4ea4f90 100644
--- a/src/main/java/cz/jull/tui/Menu.java
+++ b/src/main/java/cz/jull/tui/Menu.java
@@ -3,17 +3,15 @@ package cz.jull.tui;
import cz.jull.Game;
import cz.jull.Item;
import cz.jull.actions.Action;
-import cz.jull.stats.surroundings.ForestType;
-import cz.jull.stats.surroundings.PathType;
-import cz.jull.stats.surroundings.SoilType;
-import cz.jull.stats.surroundings.WaterType;
import lombok.RequiredArgsConstructor;
import java.io.IOException;
import java.io.InputStream;
import java.nio.charset.StandardCharsets;
import java.util.ArrayList;
+import java.util.HashMap;
import java.util.List;
+import java.util.Map;
@RequiredArgsConstructor
public class Menu {
@@ -40,10 +38,13 @@ public class Menu {
"See your stats" ));
switch (index) {
case 0 -> {
- List inventory = new ArrayList<>(game.getPlayer().getInventory().stream().map(Item::toString).toList());
- inventory.add("Go back");
- int itemIndex = Cli.selectOptionIndex(inventory);
- if (itemIndex == inventory.size() - 1) {
+ List- inventory = game.getPlayer().getInventory();
+ Map
- grouped = group(inventory);
+ List mapped = new ArrayList<>(grouped.keySet().stream().map(item -> grouped.get(item) + "x " + item).toList());
+ mapped.add("Go back");
+
+ int itemIndex = Cli.selectOptionIndex(mapped);
+ if (itemIndex == mapped.size() - 1) {
start();
return;
}
@@ -57,9 +58,12 @@ public class Menu {
actionMenu(item, actions);
}
case 1 -> {
- List buildings = new ArrayList<>(game.getBuildings().stream().map(Item::toString).toList());
- buildings.add("Go back");
- int itemIndex = Cli.selectOptionIndex(buildings);
+ List
- buildings = game.getBuildings();
+ Map
- grouped = group(buildings);
+ List mapped = new ArrayList<>(grouped.keySet().stream().map(item -> grouped.get(item) + "x " + item).toList());
+ mapped.add("Go back");
+
+ int itemIndex = Cli.selectOptionIndex(mapped);
if (itemIndex == buildings.size() - 1) {
start();
return;
@@ -84,15 +88,20 @@ public class Menu {
switch (marketOption) {
case 0 -> {
game.getStrings().print("marketBuy");
- List availableItems = game.getMarket().getAvailableItems().stream().map(Item::toString).toList();
+ List availableItems = game.getMarket().getAvailableItems().stream().map(item -> item + ": " + item.getPrice() + " coins").toList();
int itemIndex = Cli.selectOptionIndex(availableItems);
Item item = game.getMarket().getAvailableItems().get(itemIndex);
game.getMarket().buyItem(game, item);
}
case 1 -> {
game.getStrings().print("marketSell");
- List inventory = game.getPlayer().getInventory().stream().map(Item::toString).toList();
- int itemIndex = Cli.selectOptionIndex(inventory);
+
+ List
- inventory = game.getPlayer().getInventory();
+ Map
- grouped = group(inventory);
+ List mapped = new ArrayList<>(grouped.keySet().stream().map(item -> grouped.get(item) + "x " + item).toList());
+ mapped.add("Go back");
+
+ int itemIndex = Cli.selectOptionIndex(mapped);
Item item = game.getMarket().getAvailableItems().get(itemIndex);
game.getMarket().sellItem(game, item);
}
@@ -111,7 +120,6 @@ public class Menu {
System.out.println();
game.getStrings().print("forestSize", game.getForestType().getSize());
System.out.println();
- Cli.pressEnter();
}
}
}
@@ -127,4 +135,16 @@ public class Menu {
Action action = actions.get(actionIndex);
action.execute(game, item);
}
+
+ private Map
- group(List
- items) {
+ Map
- group = new HashMap<>();
+ for (Item item : items) {
+ if (group.containsKey(item)) {
+ group.put(item, group.get(item) + 1);
+ } else {
+ group.put(item, 1);
+ }
+ }
+ return group;
+ }
}