Merge remote-tracking branch 'origin/main'
This commit is contained in:
		
						commit
						ebc63b996d
					
				| 
						 | 
				
			
			@ -1,6 +1,6 @@
 | 
			
		|||
<?xml version="1.0" encoding="UTF-8"?>
 | 
			
		||||
<project version="4">
 | 
			
		||||
  <component name="ProjectRootManager" version="2" languageLevel="JDK_17" default="true" project-jdk-name="openjdk-17" project-jdk-type="JavaSDK">
 | 
			
		||||
  <component name="ProjectRootManager" version="2" languageLevel="JDK_X" default="true" project-jdk-name="openjdk-17" project-jdk-type="JavaSDK">
 | 
			
		||||
    <output url="file://$PROJECT_DIR$/out" />
 | 
			
		||||
  </component>
 | 
			
		||||
</project>
 | 
			
		||||
| 
						 | 
				
			
			@ -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<Config.Resource,Integer> 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<Config.Resource> 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<Config.Resource> 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<Config.Resource> liste) {
 | 
			
		||||
        for (Config.Resource resource : liste) {
 | 
			
		||||
            int possesion = resources.get(resource);
 | 
			
		||||
            if (possesion == 0) {
 | 
			
		||||
                return false;
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
        return true;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue