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.Building.EffectType;
|
||||||
import it.polimi.ingsw.gc14.Model.Cards.BuildingCard;
|
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.Player;
|
||||||
import it.polimi.ingsw.gc14.Model.Cards.TribeCards.Character;
|
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.CharacterType;
|
||||||
@@ -31,16 +32,12 @@ public class Building0 extends BuildingCard {
|
|||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
HashMap<CharacterType,Integer> map = new HashMap<CharacterType,Integer>();
|
numSet=player.getNType(CharacterType.INVENTOR);
|
||||||
for(CharacterType t : CharacterType.values())
|
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;
|
purchased = true;
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -50,22 +47,18 @@ public class Building0 extends BuildingCard {
|
|||||||
}
|
}
|
||||||
@Override
|
@Override
|
||||||
public void applyEffect(Player player) {
|
public void applyEffect(Player player) {
|
||||||
HashMap<CharacterType,Integer> map = new HashMap<CharacterType,Integer>();
|
int min_temp=player.getNType(CharacterType.INVENTOR);
|
||||||
|
for(CharacterType type : CharacterType.values())
|
||||||
for(CharacterType t : CharacterType.values())
|
|
||||||
{
|
{
|
||||||
map.put(t, 0);
|
if(player.getNType(type)<=min_temp)
|
||||||
|
min_temp=player.getNType(type);
|
||||||
}
|
}
|
||||||
for(Character c : player.getCharacterCards())
|
if(min_temp<=numSet)
|
||||||
{
|
|
||||||
map.merge(c.getType(), 1, Integer::sum);
|
|
||||||
}
|
|
||||||
int temp = map.values().stream().min(Integer::compareTo).get();
|
|
||||||
if(temp<=numSet)
|
|
||||||
{
|
{
|
||||||
return;
|
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) {
|
public void applyEffect(Player player) {
|
||||||
HashMap<CharacterType,Integer> map = new HashMap<CharacterType,Integer>();
|
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
|
@Override
|
||||||
public void applyEffect(Player player) {
|
public void applyEffect(Player player) {
|
||||||
int Count = (int) player.getCharacterCards().stream()
|
player.addPrestige(player.getNType(getIcon()) * this.getPrestigeMul());
|
||||||
.filter(x -> x.getType().equals(this.getIcon())).count();
|
|
||||||
player.addPrestige(Count * this.getPrestigeMul());
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -29,14 +29,10 @@ public class Building4 extends BuildingCard {
|
|||||||
{
|
{
|
||||||
map.put(i,0);
|
map.put(i,0);
|
||||||
}
|
}
|
||||||
|
for(Inventor inv : player.inventors)
|
||||||
for(Character c : player.getCharacterCards())
|
|
||||||
{
|
|
||||||
if(c instanceof Inventor inv)
|
|
||||||
{
|
{
|
||||||
map.merge(inv.Icon(),1,Integer::sum);
|
map.merge(inv.Icon(),1,Integer::sum);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
numPair=0;
|
numPair=0;
|
||||||
for(Integer i : map.values())
|
for(Integer i : map.values())
|
||||||
{
|
{
|
||||||
@@ -56,14 +52,10 @@ public class Building4 extends BuildingCard {
|
|||||||
{
|
{
|
||||||
map.put(i,0);
|
map.put(i,0);
|
||||||
}
|
}
|
||||||
|
for(Inventor inv : player.inventors)
|
||||||
for(Character c : player.getCharacterCards())
|
|
||||||
{
|
|
||||||
if(c instanceof Inventor inv)
|
|
||||||
{
|
{
|
||||||
map.merge(inv.Icon(),1,Integer::sum);
|
map.merge(inv.Icon(),1,Integer::sum);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
int temp=0;
|
int temp=0;
|
||||||
for(Integer i : map.values())
|
for(Integer i : map.values())
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -21,12 +21,8 @@ public class Building8 extends BuildingCard {
|
|||||||
}
|
}
|
||||||
@Override
|
@Override
|
||||||
public void applyEffect(Player player) {
|
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);
|
player.addPrestige(builder.getPrestigeValue() * 2);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,7 +3,11 @@ package it.polimi.ingsw.gc14.Model.Cards;
|
|||||||
import it.polimi.ingsw.gc14.Model.PlayableCard;
|
import it.polimi.ingsw.gc14.Model.PlayableCard;
|
||||||
|
|
||||||
public abstract class TribeCard extends 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);
|
super(Era);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -11,7 +11,7 @@ public abstract class Character extends TribeCard implements Cloneable {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public Character(int Era, CharacterType type){
|
public Character(int Era, CharacterType type){
|
||||||
super(Era);
|
super(Era,false );
|
||||||
this.type = type;
|
this.type = type;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -14,7 +14,7 @@ public abstract class EventCard extends TribeCard {
|
|||||||
|
|
||||||
// Constructors
|
// Constructors
|
||||||
public EventCard(int Era, EventType type) {
|
public EventCard(int Era, EventType type) {
|
||||||
super(Era);
|
super(Era,true);
|
||||||
this.type = type;
|
this.type = type;
|
||||||
}
|
}
|
||||||
// End Constructors
|
// 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.BuildingCard;
|
||||||
import it.polimi.ingsw.gc14.Model.Cards.TribeCard;
|
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.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.Characters.Artist;
|
||||||
import it.polimi.ingsw.gc14.Model.Cards.TribeCards.EventType;
|
import it.polimi.ingsw.gc14.Model.Cards.TribeCards.EventType;
|
||||||
import it.polimi.ingsw.gc14.Model.Cards.TribeCards.EventCard;
|
import it.polimi.ingsw.gc14.Model.Cards.TribeCards.EventCard;
|
||||||
@@ -25,16 +26,10 @@ public class CavePaintings extends EventCard {
|
|||||||
@Override
|
@Override
|
||||||
public void activateEvent (ArrayList <Player> playerList){
|
public void activateEvent (ArrayList <Player> playerList){
|
||||||
for (Player player : playerList){
|
for (Player player : playerList){
|
||||||
int NArtists = 0;
|
int NArtists = player.getNType(CharacterType.ARTIST);
|
||||||
int NBuildings = 0;
|
int NBuildings = 0;
|
||||||
ArrayList<Character> charCards = player.getCharacterCards();
|
|
||||||
ArrayList<BuildingCard> buildingCards = player.getBuildingCards();
|
ArrayList<BuildingCard> buildingCards = player.getBuildingCards();
|
||||||
|
|
||||||
for (Character card : charCards){
|
|
||||||
if(card instanceof Artist){
|
|
||||||
NArtists++;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
for(BuildingCard card : buildingCards){
|
for(BuildingCard card : buildingCards){
|
||||||
if(card.getEffectId() == 9){
|
if(card.getEffectId() == 9){
|
||||||
NBuildings++;
|
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.BuildingCard;
|
||||||
import it.polimi.ingsw.gc14.Model.Cards.TribeCards.Character;
|
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.Characters.Hunter;
|
||||||
import it.polimi.ingsw.gc14.Model.Cards.TribeCards.EventType;
|
import it.polimi.ingsw.gc14.Model.Cards.TribeCards.EventType;
|
||||||
import it.polimi.ingsw.gc14.Model.Cards.TribeCards.EventCard;
|
import it.polimi.ingsw.gc14.Model.Cards.TribeCards.EventCard;
|
||||||
@@ -20,15 +21,8 @@ public class Hunt extends EventCard {
|
|||||||
@Override
|
@Override
|
||||||
public void activateEvent (ArrayList <Player> playerList){
|
public void activateEvent (ArrayList <Player> playerList){
|
||||||
for (Player player : playerList) {
|
for (Player player : playerList) {
|
||||||
ArrayList <Character> characterList= player.getCharacterCards();
|
|
||||||
ArrayList <BuildingCard> buildingList = player.getBuildingCards();
|
ArrayList <BuildingCard> buildingList = player.getBuildingCards();
|
||||||
int hunterCounter=0;
|
int hunterCounter=player.getNType(CharacterType.HUNTER);
|
||||||
|
|
||||||
for (Character character : characterList) {
|
|
||||||
if (character instanceof Hunter) {
|
|
||||||
hunterCounter++;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
for (BuildingCard buildingCard : buildingList) {
|
for (BuildingCard buildingCard : buildingList) {
|
||||||
if (buildingCard.getEffectId() == 7) {
|
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
|
@Override
|
||||||
public void activateEvent (ArrayList <Player> playerList){
|
public void activateEvent (ArrayList <Player> playerList){
|
||||||
int maxPrestige = playerList.get(0).getPrestigeValue();
|
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.BuildingCard;
|
||||||
import it.polimi.ingsw.gc14.Model.Cards.TribeCard;
|
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 it.polimi.ingsw.gc14.Model.Cards.TribeCards.Characters.*;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
import java.util.Arrays;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.concurrent.atomic.AtomicInteger;
|
||||||
|
|
||||||
import static java.lang.Math.abs;
|
import static java.lang.Math.abs;
|
||||||
|
|
||||||
@@ -16,20 +19,20 @@ public class Player {
|
|||||||
return UserName;
|
return UserName;
|
||||||
}
|
}
|
||||||
|
|
||||||
private ArrayList <Character> CharacterCards;
|
public int getTotCharacters() {
|
||||||
public ArrayList <Character> getCharacterCards() {
|
return Arrays.stream(CharacterType.values())
|
||||||
ArrayList <Character> copy = new ArrayList <>();
|
.mapToInt(this::getNType)
|
||||||
ArrayList<Character> temp = new ArrayList <>();
|
.sum();
|
||||||
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 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;
|
private ArrayList <BuildingCard> BuildingCards;
|
||||||
@@ -71,9 +74,7 @@ public class Player {
|
|||||||
this.FoodValue += Value;
|
this.FoodValue += Value;
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO, chiedere prof (throws IllegalArgument)
|
|
||||||
public Boolean removeFood(int Value){
|
public Boolean removeFood(int Value){
|
||||||
// Value = abs(Value); chiedere prof
|
|
||||||
if(Value > this.FoodValue){
|
if(Value > this.FoodValue){
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@@ -95,8 +96,15 @@ public class Player {
|
|||||||
// Constructors
|
// Constructors
|
||||||
public Player(String UserName){
|
public Player(String UserName){
|
||||||
this.UserName = 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.FoodValue = 0;
|
||||||
this.PrestigeValue = 0;
|
this.PrestigeValue = 0;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user