Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion src/main/java/com/samgauck/CityManagement/Command.java
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
import java.util.ArrayList;
import java.util.Arrays;
import com.gauck.sam.Utilities.*;
import com.samgauck.CityManagement.Enums.Constructable;

/**
* A singleton class that manages all commands.
Expand Down Expand Up @@ -269,7 +270,7 @@ private void construct(ArrayList<String> followingWords) {
if (constructable.equalsIgnoreCase("city")) {
//TODO: Add city
} else if (items.contains(constructable)) {
Main.getCity(0).resources.setItem(constructable, Main.getCity(0).resources.getItem(constructable) + amount);
Main.getCity(0).resources.setItem(constructable, Main.getCity(0).resources.getItem(constructable) + (Constructable.fromString(constructable).getQtyPerOrder() * amount));
}
System.out.println("Construction completed");
System.out.println(Main.getCity(0).resources.toString());
Expand Down
47 changes: 37 additions & 10 deletions src/main/java/com/samgauck/CityManagement/Economy.java
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

import java.util.*;
import com.gauck.sam.Utilities.*;
import com.samgauck.CityManagement.Enums.*;

/**
* A singleton class that represents the global economy in the game.
Expand All @@ -12,7 +13,7 @@ public class Economy {
*/
private Economy() {
items.putAll(Utilities.generateMap(itemsList, pricesList));
constructables.putAll(Utilities.generateMap(constructablesList, requirementsList));
//constructables.putAll(Utilities.generateMap(constructablesList, requirementsList)); //No Longer needed???
}

/**
Expand Down Expand Up @@ -49,24 +50,31 @@ public void addCity(City c) {
*/
private Map<String, Integer> items = new HashMap<>();

private Map<String, Resources> constructables = new HashMap<>();
//private Map<String, Resources> constructables = new HashMap<>();

/**
* The list of items.
*/
private static ArrayList<String> itemsList = new ArrayList<>(Arrays.asList("food", "wood", "stone", "iron", "steel", "oil", "coal", "uranium", "water", "carbon", "bronze"));

private static ArrayList<String> constructablesList = new ArrayList<>(Arrays.asList("steel", "city", "bronze")); //TODO: Fill (& requirementsList [64])
//private static ArrayList<String> constructablesList = new ArrayList<>(Arrays.asList("steel", "city")); //TODO: Fill (& requirementsList [64])
/**
* The list of prices.
*/
private static ArrayList<Integer> pricesList = new ArrayList<>(Arrays.asList(5, 1, 2, 5, 10, 10, 10, 10, 5, 5, 10));

private static ArrayList<Resources> requirementsList = new ArrayList<>(Arrays.asList(
new Resources(0,0,0,1,0,0,1,0,0,0,0),//Steel
new Resources(0,0,0,0,0,0,0,0,0,0,0),//City
new Resources(0,0,0,0,0,0,0,0,0,0,0)//Bronze
));
/* private static ArrayList<Resources> requirementsList = new ArrayList<>(Arrays.asList(
new Resources(0,0,0,1,0,0,1,0,0,0),//Steel
new Resources(0,0,0,0,0,0,0,0,0,0)//City
));*/

/*private static Map<String, Resources> requirementsList = new HashMap<String, Resources>() {{
put("steel",
new Resources(0, 0, 0, 1, 0, 0, 1, 0, 0, 0));//Steel
put("city",
new Resources(0, 0, 0, 0, 0, 0, 0, 0, 0, 0));//City
}};
*/

/**
* Get the list of items.
Expand All @@ -78,7 +86,12 @@ public static ArrayList<String> getItems() {
}

public static ArrayList<String> getConstructables() {
return constructablesList;
ArrayList<String> constructables = new ArrayList<>();
for (Constructable constructable : Constructable.values())
{
constructables.add(constructable.getName());
}
return constructables; //constructablesList;
}

/**
Expand All @@ -92,7 +105,21 @@ public int getPrice(String item) {
}

public Resources getRequirements(String constructable) {
return constructables.get(constructable);

Resources constructionResource = new Resources();

Constructable mat = Constructable.fromString(constructable);

for (int i = 0; i < mat.getAmountNeeded().size() && i < mat.getMaterialsNeeded().size(); i++)
{
constructionResource.setItem(mat.getMaterialsNeeded().get(i).valueOf(), mat.getAmountNeeded().get(i));
}
return constructionResource;
}

public int getPerSet(String constructable)
{
return Constructable.fromString(constructable).getQtyPerOrder();
}
/**
* Sets all prices. Should only be used for loading saves.
Expand Down
84 changes: 84 additions & 0 deletions src/main/java/com/samgauck/CityManagement/Enums/Constructable.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,84 @@
package com.samgauck.CityManagement.Enums;

import java.util.ArrayList;
import java.util.Arrays;

public enum Constructable
{
//Format: NAME(String name,
// ArrayList of Material Types need per order using Arrays.asList,
// ArrayList of Integers for qty needed per order using Arrays.asList,
// cost per order
// total amount produced per order
STEEL("steel",
new ArrayList<Material>(Arrays.asList(Material.IRON, Material.CARBON)),
new ArrayList<Integer>(Arrays.asList(19, 1)),
1,
19);

private ArrayList<Integer> needed = new ArrayList<>();
private int qtyPerOrder = 0;
private int price = 0;
private ArrayList<Material> mats = new ArrayList<>();
String materialName = "";

private Constructable(String name, ArrayList<Material> matsList, ArrayList<Integer> needed, int price, int qtyPerOrder)
{
//TODO change to add a Resource rather than 2 arrays
for (int i = 0; i < matsList.size() && i < needed.size(); i++)
{
mats.add(matsList.get(i));
this.needed.add(needed.get(i));
}
this.materialName = name;
this.price = price;
this.qtyPerOrder = qtyPerOrder;
}

public String getName()
{
return materialName;
}

public static Constructable fromString(String name)
{
for (Constructable mat : Constructable.values())
{
if (mat.materialName.equalsIgnoreCase(name)) {
return mat;
}
}

return null;
}

public static ArrayList<Material> getMaterialsNeeded(Constructable name)
{
return name.mats;
}

public ArrayList<Material> getMaterialsNeeded()
{
return mats;
}

public static ArrayList<Integer> getAmountNeeded(Constructable name)
{
return name.needed;
}

public ArrayList<Integer> getAmountNeeded()
{
return needed;
}

public int getPrice()
{
return price;
}

public int getQtyPerOrder()
{
return qtyPerOrder;
}
};
39 changes: 39 additions & 0 deletions src/main/java/com/samgauck/CityManagement/Enums/Material.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
package com.samgauck.CityManagement.Enums;

public enum Material {
MONEY("money"),
FOOD("food"),
WOOD("wood"),
STONE("stone"),
IRON("iron"),
OIL("oil"),
COAL("coal"),
URANIUM("uranium"),
WATER("water"),
CARBON("carbon");

private String name = "";

private Material(String name)
{
this.name = name;
}

public String valueOf()
{
return name;
}

public static Material fromString(String name)
{
for (Material mat : Material.values())
{
if (mat.name == name)
{
return mat;
}
}

return null;
}
}
4 changes: 2 additions & 2 deletions src/main/java/com/samgauck/CityManagement/Main.java
Original file line number Diff line number Diff line change
Expand Up @@ -183,8 +183,8 @@ private static void start() {
for (int i = 0; i < 50; i++) {
System.out.println();
}
System.out.print("Would you like to load a save? (Y/N)");
input = s.next();
System.out.print("Would you like to load a save? (Y/N)");
input = s.nextLine();
if (input.equalsIgnoreCase("y")) {
System.out.println("Enter a save code:");
s.nextLine();
Expand Down