feat: Another string implementing and class Menu
This commit is contained in:
@@ -6,33 +6,31 @@ 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 cz.jull.tui.Cli;
|
||||
import cz.jull.tui.Menu;
|
||||
import cz.jull.tui.Strings;
|
||||
import lombok.Getter;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
public class Game {
|
||||
@Getter
|
||||
public class Game {
|
||||
|
||||
private final Player player = new Player();
|
||||
|
||||
private ForestType forestType;
|
||||
|
||||
@Getter
|
||||
private SoilType soilType;
|
||||
|
||||
@Getter
|
||||
private PathType pathType;
|
||||
|
||||
@Getter
|
||||
private WaterType waterType;
|
||||
|
||||
private final Strings strings;
|
||||
|
||||
@Getter
|
||||
private final List<Item> buildings = new ArrayList<>();
|
||||
|
||||
@Getter
|
||||
private Market market;
|
||||
|
||||
private final List<Events> events = new ArrayList<>();
|
||||
@@ -43,9 +41,12 @@ public class Game {
|
||||
|
||||
public void play() {
|
||||
strings.print("welcome");
|
||||
Cli.pressEnter();
|
||||
generateStats();
|
||||
for (int i = 0; i < 10; i++) {
|
||||
Menu menu = new Menu(this);
|
||||
|
||||
for (int i = 0; i < 10; i++) {
|
||||
menu.start();
|
||||
}
|
||||
// TODO the whole game
|
||||
}
|
||||
@@ -63,8 +64,10 @@ public class Game {
|
||||
if (waterType == WaterType.WELL) {
|
||||
buildings.add(Item.WELL);
|
||||
}
|
||||
System.out.println();
|
||||
|
||||
player.setCoins(1000);
|
||||
strings.print("coins", player.getCoins());
|
||||
|
||||
market = new Market(this);
|
||||
|
||||
|
||||
@@ -6,10 +6,12 @@ import cz.jull.exceptions.ItemNotAvailableException;
|
||||
import cz.jull.exceptions.NotSufficientsCoinsException;
|
||||
import cz.jull.stats.surroundings.PathType;
|
||||
import cz.jull.stats.surroundings.SoilType;
|
||||
import lombok.Getter;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
@Getter
|
||||
public class Market {
|
||||
private final List<Item> availableItems = new ArrayList<>(List.of(
|
||||
Item.AXE,
|
||||
@@ -24,6 +26,7 @@ public class Market {
|
||||
|
||||
game.getPlayer().setCoins(game.getPlayer().getCoins() + item.getPrice());
|
||||
game.getPlayer().getInventory().remove(item);
|
||||
game.getStrings().print("marketSellMessage", item);
|
||||
}
|
||||
|
||||
public void buyItem(Game game, Item item) throws ItemNotAvailableException, NotSufficientsCoinsException {
|
||||
@@ -35,10 +38,10 @@ public class Market {
|
||||
System.out.println(" "); //TODO
|
||||
return;
|
||||
}
|
||||
System.out.println(availableItems);
|
||||
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++) {
|
||||
|
||||
58
src/main/java/cz/jull/tui/Menu.java
Normal file
58
src/main/java/cz/jull/tui/Menu.java
Normal file
@@ -0,0 +1,58 @@
|
||||
package cz.jull.tui;
|
||||
|
||||
import cz.jull.Game;
|
||||
import cz.jull.Item;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@RequiredArgsConstructor
|
||||
public class Menu {
|
||||
private final Game game;
|
||||
|
||||
public void start() {
|
||||
int index = Cli.selectOptionIndex(List.of(
|
||||
"See your inventory",
|
||||
"See what you have built",
|
||||
"Go to Market",
|
||||
"See your stats" ));
|
||||
switch (index) {
|
||||
case 0 -> {
|
||||
|
||||
}
|
||||
case 1 -> {
|
||||
for (Item building : game.getBuildings()) {
|
||||
System.out.println(building);
|
||||
}
|
||||
}
|
||||
case 2 -> {
|
||||
game.getStrings().print("marketGreeting");
|
||||
System.out.println();
|
||||
int marketOption = Cli.selectOptionIndex(List.of(
|
||||
"Buy Item",
|
||||
"Sell Item",
|
||||
"Go back"
|
||||
));
|
||||
switch (marketOption) {
|
||||
case 0 -> {
|
||||
game.getStrings().print("marketBuy");
|
||||
List<String> availableItems = game.getMarket().getAvailableItems().stream().map(Item::toString).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<String> inventory = game.getPlayer().getInventory().stream().map(Item::toString).toList();
|
||||
int itemIndex = Cli.selectOptionIndex(inventory);
|
||||
Item item = game.getMarket().getAvailableItems().get(itemIndex);
|
||||
game.getMarket().sellItem(game, item);
|
||||
}
|
||||
case 2 -> {
|
||||
start();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -17,6 +17,12 @@ public class Strings {
|
||||
private String soilType;
|
||||
private String pathType;
|
||||
private String waterType;
|
||||
private String coins;
|
||||
private String marketGreeting;
|
||||
private String marketBuy;
|
||||
private String marketBuyMessage;
|
||||
private String marketSell;
|
||||
private String marketSellMessage;
|
||||
|
||||
/**
|
||||
* Loads strings from json file
|
||||
|
||||
10
strings.json
10
strings.json
@@ -1,7 +1,13 @@
|
||||
{
|
||||
"welcome": "Welcome",
|
||||
"welcome": "Welcome player! ",
|
||||
"forestType": "Your forest size: {0}",
|
||||
"soilType": "Your soil type size: {0}",
|
||||
"pathType": "Your path type: {0}",
|
||||
"waterType": "Your water type: {0}"
|
||||
"waterType": "Your water type: {0}",
|
||||
"coins": "Amount of Coins: {0}",
|
||||
"marketGreeting": "Welcome to Market!",
|
||||
"marketBuy": "Pick which item you want to buy",
|
||||
"marketBuyMessage": "You bought: {0}",
|
||||
"marketSell": "Pick which item you want to sell",
|
||||
"marketSellMessage": "You sold: {0}"
|
||||
}
|
||||
Reference in New Issue
Block a user