Instance of deleted on characters, Changed Building Effect Logic

This commit is contained in:
rubenpirreram
2026-03-17 17:39:00 +01:00
parent c0a02bbeed
commit e98bae5a6e
19 changed files with 77 additions and 175 deletions
@@ -0,0 +1,7 @@
package it.polimi.ingsw.gc14.Model.Cards.Building;
import it.polimi.ingsw.gc14.Model.Player;
public interface BuildingEffect {
public void applyEffect(Player player);
}
@@ -1,22 +0,0 @@
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.Player;
public class Building12 extends BuildingCard {
public Building12(int era, int price) {
super(era,price);
effectType= EffectType.ON_ROUND_END;
effectId=12;
}
@Override
public BuildingCard clone() {
return new Building12(getEra(),getPrice());
}
@Override
// TODO
public void applyEffect(Player player) {
}
}
@@ -1,23 +0,0 @@
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.CharacterType;
import it.polimi.ingsw.gc14.Model.Player;
public class Building2 extends BuildingCard {
public Building2(int era, int price) {
super(era,price);
effectType= EffectType.ON_EVENT;
effectId=2;
}
@Override
public BuildingCard clone() {
return new Building2(getEra(),getPrice());
}
@Override
public void applyEffect(Player player) {
};
}
@@ -1,22 +0,0 @@
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.Player;
public class Building3 extends BuildingCard {
public Building3(int era, int price) {
super(era,price);
effectType= EffectType.ON_END_TURN;
effectId=3;
}
@Override
public BuildingCard clone() {
return new Building3(getEra(),getPrice());
}
@Override
public void applyEffect(Player player) {
};
}
@@ -1,22 +0,0 @@
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.Player;
public class Building5 extends BuildingCard {
public Building5(int era, int price) {
super(era,price);
effectType= EffectType.ON_EVENT;
effectId=5;
}
@Override
public BuildingCard clone() {
return new Building5(getEra(),getPrice());
}
@Override
public void applyEffect(Player player) {
};
}
@@ -1,22 +0,0 @@
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.Player;
public class Building6 extends BuildingCard {
public Building6(int era, int price) {
super(era,price);
effectType= EffectType.ON_EVENT;
effectId=6;
}
@Override
public BuildingCard clone() {
return new Building6(getEra(),getPrice());
}
@Override
public void applyEffect(Player player) {
};
}
@@ -1,22 +0,0 @@
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.Player;
public class Building7 extends BuildingCard {
public Building7(int era, int price) {
super(era,price);
effectType= EffectType.ON_EVENT;
effectId=7;
}
@Override
public BuildingCard clone() {
return new Building7(getEra(),getPrice());
}
@Override
public void applyEffect(Player player) {
};
}
@@ -1,21 +0,0 @@
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.Player;
public class Building9 extends BuildingCard{
public Building9(int era, int price) {
super(era,price);
effectType = EffectType.ON_EVENT;
effectId = 9;
}
@Override
public BuildingCard clone() {
return new Building9(getEra(),getPrice());
}
@Override
public void applyEffect(Player player) {
};
}
@@ -1,12 +1,13 @@
package it.polimi.ingsw.gc14.Model.Cards;
import it.polimi.ingsw.gc14.Model.Cards.Building.BuildingEffect;
import it.polimi.ingsw.gc14.Model.Cards.Building.EffectType;
import it.polimi.ingsw.gc14.Model.PlayableCard;
import it.polimi.ingsw.gc14.Model.Player;
import java.util.ArrayList;
public abstract class BuildingCard extends PlayableCard implements Cloneable {
public class BuildingCard extends PlayableCard implements Cloneable , BuildingEffect {
private int price;
public int getPrice() {
return price;
@@ -26,9 +27,19 @@ public abstract class BuildingCard extends PlayableCard implements Cloneable {
super(era);
this.price = price;
}
public BuildingCard(int effectId,EffectType effectType ,int era,int price) {
this.effectId = effectId;
this.effectType = effectType;
super(era);
this.price = price;
}
@Override
public abstract BuildingCard clone() ;
public BuildingCard clone()
{
return new BuildingCard(effectId,effectType,getEra(),getPrice());
}
public abstract void applyEffect(Player player);
public void applyEffect(Player player){};
}
@@ -1,6 +1,7 @@
package it.polimi.ingsw.gc14.Model.Cards.TribeCards;
import it.polimi.ingsw.gc14.Model.Cards.TribeCard;
import it.polimi.ingsw.gc14.Model.Player;
public abstract class Character extends TribeCard implements Cloneable {
@@ -21,4 +22,6 @@ public abstract class Character extends TribeCard implements Cloneable {
@Override
public abstract Character clone();
public abstract void insert(Player player);
}
@@ -2,6 +2,7 @@ package it.polimi.ingsw.gc14.Model.Cards.TribeCards.Characters;
import it.polimi.ingsw.gc14.Model.Cards.TribeCards.Character;
import it.polimi.ingsw.gc14.Model.Cards.TribeCards.CharacterType;
import it.polimi.ingsw.gc14.Model.Player;
public class Artist extends Character {
@@ -26,6 +27,10 @@ public class Artist extends Character {
return new Artist(getEra());
}
@Override
public void insert(Player player) {
player.artists.add(this);
}
}
@@ -2,6 +2,7 @@ package it.polimi.ingsw.gc14.Model.Cards.TribeCards.Characters;
import it.polimi.ingsw.gc14.Model.Cards.TribeCards.Character;
import it.polimi.ingsw.gc14.Model.Cards.TribeCards.CharacterType;
import it.polimi.ingsw.gc14.Model.Player;
public class Builder extends Character
{
@@ -42,5 +43,7 @@ public class Builder extends Character
return new Builder(this);
}
public void insert(Player player) {
player.builders.add(this);
}
}
@@ -2,6 +2,7 @@ package it.polimi.ingsw.gc14.Model.Cards.TribeCards.Characters;
import it.polimi.ingsw.gc14.Model.Cards.TribeCards.Character;
import it.polimi.ingsw.gc14.Model.Cards.TribeCards.CharacterType;
import it.polimi.ingsw.gc14.Model.Player;
public class Gatherers extends Character {
@@ -21,5 +22,7 @@ public class Gatherers extends Character {
public Character clone() {
return new Gatherers(getEra());
}
public void insert(Player player) {
player.gatherers.add(this);
}
}
@@ -2,6 +2,7 @@ package it.polimi.ingsw.gc14.Model.Cards.TribeCards.Characters;
import it.polimi.ingsw.gc14.Model.Cards.TribeCards.Character;
import it.polimi.ingsw.gc14.Model.Cards.TribeCards.CharacterType;
import it.polimi.ingsw.gc14.Model.Player;
public class Hunter extends Character {
private boolean icon;
@@ -33,5 +34,9 @@ public class Hunter extends Character {
public Character clone() {
return new Hunter(getEra(), getIcon());
}
@Override
public void insert(Player player) {
player.hunters.add(this);
}
}
@@ -1,6 +1,7 @@
package it.polimi.ingsw.gc14.Model.Cards.TribeCards.Characters;
import it.polimi.ingsw.gc14.Model.Cards.TribeCards.Character;
import it.polimi.ingsw.gc14.Model.Cards.TribeCards.CharacterType;
import it.polimi.ingsw.gc14.Model.Player;
public class Inventor extends Character {
private int icon;
@@ -34,5 +35,8 @@ public class Inventor extends Character {
public Character clone() {
return new Inventor(getEra(),icon);
}
@Override
public void insert(Player player) {
player.inventors.add(this);
}
}
@@ -3,6 +3,7 @@ package it.polimi.ingsw.gc14.Model.Cards.TribeCards.Characters;
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.Player;
public class Shaman extends Character {
@@ -35,4 +36,9 @@ public class Shaman extends Character {
return new Shaman(getEra(), getIcon());
}
@Override
public void insert(Player player)
{
player.shamans.add(this);
}
}
@@ -32,8 +32,8 @@ public class Sustenance extends EventCard {
for(Player p : playerList){
ArrayList<Character> characters = player.getCharacterCards();
for(BuildingCard b : player.getBuildingCards()){
if(b instanceof Building1 b1){
NCharDiscount += (int) characters.stream().filter(x -> x.getType().equals(b1.getIcon())).count();
if(b.getEffectId() == 1){
NCharDiscount += (int) characters.stream().filter(x -> x.getType().equals(((Building1)b).getIcon())).count();
}
}
}
@@ -9,18 +9,21 @@ import java.util.List;
public class Game {
private List<Slot> slotList;
private List<BuildingCard> tribeDeck;
private List<TribeCard> tribeDeck;
private List<BuildingCard> buildingDeck;
private List<TribeCard> upperListTribe;
private List<TribeCard> lowerListTribe;
private List<BuildingCard> upperListBuilding;
private List<BuildingCard> lowerListBuilding;
public Game() {
slotList = new ArrayList<Slot>();
private List<Player> playersList;//No Clone?
public Game(ArrayList<Player> playersList) {
slotList = new ArrayList<>();
tribeDeck = new ArrayList<>();
buildingDeck = new ArrayList<>();
upperListTribe = new ArrayList<>();
lowerListTribe = new ArrayList<>();
upperListBuilding = new ArrayList<>();
lowerListBuilding = new ArrayList<>();
this.playersList = playersList;
}
}
@@ -3,6 +3,7 @@ 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.Characters.*;
import java.util.ArrayList;
@@ -18,6 +19,13 @@ public class Player {
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());
}
@@ -33,6 +41,13 @@ public class Player {
return copy;
}
public ArrayList <Artist> artists;
public ArrayList <Builder> builders;
public ArrayList <Inventor> inventors;
public ArrayList <Gatherers> gatherers;
public ArrayList <Shaman> shamans;
public ArrayList <Hunter> hunters;
private int FoodValue;
public int getFoodValue() {
return FoodValue;
@@ -52,15 +67,6 @@ public class Player {
// End getters
// Setters
public void setUserName(String UserName) throws IllegalArgumentException{
int max_len = 32;
if(UserName.length() > max_len || UserName.length() == 0){
throw new IllegalArgumentException();
}
this.UserName = UserName;
}
public void addFood(int Value){
this.FoodValue += Value;
}