diff --git a/.idea/misc.xml b/.idea/misc.xml
index c3dfb30..b573818 100644
--- a/.idea/misc.xml
+++ b/.idea/misc.xml
@@ -1,6 +1,6 @@
-
+
\ No newline at end of file
diff --git a/src/ch/zhaw/catan/Player.java b/src/ch/zhaw/catan/Player.java
index 965f7fd..4eb49b8 100644
--- a/src/ch/zhaw/catan/Player.java
+++ b/src/ch/zhaw/catan/Player.java
@@ -1,11 +1,11 @@
package ch.zhaw.catan;
import java.util.HashMap;
+import java.util.List;
/**
* New Class PLayer
* This class is here to add players to the game.
- * @author: Stefan Amador
*/
public class Player {
@@ -31,31 +31,92 @@ public class Player {
/**
* This method returns all the resources the player has at the moment
- * @return HashMap
+ * @return HashMap with the count of every resource
*/
public HashMap getResources() {
return resources;
}
+ /**
+ * This method returns player faction
+ * @return
+ */
+ public Config.Faction getFaction() { return faction; }
+ /**
+ * This method returns for specific resource how much player possesess.
+ * @param resource
+ * @return
+ */
+ public int getSpecificResource(Config.Resource resource) { return resources.get(resource); }
+
+ /**
+ * This method adds a specific resource to resourcess
+ * @param resource to add
+ * @param numberToAdd how much to add
+ */
+ public void addResource(Config.Resource resource, int numberToAdd) {
+ resources.put(resource, resources.get(resource) + numberToAdd);
+ }
+
+ /**
+ * This method substracts a specific resource from resourcess but check first if player has enough resources.
+ * @param resource to substract
+ * @param numberToTake how much to substract
+ * @return true if resource has been substracted false if player has not enough resources
+ */
+ public boolean substractResource(Config.Resource resource, int numberToTake) {
+ int inPossesion = resources.get(resource);
+ if(inPossesion - numberToTake < 0) {
+ return false;
+ }
+ resources.put(resource,inPossesion - numberToTake);
+ return true;
+ }
+
+ /**
+ * This method has to be used when a player wants to build a road. It checks if a player has enough roads
+ * and resources to build one more. If player is able to build, the method substract the buildcost from the resources
+ * in possesion by the player.
+ * @return true if road can be created false if road can't be created
+ */
public boolean buildRoad() {
- if (roadsToUse > 0) {
- roadsToUse--;
- return true;
+ List costs = Config.Structure.ROAD.getCosts();
+ if ( roadsToUse == 0 || !checkRessourceToBuild(costs)) {
+ return false;
}
- return false;
-
+ for (Config.Resource resource : costs) {
+ resources.put(resource,resources.get(resource)-1);
+ }
+ return true;
}
-
+ /**
+ * This method has to be used when a player wants to build a settlement. It checks if a player has enough roads
+ * and resources to build one more. If player is able to build, the method substract the buildcost from the resources
+ * in possesion by the player.
+ * @return true if road can be created false if road can't be created
+ */
public boolean buildSettlement() {
- if (settlementsToUse > 0) {
- settlementsToUse--;
- return true;
+ List costs = Config.Structure.SETTLEMENT.getCosts();
+ if ( settlementsToUse == 0 || !checkRessourceToBuild(costs)) {
+ return false;
}
- return false;
+ for (Config.Resource resource : costs) {
+ resources.put(resource,resources.get(resource)-1);
+ }
+ return true;
}
-
+ //returns true if player has enough resources else false
+ private boolean checkRessourceToBuild(List liste) {
+ for (Config.Resource resource : liste) {
+ int possesion = resources.get(resource);
+ if (possesion == 0) {
+ return false;
+ }
+ }
+ return true;
+ }
}