internal PropertyCard removePropertyCardFromPlayersPropertySet(PropertyCard propertyCardToRemove, Guid propertySetToRemoveCardFromGuid)
 {
     foreach (PropertyCardSet ps in propertySets.playersPropertySets)
     {
         if (ps.guid.CompareTo(propertySetToRemoveCardFromGuid) == 0 && ps.removeProperty(propertyCardToRemove))
         {
             //Card removed, remove any houses and hotels and place them in players bank
             Card hotel = ps.removeHotel();
             if (hotel != null)
             {
                 bank.addCardToBank(hotel);
             }
             Card house = ps.removeHouse();
             if (hotel != null)
             {
                 bank.addCardToBank(house);
             }
             if (ps.properties.Count == 0)
             {
                 propertySets.removeEmptySet(ps);
             }
             return(propertyCardToRemove);
         }
     }
     //Card not removed
     return(null);
 }
 public PropertyCard(PropertyCard original)
     : base(original.cardName, original.cardText, original.cardValue, original.cardType, original.cardID, original.cardGuid)
 {
     this.currentColorSetCompleteSize = original.currentColorSetCompleteSize;
     this.currentPropertyColor        = original.currentPropertyColor;
     this.downSetSize                = original.downSetSize;
     this.fiveCardInSetRentValue     = original.fiveCardInSetRentValue;
     this.fiveCardInSetRentValueDown = original.fiveCardInSetRentValueDown;
     this.fiveCardInSetRentValueUp   = original.fiveCardInSetRentValueUp;
     this.fourCardInSetRentValue     = original.fourCardInSetRentValue;
     this.fourCardInSetRentValueDown = original.fourCardInSetRentValueDown;
     this.fourCardInSetRentValueUp   = original.fourCardInSetRentValueUp;
     this.isCardUp                    = original.isCardUp;
     this.isMultiWild                 = original.isMultiWild;
     this.isWild                      = original.isWild;
     this.oneCardInSetRentValue       = original.oneCardInSetRentValue;
     this.oneCardInSetRentValueDown   = original.oneCardInSetRentValueDown;
     this.oneCardInSetRentValueUp     = original.oneCardInSetRentValueUp;
     this.propertyColors              = original.propertyColors.cloneListPropertyColor();
     this.threeCardInSetRentValue     = original.threeCardInSetRentValue;
     this.threeCardInSetRentValueDown = original.threeCardInSetRentValueDown;
     this.threeCardInSetRentValueUp   = original.threeCardInSetRentValueUp;
     this.twoCardInSetRentValue       = original.twoCardInSetRentValue;
     this.twoCardInSetRentValueDown   = original.twoCardInSetRentValueDown;
     this.twoCardInSetRentValueUp     = original.twoCardInSetRentValueUp;
     this.upSetSize                   = original.upSetSize;
 }
Example #3
0
        public bool playPropertyCardToExistingSet(Card playedCard, PropertyCardSet setToPlayPropertyTo, Guid gameLobbyGuid, Guid playerGuid, Guid playfieldModelInstanceGuid)
        {
            PlayFieldModel lastState    = getPreviousState();
            PlayFieldModel currentState = getCurrentState();
            PlayFieldModel nextState    = null;
            PlayerModel    playerModelAtCurrentState = move.getPlayerModel(playerGuid, currentState);
            PropertyCard   playedPropertycard        = monopolyDeal.deck.getCardByID(playedCard.cardID) as PropertyCard;

            if (playedPropertycard != null && checkIfCardInHand(playedPropertycard, playerModelAtCurrentState) != null)
            {
                MoveInfo playPropertyCardFromHand = new MoveInfo();
                playPropertyCardFromHand.playerMakingMove  = playerGuid;
                playPropertyCardFromHand.moveBeingMade     = TurnActionTypes.PlayPropertyCardFromHand;
                playPropertyCardFromHand.idOfCardBeingUsed = playedCard.cardID;

                bool isOrientedUp = (playedCard as PropertyCard).isCardUp;
                playPropertyCardFromHand.isPropertyToPlayOrientedUp        = isOrientedUp;
                playPropertyCardFromHand.addPropertyToPlayToExistingSet    = true;//Add to existing set
                playPropertyCardFromHand.guidOfExistingSetToPlayPropertyTo = setToPlayPropertyTo.guid;

                BoolResponseBox result = move.evaluateMove(lastState, currentState, nextState, playerModelAtCurrentState, playPropertyCardFromHand.moveBeingMade, playPropertyCardFromHand);
                return(result.success);
            }
            return(new BoolResponseBox(false, "Selected Card is not in players hand or is not a property card").success);
        }
Example #4
0
        public BoolResponseBox movePropertyCard(int propertyCardToMoveID, bool isCardUp, bool moveToExistingSet,
                                                Guid oldSetGuid, Guid setToPlayPropertyToGuid, Guid playerGuid, Guid gameLobbyGuid, Guid playfieldModelInstanceGuid)
        {
            //Gets the last,current and a reference for the next state
            PlayFieldModel lastState    = getPreviousState();
            PlayFieldModel currentState = getCurrentState();
            PlayFieldModel nextState    = null;
            //Gets the PlayerModel of the Player making the move.
            PlayerModel playerModelAtCurrentState = move.getPlayerModel(playerGuid, currentState);
            //The property card to move between sets
            PropertyCard propertyCardToMove = monopolyDeal.deck.getCardByID(propertyCardToMoveID) as PropertyCard;

            if (propertyCardToMove != null)
            {
                //Initialize MoveInfo for moving a property card between sets
                MoveInfo movePropertyCardToNewSet = new MoveInfo();
                movePropertyCardToNewSet.playerMakingMove                  = playerGuid;
                movePropertyCardToNewSet.moveBeingMade                     = TurnActionTypes.MovePropertyCard;
                movePropertyCardToNewSet.guidOfSetPropertyToMoveIsIn       = oldSetGuid;
                movePropertyCardToNewSet.guidOfPropertyToMove              = propertyCardToMove.cardGuid;
                movePropertyCardToNewSet.isPropertyToMoveOrientedUp        = isCardUp;
                movePropertyCardToNewSet.addPropertyToMoveToExistingSet    = moveToExistingSet;
                movePropertyCardToNewSet.guidOfExistingSetToMovePropertyTo = setToPlayPropertyToGuid;
                movePropertyCardToNewSet.idOfCardBeingUsed                 = propertyCardToMoveID;
                BoolResponseBox result = move.evaluateMove(lastState, currentState, nextState, playerModelAtCurrentState, movePropertyCardToNewSet.moveBeingMade, movePropertyCardToNewSet);
                return(result);
            }
            return(new BoolResponseBox(false, "Selected Card is not in players property card sets or is not a property card"));
        }
Example #5
0
        public BoolResponseBox forcedDealCard(int forcedDealCardID, int playersCardToSwapWith, Guid setPlayersCardIsIn, Guid targetedPlayerGuid, int targetedCard, Guid setTargetCardIn, Guid playerGuid, Guid gameLobbyGuid, Guid playfieldModelInstanceGuid)
        {
            PlayFieldModel lastState    = getPreviousState();
            PlayFieldModel currentState = getCurrentState();
            PlayFieldModel nextState    = null;
            PlayerModel    playerModelAtCurrentState = move.getPlayerModel(playerGuid, currentState);
            ActionCard     playedActionCard          = monopolyDeal.deck.getCardByID(forcedDealCardID) as ActionCard;
            PropertyCard   cardToForcedDealFor       = monopolyDeal.deck.getCardByID(targetedCard) as PropertyCard;
            PropertyCard   cardToLoseInForcedDeal    = monopolyDeal.deck.getCardByID(playersCardToSwapWith) as PropertyCard;

            if (playedActionCard != null && checkIfCardInHand(playedActionCard, playerModelAtCurrentState) != null && cardToForcedDealFor != null && cardToLoseInForcedDeal != null)
            {
                MoveInfo playForcedDeal = new MoveInfo();
                playForcedDeal.playerWhoseTurnItIs = currentState.guidOfPlayerWhosTurnItIs;
                playForcedDeal.playerMakingMove    = playerGuid;
                playForcedDeal.moveBeingMade       = TurnActionTypes.PlayActionCard;
                playForcedDeal.idOfCardBeingUsed   = forcedDealCardID;

                playForcedDeal.actionCardActionType = ActionCardAction.ForcedDeal;

                playForcedDeal.guidOfCardToBeForcedDealed         = cardToForcedDealFor.cardGuid;
                playForcedDeal.guidOfSetCardToBeForcedDealedIsIn  = setTargetCardIn;
                playForcedDeal.guidOfPlayerWhoIsBeingForcedDealed = targetedPlayerGuid;

                playForcedDeal.idOfCardToBeForcedDealed             = cardToForcedDealFor.cardID;
                playForcedDeal.idOfCardToBeGivenUpInForcedDeal      = cardToLoseInForcedDeal.cardID;
                playForcedDeal.guidOfCardToBeGivenUpInForcedDeal    = cardToLoseInForcedDeal.cardGuid;
                playForcedDeal.guidOfSetCardGivenUpInForcedDealIsIn = setPlayersCardIsIn;

                BoolResponseBox result = move.evaluateMove(lastState, currentState, nextState, playerModelAtCurrentState, playForcedDeal.moveBeingMade, playForcedDeal);
                return(result);
            }
            return(new BoolResponseBox(false, "Selected Card is not in players hand or is not a Action card"));
        }
 public PropertyCardSet(PropertyCard propertyCard, Guid guid)
 {
     id = generateID();
     this.guid = guid;
     properties = new LinkedList<PropertyCard>();
     properties.AddFirst(propertyCard);
     propertySetColor = propertyCard.getPropertyColor();
 }
Example #7
0
 public PropertyCardSet(PropertyCard propertyCard, Guid guid)
 {
     id         = generateID();
     this.guid  = guid;
     properties = new LinkedList <PropertyCard>();
     properties.AddFirst(propertyCard);
     propertySetColor = propertyCard.getPropertyColor();
 }
Example #8
0
 public bool playPropertyCardFromHand(PropertyCard card, PropertyCardSet setToPlaceCardIn)
 {
     if (setToPlaceCardIn.addProperty(card))
     {
         cardsInHand.Remove(card);
         return(true);
     }
     else
     {
         return(false);
     }
 }
Example #9
0
        public bool addProperty(PropertyCard newCard)
        {
            //Returns true if property card is added to set
            //Returns false if property card is not added to set

            bool isThisSetFull = false;

            if (properties.Count == 0)
            {
                //Card is first Card in set
                properties.AddLast(newCard);
                propertySetColor = newCard.getPropertyColor();
                return(true);
            }
            isThisSetFull = this.isFullSet();
            if (isThisSetFull)
            {
                //Set full
                return(false);
            }
            if (properties.Count > 0 && !isThisSetFull)
            {
                if (isPropertyCompatible(newCard))
                {
                    newCard.currentPropertyColor = propertySetColor;//Danger
                    properties.AddLast(newCard);
                    return(true);
                }
                return(false);

                /*
                 * //used to track wether property card is up or down
                 * bool isUp = false;
                 * foreach (PropertyColor newCardColor in newCard.propertyColors)
                 * {
                 *  if (newCardColor.CompareTo(getPropertySetColor()) == 0)
                 *  {
                 *      isUp = !isUp;
                 *      newCard.isCardUp = isUp;
                 *      newCard.currentPropertyColor = newCardColor;
                 *      properties.AddLast(newCard);
                 *      //Card is correct colour
                 *      return true;
                 *  }
                 * }
                 * */
            }
            //Card is not correct colour
            return(false);
        }
Example #10
0
 public bool isPropertyCompatible(PropertyCard card)
 {
     if (card.isMultiWild)
     {
         return(true);
     }
     foreach (PropertyColor pc in card.propertyColors)
     {
         if (pc.CompareTo(this.propertySetColor) == 0)
         {
             return(true);
         }
     }
     return(false);
 }
 public Card removePropertyCardFromSet(PropertyCard cardToRemove, Guid propertyCardSetGuid)
 {
     foreach (PropertyCardSet pcs in playersPropertySets)
     {
         if (pcs.guid.CompareTo(propertyCardSetGuid) == 0)
         {
             if (pcs.removeProperty(cardToRemove))
             {
                 return cardToRemove;
             }
             else
             {
                 return null; //Set Found card not removed
             }
         }
     }
     return null;//Set not found
 }
Example #12
0
 public Card removePropertyCardFromSet(PropertyCard cardToRemove, Guid propertyCardSetGuid)
 {
     foreach (PropertyCardSet pcs in playersPropertySets)
     {
         if (pcs.guid.CompareTo(propertyCardSetGuid) == 0)
         {
             if (pcs.removeProperty(cardToRemove))
             {
                 return(cardToRemove);
             }
             else
             {
                 return(null); //Set Found card not removed
             }
         }
     }
     return(null);//Set not found
 }
Example #13
0
        public bool removeProperty(PropertyCard cardToRemove)
        {
            foreach (PropertyCard p in properties)
            {
                if (p.cardID.CompareTo(cardToRemove.cardID) == 0)
                {
                    properties.Remove(p);
                    return(true);
                }
            }
            return(false);

            /*
             * if (properties.Contains(cardToRemove))
             * {
             *  properties.Remove(cardToRemove);
             *  //FIX if set was full and had house or hotel cards these should be moved to the bank pile.
             *  return true;
             * }
             * return false;
             * */
        }
Example #14
0
        public bool playPropertyCardToNewSet(Guid gameGuid, bool isOrientedUp, Guid playerGuid, Guid gameStateActionShouldBeAppliedOnGuid, TurnActionTypes actionType, int propertyCardID)
        {
            PlayFieldModel lastState    = getPreviousState();
            PlayFieldModel currentState = getCurrentState();
            PlayFieldModel nextState    = null;
            PlayerModel    playerModelAtCurrentState = move.getPlayerModel(playerGuid, currentState);
            PropertyCard   playedcard = monopolyDeal.deck.getCardByID(propertyCardID) as PropertyCard;

            if (playedcard != null && checkIfCardInHand(playedcard, playerModelAtCurrentState) != null)
            {
                MoveInfo playPropertyCardFromHand = new MoveInfo();
                playPropertyCardFromHand.playerWhoseTurnItIs            = playerGuid;
                playPropertyCardFromHand.playerMakingMove               = playerGuid;
                playPropertyCardFromHand.moveBeingMade                  = TurnActionTypes.PlayPropertyCardFromHand;
                playPropertyCardFromHand.idOfCardBeingUsed              = propertyCardID;
                playPropertyCardFromHand.isPropertyToPlayOrientedUp     = isOrientedUp;
                playPropertyCardFromHand.addPropertyToPlayToExistingSet = false;//Add to new set

                BoolResponseBox result = move.evaluateMove(lastState, currentState, nextState, playerModelAtCurrentState, playPropertyCardFromHand.moveBeingMade, playPropertyCardFromHand);
                return(result.success);
            }
            return(new BoolResponseBox(false, "Selected Card is not in players hand or is not a property card").success);
        }
        public bool addProperty(PropertyCard newCard)
        {
            //Returns true if property card is added to set
            //Returns false if property card is not added to set

            bool isThisSetFull = false;
            if (properties.Count == 0)
            {
                //Card is first Card in set
                properties.AddLast(newCard);
                propertySetColor = newCard.getPropertyColor();
                return true;
            }
            isThisSetFull = this.isFullSet();
            if (isThisSetFull)
            {
                //Set full
                return false;
            }
            if (properties.Count > 0 && !isThisSetFull)
            {
                if (isPropertyCompatible(newCard))
                {
                    newCard.currentPropertyColor = propertySetColor;//Danger
                    properties.AddLast(newCard);
                    return true;
                }
                return false;
                /*
                //used to track wether property card is up or down
                bool isUp = false;
                foreach (PropertyColor newCardColor in newCard.propertyColors)
                {
                    if (newCardColor.CompareTo(getPropertySetColor()) == 0)
                    {
                        isUp = !isUp;
                        newCard.isCardUp = isUp;
                        newCard.currentPropertyColor = newCardColor;
                        properties.AddLast(newCard);
                        //Card is correct colour
                        return true;
                    }
                }
                 * */
            }
            //Card is not correct colour
            return false;
        }
Example #16
0
 public bool playPropertyCardFromHand(PropertyCard card, PropertyCardSet setToPlaceCardIn)
 {
     if (setToPlaceCardIn.addProperty(card))
     {
         cardsInHand.Remove(card);
         return true;
     }
     else
     {
         return false;
     }
 }
 public void referenceAllDataContracts(ActionCard ac, Card c, FieldUpdateMessage fum, Message msg, MoneyCard mc, PlayerBank pb, PlayerHand ph, PlayerModel pm, PlayerPropertySets pps, PlayFieldModel pfm, PlayPile pp, PollForFieldUpdateMessage pffum, PropertyCard pc, PropertyCardSet pcs, PropertySetInfo psi, RentStandard rs, TakeActionOnTurnMessage taotm, TurnActionModel tam)
 {
     throw new NotImplementedException();
 }
 public override Card clone()
 {
     PropertyCard pClone = new PropertyCard(this);
     return pClone;
 }
        public override Card clone()
        {
            PropertyCard pClone = new PropertyCard(this);

            return(pClone);
        }
 public bool isPropertyCompatible(PropertyCard card)
 {
     if (card.isMultiWild)
     {
         return true;
     }
     foreach (PropertyColor pc in card.propertyColors)
     {
         if (pc.CompareTo(this.propertySetColor) == 0)
         {
             return true;
         }
     }
     return false;
 }
 public bool removeProperty(PropertyCard cardToRemove)
 {
     foreach (PropertyCard p in properties)
     {
         if (p.cardID.CompareTo(cardToRemove.cardID) == 0)
         {
             properties.Remove(p);
             return true;
         }
     }
     return false;
     /*
     if (properties.Contains(cardToRemove))
     {
         properties.Remove(cardToRemove);
         //FIX if set was full and had house or hotel cards these should be moved to the bank pile.
         return true;
     }
     return false;
      * */
 }
 public void referenceAllDataContracts(ActionCard ac, Card c, FieldUpdateMessage fum, Message msg, MoneyCard mc, PlayerBank pb, PlayerHand ph, PlayerModel pm, PlayerPropertySets pps, PlayFieldModel pfm, PlayPile pp, PollForFieldUpdateMessage pffum, PropertyCard pc, PropertyCardSet pcs, PropertySetInfo psi, RentStandard rs, TakeActionOnTurnMessage taotm, TurnActionModel tam)
 {
     throw new NotImplementedException();
 }
Example #23
0
 internal PropertyCard removePropertyCardFromPlayersPropertySet(PropertyCard propertyCardToRemove, Guid propertySetToRemoveCardFromGuid)
 {
     foreach (PropertyCardSet ps in propertySets.playersPropertySets)
     {
         if (ps.guid.CompareTo(propertySetToRemoveCardFromGuid) == 0 && ps.removeProperty(propertyCardToRemove))
         {
             //Card removed, remove any houses and hotels and place them in players bank
             Card hotel = ps.removeHotel();
             if (hotel != null)
             {
                 bank.addCardToBank(hotel);
             }
             Card house = ps.removeHouse();
             if (hotel != null)
             {
                 bank.addCardToBank(house);
             }
             if (ps.properties.Count == 0)
             {
                 propertySets.removeEmptySet(ps);
             }
             return propertyCardToRemove;
         }
     }
     //Card not removed
     return null;
 }
 public PropertyCard(PropertyCard original)
     : base(original.cardName, original.cardText, original.cardValue, original.cardType, original.cardID, original.cardGuid)
 {
     this.currentColorSetCompleteSize = original.currentColorSetCompleteSize;
     this.currentPropertyColor = original.currentPropertyColor;
     this.downSetSize = original.downSetSize;
     this.fiveCardInSetRentValue = original.fiveCardInSetRentValue;
     this.fiveCardInSetRentValueDown = original.fiveCardInSetRentValueDown;
     this.fiveCardInSetRentValueUp = original.fiveCardInSetRentValueUp;
     this.fourCardInSetRentValue = original.fourCardInSetRentValue;
     this.fourCardInSetRentValueDown = original.fourCardInSetRentValueDown;
     this.fourCardInSetRentValueUp = original.fourCardInSetRentValueUp;
     this.isCardUp = original.isCardUp;
     this.isMultiWild = original.isMultiWild;
     this.isWild = original.isWild;
     this.oneCardInSetRentValue = original.oneCardInSetRentValue;
     this.oneCardInSetRentValueDown = original.oneCardInSetRentValueDown;
     this.oneCardInSetRentValueUp = original.oneCardInSetRentValueUp;
     this.propertyColors = original.propertyColors.cloneListPropertyColor();
     this.threeCardInSetRentValue = original.threeCardInSetRentValue;
     this.threeCardInSetRentValueDown = original.threeCardInSetRentValueDown;
     this.threeCardInSetRentValueUp = original.threeCardInSetRentValueUp;
     this.twoCardInSetRentValue = original.twoCardInSetRentValue;
     this.twoCardInSetRentValueDown = original.twoCardInSetRentValueDown;
     this.twoCardInSetRentValueUp = original.twoCardInSetRentValueUp;
     this.upSetSize = original.upSetSize;
 }