Logic Player Completely changed
This commit is contained in:
@@ -2,6 +2,7 @@ package it.polimi.ingsw.gc14.Model.Cards.Building.Effects;
|
||||
|
||||
import it.polimi.ingsw.gc14.Model.Cards.Building.EffectType;
|
||||
import it.polimi.ingsw.gc14.Model.Cards.BuildingCard;
|
||||
import it.polimi.ingsw.gc14.Model.Cards.TribeCards.Characters.Artist;
|
||||
import it.polimi.ingsw.gc14.Model.Player;
|
||||
import it.polimi.ingsw.gc14.Model.Cards.TribeCards.Character;
|
||||
import it.polimi.ingsw.gc14.Model.Cards.TribeCards.CharacterType;
|
||||
@@ -31,16 +32,12 @@ public class Building0 extends BuildingCard {
|
||||
{
|
||||
return;
|
||||
}
|
||||
HashMap<CharacterType,Integer> map = new HashMap<CharacterType,Integer>();
|
||||
for(CharacterType t : CharacterType.values())
|
||||
numSet=player.getNType(CharacterType.INVENTOR);
|
||||
for(CharacterType type : CharacterType.values())
|
||||
{
|
||||
map.put(t, 0);
|
||||
if(player.getNType(type)<=numSet)
|
||||
numSet=player.getNType(type);
|
||||
}
|
||||
for(Character c : player.getCharacterCards())
|
||||
{
|
||||
map.merge(c.getType(), 1, Integer::sum);
|
||||
}
|
||||
numSet= map.values().stream().min(Integer::compareTo).get();
|
||||
purchased = true;
|
||||
|
||||
}
|
||||
@@ -50,22 +47,18 @@ public class Building0 extends BuildingCard {
|
||||
}
|
||||
@Override
|
||||
public void applyEffect(Player player) {
|
||||
HashMap<CharacterType,Integer> map = new HashMap<CharacterType,Integer>();
|
||||
|
||||
for(CharacterType t : CharacterType.values())
|
||||
int min_temp=player.getNType(CharacterType.INVENTOR);
|
||||
for(CharacterType type : CharacterType.values())
|
||||
{
|
||||
map.put(t, 0);
|
||||
if(player.getNType(type)<=min_temp)
|
||||
min_temp=player.getNType(type);
|
||||
}
|
||||
for(Character c : player.getCharacterCards())
|
||||
{
|
||||
map.merge(c.getType(), 1, Integer::sum);
|
||||
}
|
||||
int temp = map.values().stream().min(Integer::compareTo).get();
|
||||
if(temp<=numSet)
|
||||
if(min_temp<=numSet)
|
||||
{
|
||||
return;
|
||||
}
|
||||
player.addFood(5*(temp-numSet));
|
||||
player.addFood(5*(min_temp-numSet));
|
||||
numSet=min_temp;
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
@@ -22,17 +22,14 @@ public class Building10 extends BuildingCard {
|
||||
public void applyEffect(Player player) {
|
||||
HashMap<CharacterType,Integer> map = new HashMap<CharacterType,Integer>();
|
||||
|
||||
for(CharacterType t : CharacterType.values())
|
||||
int numSet=player.getNType(CharacterType.INVENTOR);
|
||||
for(CharacterType type : CharacterType.values())
|
||||
{
|
||||
map.put(t, 0);
|
||||
if(player.getNType(type)<=numSet)
|
||||
numSet=player.getNType(type);
|
||||
}
|
||||
for(Character c : player.getCharacterCards())
|
||||
{
|
||||
map.merge(c.getType(), 1, Integer::sum);
|
||||
}
|
||||
int numberOfSet = map.values().stream().min(Integer::compareTo).get();
|
||||
|
||||
player.addPrestige(6 * numberOfSet);
|
||||
player.addPrestige(6 * numSet);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -27,8 +27,6 @@ public class Building11 extends BuildingCard {
|
||||
}
|
||||
@Override
|
||||
public void applyEffect(Player player) {
|
||||
int Count = (int) player.getCharacterCards().stream()
|
||||
.filter(x -> x.getType().equals(this.getIcon())).count();
|
||||
player.addPrestige(Count * this.getPrestigeMul());
|
||||
player.addPrestige(player.getNType(getIcon()) * this.getPrestigeMul());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -29,13 +29,9 @@ public class Building4 extends BuildingCard {
|
||||
{
|
||||
map.put(i,0);
|
||||
}
|
||||
|
||||
for(Character c : player.getCharacterCards())
|
||||
for(Inventor inv : player.inventors)
|
||||
{
|
||||
if(c instanceof Inventor inv)
|
||||
{
|
||||
map.merge(inv.Icon(),1,Integer::sum);
|
||||
}
|
||||
map.merge(inv.Icon(),1,Integer::sum);
|
||||
}
|
||||
numPair=0;
|
||||
for(Integer i : map.values())
|
||||
@@ -56,13 +52,9 @@ public class Building4 extends BuildingCard {
|
||||
{
|
||||
map.put(i,0);
|
||||
}
|
||||
|
||||
for(Character c : player.getCharacterCards())
|
||||
for(Inventor inv : player.inventors)
|
||||
{
|
||||
if(c instanceof Inventor inv)
|
||||
{
|
||||
map.merge(inv.Icon(),1,Integer::sum);
|
||||
}
|
||||
map.merge(inv.Icon(),1,Integer::sum);
|
||||
}
|
||||
int temp=0;
|
||||
for(Integer i : map.values())
|
||||
|
||||
@@ -21,12 +21,8 @@ public class Building8 extends BuildingCard {
|
||||
}
|
||||
@Override
|
||||
public void applyEffect(Player player) {
|
||||
ArrayList<Builder> builders = player.getCharacterCards().stream()
|
||||
.filter(c -> c instanceof Builder)
|
||||
.map(c -> (Builder) c)
|
||||
.collect(Collectors.toCollection(ArrayList::new));
|
||||
|
||||
for (Builder builder : builders) {
|
||||
for (Builder builder : player.builders) {
|
||||
player.addPrestige(builder.getPrestigeValue() * 2);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3,7 +3,11 @@ package it.polimi.ingsw.gc14.Model.Cards;
|
||||
import it.polimi.ingsw.gc14.Model.PlayableCard;
|
||||
|
||||
public abstract class TribeCard extends PlayableCard {
|
||||
public TribeCard(int Era) {
|
||||
private boolean isEventCard;
|
||||
public boolean IsEventCard() {
|
||||
return isEventCard;
|
||||
}
|
||||
public TribeCard(int Era,boolean IsEventCard) {
|
||||
super(Era);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -11,7 +11,7 @@ public abstract class Character extends TribeCard implements Cloneable {
|
||||
}
|
||||
|
||||
public Character(int Era, CharacterType type){
|
||||
super(Era);
|
||||
super(Era,false );
|
||||
this.type = type;
|
||||
}
|
||||
|
||||
|
||||
@@ -14,7 +14,7 @@ public abstract class EventCard extends TribeCard {
|
||||
|
||||
// Constructors
|
||||
public EventCard(int Era, EventType type) {
|
||||
super(Era);
|
||||
super(Era,true);
|
||||
this.type = type;
|
||||
}
|
||||
// End Constructors
|
||||
|
||||
@@ -3,6 +3,7 @@ package it.polimi.ingsw.gc14.Model.Cards.TribeCards.Events;
|
||||
import it.polimi.ingsw.gc14.Model.Cards.BuildingCard;
|
||||
import it.polimi.ingsw.gc14.Model.Cards.TribeCard;
|
||||
import it.polimi.ingsw.gc14.Model.Cards.TribeCards.Character;
|
||||
import it.polimi.ingsw.gc14.Model.Cards.TribeCards.CharacterType;
|
||||
import it.polimi.ingsw.gc14.Model.Cards.TribeCards.Characters.Artist;
|
||||
import it.polimi.ingsw.gc14.Model.Cards.TribeCards.EventType;
|
||||
import it.polimi.ingsw.gc14.Model.Cards.TribeCards.EventCard;
|
||||
@@ -25,16 +26,10 @@ public class CavePaintings extends EventCard {
|
||||
@Override
|
||||
public void activateEvent (ArrayList <Player> playerList){
|
||||
for (Player player : playerList){
|
||||
int NArtists = 0;
|
||||
int NArtists = player.getNType(CharacterType.ARTIST);
|
||||
int NBuildings = 0;
|
||||
ArrayList<Character> charCards = player.getCharacterCards();
|
||||
ArrayList<BuildingCard> buildingCards = player.getBuildingCards();
|
||||
|
||||
for (Character card : charCards){
|
||||
if(card instanceof Artist){
|
||||
NArtists++;
|
||||
}
|
||||
}
|
||||
for(BuildingCard card : buildingCards){
|
||||
if(card.getEffectId() == 9){
|
||||
NBuildings++;
|
||||
|
||||
@@ -2,6 +2,7 @@ package it.polimi.ingsw.gc14.Model.Cards.TribeCards.Events;
|
||||
|
||||
import it.polimi.ingsw.gc14.Model.Cards.BuildingCard;
|
||||
import it.polimi.ingsw.gc14.Model.Cards.TribeCards.Character;
|
||||
import it.polimi.ingsw.gc14.Model.Cards.TribeCards.CharacterType;
|
||||
import it.polimi.ingsw.gc14.Model.Cards.TribeCards.Characters.Hunter;
|
||||
import it.polimi.ingsw.gc14.Model.Cards.TribeCards.EventType;
|
||||
import it.polimi.ingsw.gc14.Model.Cards.TribeCards.EventCard;
|
||||
@@ -20,15 +21,8 @@ public class Hunt extends EventCard {
|
||||
@Override
|
||||
public void activateEvent (ArrayList <Player> playerList){
|
||||
for (Player player : playerList) {
|
||||
ArrayList <Character> characterList= player.getCharacterCards();
|
||||
ArrayList <BuildingCard> buildingList = player.getBuildingCards();
|
||||
int hunterCounter=0;
|
||||
|
||||
for (Character character : characterList) {
|
||||
if (character instanceof Hunter) {
|
||||
hunterCounter++;
|
||||
}
|
||||
}
|
||||
int hunterCounter=player.getNType(CharacterType.HUNTER);
|
||||
|
||||
for (BuildingCard buildingCard : buildingList) {
|
||||
if (buildingCard.getEffectId() == 7) {
|
||||
|
||||
+1
-1
@@ -15,7 +15,7 @@ public class ShamanicRitual extends EventCard {
|
||||
|
||||
}
|
||||
|
||||
// TODO
|
||||
// TODO è completamente scorretto... da controllare numero icone sciamani
|
||||
@Override
|
||||
public void activateEvent (ArrayList <Player> playerList){
|
||||
int maxPrestige = playerList.get(0).getPrestigeValue();
|
||||
|
||||
@@ -2,10 +2,13 @@ package it.polimi.ingsw.gc14.Model;
|
||||
|
||||
import it.polimi.ingsw.gc14.Model.Cards.BuildingCard;
|
||||
import it.polimi.ingsw.gc14.Model.Cards.TribeCard;
|
||||
import it.polimi.ingsw.gc14.Model.Cards.TribeCards.Character;
|
||||
import it.polimi.ingsw.gc14.Model.Cards.TribeCards.CharacterType;
|
||||
import it.polimi.ingsw.gc14.Model.Cards.TribeCards.Characters.*;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
import java.util.concurrent.atomic.AtomicInteger;
|
||||
|
||||
import static java.lang.Math.abs;
|
||||
|
||||
@@ -16,20 +19,20 @@ public class Player {
|
||||
return UserName;
|
||||
}
|
||||
|
||||
private ArrayList <Character> CharacterCards;
|
||||
public ArrayList <Character> getCharacterCards() {
|
||||
ArrayList <Character> copy = new ArrayList <>();
|
||||
ArrayList<Character> temp = new ArrayList <>();
|
||||
temp.addAll(artists);
|
||||
temp.addAll(builders);
|
||||
temp.addAll(gatherers);
|
||||
temp.addAll(inventors);
|
||||
temp.addAll(shamans);
|
||||
temp.addAll(hunters);
|
||||
for(Character character:CharacterCards){
|
||||
copy.add(character.clone());
|
||||
}
|
||||
return copy;
|
||||
public int getTotCharacters() {
|
||||
return Arrays.stream(CharacterType.values())
|
||||
.mapToInt(this::getNType)
|
||||
.sum();
|
||||
}
|
||||
public int getNType(CharacterType type) {
|
||||
return switch (type) {
|
||||
case ARTIST -> artists.size();
|
||||
case INVENTOR -> inventors.size();
|
||||
case HUNTER -> hunters.size();
|
||||
case BUILDER -> builders.size();
|
||||
case SHAMAN -> shamans.size();
|
||||
case GATHERERS -> gatherers.size();
|
||||
};
|
||||
}
|
||||
|
||||
private ArrayList <BuildingCard> BuildingCards;
|
||||
@@ -71,9 +74,7 @@ public class Player {
|
||||
this.FoodValue += Value;
|
||||
}
|
||||
|
||||
// TODO, chiedere prof (throws IllegalArgument)
|
||||
public Boolean removeFood(int Value){
|
||||
// Value = abs(Value); chiedere prof
|
||||
if(Value > this.FoodValue){
|
||||
return false;
|
||||
}
|
||||
@@ -95,8 +96,15 @@ public class Player {
|
||||
// Constructors
|
||||
public Player(String UserName){
|
||||
this.UserName = UserName;
|
||||
this.CharacterCards = new ArrayList<Character>();
|
||||
this.BuildingCards = new ArrayList<BuildingCard>();
|
||||
|
||||
this.inventors = new ArrayList <>();
|
||||
this.builders = new ArrayList <>();
|
||||
this.gatherers = new ArrayList <>();
|
||||
this.shamans = new ArrayList <>();
|
||||
this.hunters = new ArrayList <>();
|
||||
this.artists = new ArrayList<>();
|
||||
|
||||
this.BuildingCards = new ArrayList<>();
|
||||
this.FoodValue = 0;
|
||||
this.PrestigeValue = 0;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user