@@ -0,0 +1,57 @@
|
||||
package it.polimi.ingsw.gc14.Controller;
|
||||
|
||||
import it.polimi.ingsw.gc14.Model.Game;
|
||||
import it.polimi.ingsw.gc14.Model.Player;
|
||||
|
||||
public class GameController {
|
||||
private Game model;
|
||||
public GameController(Game model) {
|
||||
this.model = model;
|
||||
}
|
||||
public void addPlayer(String username) {
|
||||
model.addPlayer(new Player(username));
|
||||
}
|
||||
public boolean drawUpperTribeCard(String playerUsername,int pos) {
|
||||
Player player= model.getPlayerByUsername(playerUsername);
|
||||
if(player==null)
|
||||
return false;
|
||||
return model.DrawUpperTribeCardByIndex(model.getPlayerByUsername(playerUsername),pos);
|
||||
}
|
||||
public boolean drawLowerTribeCard(String playerUsername,int pos) {
|
||||
Player player= model.getPlayerByUsername(playerUsername);
|
||||
if(player==null)
|
||||
return false;
|
||||
return model.DrawLowerTribeCardByIndex(model.getPlayerByUsername(playerUsername), pos);
|
||||
}
|
||||
public boolean drawUpperBuildingCard(String playerUsername,int pos) {
|
||||
Player player= model.getPlayerByUsername(playerUsername);
|
||||
if(player==null)
|
||||
return false;
|
||||
return model.DrawUpperBuildingCardByIndex(model.getPlayerByUsername(playerUsername), pos);
|
||||
}
|
||||
public boolean drawLowerBuildingCard(String playerUsername,int pos) {
|
||||
Player player= model.getPlayerByUsername(playerUsername);
|
||||
if(player==null)
|
||||
return false;
|
||||
return model.DrawLowerBuildingCardByIndex(model.getPlayerByUsername(playerUsername), pos);
|
||||
}
|
||||
|
||||
public boolean pickOptionalTribeCard(String playerUsername,int pos) {
|
||||
Player player= model.getPlayerByUsername(playerUsername);
|
||||
if(player==null)
|
||||
return false;
|
||||
return model.PickOptionalTribeCardByIndex(model.getPlayerByUsername(playerUsername), pos);
|
||||
}
|
||||
public boolean pickOptionalBuildingCard(String playerUsername,int pos) {
|
||||
Player player= model.getPlayerByUsername(playerUsername);
|
||||
if(player==null)
|
||||
return false;
|
||||
return model.PickOptionalBuildingCard(model.getPlayerByUsername(playerUsername), pos);
|
||||
}
|
||||
public boolean slotChoice(String playerUsername,int pos) {
|
||||
Player player= model.getPlayerByUsername(playerUsername);
|
||||
if(player==null)//playerIndex>=model.)
|
||||
return false;
|
||||
return model.SlotChoiceByIndex(model.getPlayerByUsername(playerUsername),pos);
|
||||
}
|
||||
}
|
||||
@@ -33,13 +33,27 @@ public class Game {
|
||||
board.upperListTribe.forEach(x->cards.add(x.clone()));
|
||||
return cards;
|
||||
}
|
||||
public List<TribeCard>getLowerListTribeCards() {
|
||||
List<TribeCard> cards = new ArrayList<>();
|
||||
board.lowerListTribe.forEach(x->cards.add(x.clone()));
|
||||
return cards;
|
||||
}
|
||||
public List<BuildingCard>getUpperListBuilding() {
|
||||
List<BuildingCard> cards = new ArrayList<>();
|
||||
board.upperListBuilding.forEach(x->cards.add(x.clone()));
|
||||
return cards;
|
||||
}
|
||||
public List<BuildingCard>getLowerListBuilding() {
|
||||
List<BuildingCard> cards = new ArrayList<>();
|
||||
board.lowerListBuilding.forEach(x->cards.add(x.clone()));
|
||||
return cards;
|
||||
}
|
||||
public CurrentState getCurrentState() {
|
||||
return currentState;
|
||||
};
|
||||
public Player getPlayerByIndex(int playerIndex) throws IndexOutOfBoundsException {
|
||||
if(playerIndex >= playersList.size())
|
||||
throw new IndexOutOfBoundsException("Player index out of bounds");
|
||||
return playersList.get(playerIndex);
|
||||
|
||||
public Player getPlayerByUsername(String Username) throws IndexOutOfBoundsException {
|
||||
return playersList.stream().filter(x->x.getUserName().equals(Username)).findFirst().orElse(null);
|
||||
}
|
||||
|
||||
|
||||
@@ -157,7 +171,7 @@ public class Game {
|
||||
if(currentState.getNLower() <1)
|
||||
return false;
|
||||
TribeCard tribeCard = board.lowerListTribe.get(cardIndex);
|
||||
if(!tribeCard.IsEventCard())
|
||||
if(tribeCard.IsEventCard())
|
||||
return false;
|
||||
|
||||
Character tempCard = (Character) tribeCard;
|
||||
@@ -228,36 +242,38 @@ public class Game {
|
||||
//endregion
|
||||
|
||||
//region Optional Card Methods
|
||||
public boolean PickOptionalTribeCard(Player player,TribeCard tribeCard) {
|
||||
public boolean PickOptionalTribeCardByIndex(Player player,int cardIndex) {
|
||||
if(currentState.getGameStage() != GameStages.OPTIONAL_CARD_EFFECT){
|
||||
return false;
|
||||
}
|
||||
if(!player.equals(currentState.getCurrentPlayer())){
|
||||
return false;
|
||||
}
|
||||
if(!board.upperListTribe.contains(tribeCard)){
|
||||
|
||||
if( cardIndex<0 || cardIndex >=board.upperListTribe.size())
|
||||
return false;
|
||||
}
|
||||
if(tribeCard.IsEventCard()){
|
||||
TribeCard tribeCard = board.upperListTribe.get(cardIndex);
|
||||
|
||||
if(tribeCard.IsEventCard())
|
||||
return false;
|
||||
}
|
||||
|
||||
Character tempCard = (Character) tribeCard;
|
||||
tempCard.insert(player);
|
||||
board.removeUpperTribeCard(tempCard);
|
||||
OptionalCardQueue.removeIf(x->x.equals(player));
|
||||
nextPlayerSetup();
|
||||
|
||||
return true;
|
||||
}
|
||||
public boolean PickOptionalBuildingCard(Player player, BuildingCard buildingCard) {
|
||||
public boolean PickOptionalBuildingCard(Player player, int cardIndex) {
|
||||
if(currentState.getGameStage() != GameStages.OPTIONAL_CARD_EFFECT){
|
||||
return false;
|
||||
}
|
||||
if(!player.equals(currentState.getCurrentPlayer())){
|
||||
return false;
|
||||
}
|
||||
if(!board.upperListBuilding.contains(buildingCard)){
|
||||
if( cardIndex<0 || cardIndex >=board.upperListBuilding.size())
|
||||
return false;
|
||||
}
|
||||
BuildingCard buildingCard = board.upperListBuilding.get(cardIndex);
|
||||
if(buildingCard.buy(player)) {
|
||||
board.removeUpperBuildingCard(buildingCard);
|
||||
}
|
||||
@@ -265,7 +281,7 @@ public class Game {
|
||||
return false;
|
||||
}
|
||||
nextPlayerSetup();
|
||||
|
||||
OptionalCardQueue.removeIf(x->x.equals(player));
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -305,9 +321,10 @@ public class Game {
|
||||
if(GameStages.RESOLVING_ACTIONS==currentState.getGameStage()) {
|
||||
orderLogicCard.push(currentState.getCurrentPlayer());
|
||||
slotMap.put(currentState.getSlot(), null);
|
||||
for (Slot s : board.getSlotList()) {
|
||||
for (Slot s : slotMap.keySet()) {
|
||||
if (slotMap.get(s) != null) {
|
||||
currentState.PlayerUpdate(slotMap.get(s), s);
|
||||
break;
|
||||
}
|
||||
}
|
||||
if(slotMap.values().stream().allMatch(v -> v == null))
|
||||
|
||||
Reference in New Issue
Block a user