Exemplo n.º 1
0
        public void TestChangeMeepleNegativeStartField()
        {
            GameTable       gameTable  = _hub.GetGeneratedGameTable(TableId);
            PlayerFieldArea greenArea  = gameTable.PlayerFieldAreas.Find(area => area.ColorCode == ColorCode.Green);
            PlayerFieldArea blueArea   = gameTable.PlayerFieldAreas.Find(area => area.ColorCode == ColorCode.Blue);
            StandardField   startField = greenArea.Fields[10] as StandardField;
            StartField      endField   = greenArea.Fields.Find(field => field.FieldType.Contains("StartField")) as StartField;
            Meeple          meeple1    = greenArea.Meeples[0];
            Meeple          meeple2    = blueArea.Meeples[0];

            meeple2.IsStartFieldBlocked = true;
            startField.CurrentMeeple    = meeple1;
            endField.CurrentMeeple      = meeple2;
            MeepleMove meepleMove = new MeepleMove()
            {
                Meeple          = meeple1,
                MoveDestination = endField
            };
            CardMove cardMove = new CardMove()
            {
                Card = _cardChange,
                SelectedAttribute = CardAttributeChangePlace
            };

            Assert.AreEqual(false, Validation.ValidateMove(meepleMove, cardMove));
        }
Exemplo n.º 2
0
        public void TestChangeMeeplePositive()
        {
            GameTable       gameTable  = _hub.GetGeneratedGameTable(TableId);
            PlayerFieldArea greenArea  = gameTable.PlayerFieldAreas.Find(area => area.ColorCode == ColorCode.Green);
            PlayerFieldArea blueArea   = gameTable.PlayerFieldAreas.Find(area => area.ColorCode == ColorCode.Blue);
            StandardField   startField = greenArea.Fields[10] as StandardField;
            StandardField   endField   = greenArea.Fields[14] as StandardField;
            Meeple          meeple1    = greenArea.Meeples[0];
            Meeple          meeple2    = blueArea.Meeples[0];

            startField.CurrentMeeple = meeple1;
            endField.CurrentMeeple   = meeple2;
            MeepleMove meepleMove = new MeepleMove()
            {
                Meeple          = meeple1,
                MoveDestination = endField
            };
            CardMove cardMove = new CardMove()
            {
                Card = _cardJoker,
                SelectedAttribute = CardAttributeChangePlace
            };

            Assert.AreEqual(true, Validation.ValidateMove(meepleMove, cardMove));
        }
Exemplo n.º 3
0
        // Event for CardMove
        private void CardMove_OnClickValidate(object sender, EventArgs e)
        {
            CardMove card = (CardMove)_CardHandler.CurrentCard;

            EventMovePlayer(PlayerHandler.Instance.currentPlayer, card.NbMove, true);
            _CardHandler.ExecuteCardAction(card);

            this.Content = null;
        }
Exemplo n.º 4
0
    private void Start()
    {
        combatController = FindObjectOfType <CombatController>();
        CardMove cardMove = GetComponent <CardMove>();

        origXScale = transform.localScale.x;
        origYScale = transform.localScale.y;

        if (combatController.state == CombatState.ViewDeck || combatController.state == CombatState.ViewDiscard)
        {
            cardMove.enabled = false;
        }
        else
        {
            cardMove.enabled = true;
        }
    }
Exemplo n.º 5
0
        public static bool ValidateMove(MeepleMove meepleMove, CardMove cardMove)
        {
            Meeple movedMeeple = meepleMove.Meeple;
            MoveDestinationField destinationField = meepleMove.MoveDestination;
            int test = 0;

            if (movedMeeple == null || cardMove == null)
            {
                return(false);
            }
            foreach (CardAttribute attribute in cardMove.Card.Attributes)
            {
                switch (attribute.Attribute)
                {
                case CardFeature.ChangePlace:
                    if (ProveChangePlace(movedMeeple, destinationField))
                    {
                        test += 1;
                        if ((cardMove.Card.Name == "cardJoker" && GetDifferenceBetweenTwoFields(movedMeeple.CurrentPosition, destinationField) > 13) ||
                            (cardMove.Card.Name == "cardJoker" && IsPartnerColorCode(movedMeeple.ColorCode, destinationField.CurrentMeeple.ColorCode) && GetDifferenceBetweenTwoFields(movedMeeple.CurrentPosition, destinationField) <= 13) ||
                            (cardMove.Card.Name != "cardJoker"))
                        {
                            cardMove.SelectedAttribute = new CardAttribute(CardFeature.ChangePlace);
                        }
                    }
                    break;

                case CardFeature.LeaveKennel:
                    if (ProveLeaveKennel(movedMeeple, destinationField))
                    {
                        test += 1;
                    }
                    break;
                }

                if (ProveValueCard(movedMeeple, destinationField, (int)attribute.Attribute))
                {
                    test += 1;
                }
            }
            return(test > 0);
        }
Exemplo n.º 6
0
        private async Task AddCard(int moveInt, string gameId, List <Player> players)
        {
            var listCardMoves = new List <CardMove>();

            foreach (var item in players)
            {
                Card card = GetCard(gameId);
                var  move = new CardMove
                {
                    GameId   = gameId,
                    CardId   = card.Id,
                    PlayerId = item.Id,
                    Name     = item.UserName,
                    Role     = item.Role,
                    Value    = card.Value,
                    Move     = moveInt
                };
                listCardMoves.Add(move);
            }
            await _cardMoveRepository.AddRange(listCardMoves);
        }
Exemplo n.º 7
0
        public void TestLeaveKennelNotAllowed()
        {
            GameTable       gameTable  = _hub.GetGeneratedGameTable(TableId);
            PlayerFieldArea greenArea  = gameTable.PlayerFieldAreas.Find(area => area.ColorCode == ColorCode.Green);
            StandardField   startField = greenArea.Fields[10] as StandardField;
            StandardField   endField   = greenArea.Fields[14] as StandardField;
            Meeple          meeple     = greenArea.Meeples[0];

            meeple.CurrentPosition = startField;
            MeepleMove meepleMove = new MeepleMove()
            {
                Meeple          = meeple,
                MoveDestination = endField
            };
            CardMove cardMove = new CardMove()
            {
                Card = _card13,
                SelectedAttribute = CardAttributeLeaveKennel
            };

            Assert.AreEqual(false, Validation.ValidateMove(meepleMove, cardMove));
        }
Exemplo n.º 8
0
        public void TestLeaveKennel()
        {
            GameTable       gameTable   = _hub.GetGeneratedGameTable(TableId);
            PlayerFieldArea greenArea   = gameTable.PlayerFieldAreas.Find(area => area.ColorCode == ColorCode.Green);
            KennelField     kennelField = greenArea.KennelFields[0] as KennelField;
            StartField      endField    = greenArea.Fields.Find(field => field.FieldType.Contains("StartField")) as StartField;
            Meeple          meeple      = greenArea.Meeples[0];

            meeple.CurrentPosition = kennelField;
            MeepleMove meepleMove = new MeepleMove()
            {
                Meeple          = meeple,
                MoveDestination = endField
            };
            CardMove cardMove = new CardMove()
            {
                Card = _card11,
                SelectedAttribute = CardAttributeLeaveKennel
            };

            Assert.AreEqual(true, Validation.ValidateMove(meepleMove, cardMove));
        }
Exemplo n.º 9
0
    // ドロップした時
    public void OnDrop(PointerEventData eventData)
    {
        CardMove card     = eventData.pointerDrag.GetComponent <CardMove>();
        CardData cardData = card.GetComponent <CardData>();

        if ((card) &&
            (this.transform.childCount < 3) &&
            (cardData._team == _cardManager._nowTurn)
            )
        {
            Transform hand = card._parent;
            card._parent = this.transform;

            if (_cardManager.GetStrageTopNum() < _cardManager.GetMaxNum())
            {
                _cardManager.CardInstantiate(hand);
            }

            _cardManager._nowTurn = 1 - _cardManager._nowTurn;
            //_save.SetCardPlayOrder( cardData );
        }
    }
Exemplo n.º 10
0
        public void TestMovedInOtherFieldAreaPositive()
        {
            GameTable       gameTable  = _hub.GetGeneratedGameTable(TableId);
            PlayerFieldArea startArea  = gameTable.PlayerFieldAreas.Find(area => area.ColorCode == ColorCode.Green);
            PlayerFieldArea targeArea  = gameTable.PlayerFieldAreas.Find(area => area.ColorCode == ColorCode.Yellow);
            StandardField   startField = startArea.Fields[14] as StandardField;
            StandardField   endField   = targeArea.Fields[2] as StandardField;
            Meeple          meeple     = startArea.Meeples[0];

            meeple.CurrentPosition = startField;
            MeepleMove meepleMove = new MeepleMove()
            {
                Meeple          = meeple,
                MoveDestination = endField
            };
            CardMove cardMove = new CardMove()
            {
                Card = _card4,
                SelectedAttribute = CardAttributeThirteenFields
            };

            Assert.AreEqual(true, Validation.ValidateMove(meepleMove, cardMove));
        }
Exemplo n.º 11
0
        public void ValidateMove(MeepleMove meepleMove, CardMove cardMove, int tableId)
        {
            GameTable actualGameTable = GameTableService.GetTable(Games, tableId);

            if (meepleMove == null)
            {
                return;
            }
            meepleMove.Meeple.CurrentPosition = meepleMove.Meeple.CurrentPosition ?? Validation.GetFieldById(actualGameTable, meepleMove.Meeple.CurrentFieldId);
            meepleMove.MoveDestination        = meepleMove.MoveDestination ?? Validation.GetFieldById(actualGameTable, meepleMove.DestinationFieldId);
            if (Validation.ValidateMove(meepleMove, cardMove))
            {
                GameTableService.UpdateMeeplePosition(meepleMove, actualGameTable, cardMove.SelectedAttribute != null);
                List <Meeple> allMeeples = new List <Meeple>();
                foreach (PlayerFieldArea area in actualGameTable.PlayerFieldAreas)
                {
                    allMeeples.AddRange(area.Meeples);
                }
                actualGameTable.CardServiceData.RemoveCardFromUserHand(actualGameTable, GameTableService.GetActualUser(Context.User.Identity.Name), cardMove.Card);
                Task sendPosition = Clients.All.sendMeeplePositions(allMeeples, tableId);
                sendPosition.Wait();
                if (GameServices.IsGameFinished(actualGameTable))
                {
                    IEnumerable <string> winners = GameServices.GetWinners(actualGameTable);
                    string winMsg = ServerMessages.GameFinished.Replace("{0}", string.Join(" & ", winners));
                    Clients.All.notifyAllGameIsFinished(winMsg, actualGameTable.Identifier);
                }
                else
                {
                    NotifyNextPlayer("", actualGameTable);
                }
            }
            else
            {
                Clients.Caller.returnMove(tableId);
            }
        }
Exemplo n.º 12
0
        private async Task <Card> AddCard(int moveInt, string gameId, List <Player> playersList)
        {
            var listCardMoves = new List <CardMove>();
            var newCard       = new Card();

            foreach (var player in playersList)
            {
                Card card = GetCard(gameId);
                var  move = new CardMove
                {
                    GameId   = gameId,
                    CardId   = card.Id,
                    PlayerId = player.Id,
                    Name     = player.UserName,
                    Role     = player.Role,
                    Value    = card.Value,
                    Move     = moveInt
                };
                listCardMoves.Add(move);
                newCard = card;
                await _cardMoveRepository.Add(move);
            }
            return(newCard);
        }
Exemplo n.º 13
0
        public void ExecuteCardAction(Card c)
        {
            if (c is CardUpdateMoney)
            {
                CardUpdateMoney card = (CardUpdateMoney)c;
                if (card.Amount < 0)
                {
                    _PlayerHandler.PayeAmount(PlayerHandler.Instance.currentPlayer, Math.Abs(card.Amount));
                }
                else
                {
                    _PlayerHandler.CardGiveMoney(PlayerHandler.Instance.currentPlayer, card.Amount);
                }
            }
            else if (c is CardUpdateMoneyAccordingBuilds)
            {
                CardUpdateMoneyAccordingBuilds  card       = (CardUpdateMoneyAccordingBuilds)c;
                ObservableCollection <Property> properties = _PlayerHandler.Properties();

                int Amount = 0;
                foreach (Property p in properties)
                {
                    if (p is Land)
                    {
                        Land l = (Land)p;
                        Amount += l.NbHotel * card.CostHotel;
                        Amount += l.NbHouse * card.CostHouse;
                    }
                }
                _PlayerHandler.PayeAmount(PlayerHandler.Instance.currentPlayer, Math.Abs(Amount));
            }
            else if (c is CardAnniversary)
            {
                CardAnniversary    card    = (CardAnniversary)c;
                Player             current = _PlayerHandler.currentPlayer;
                Predicate <Player> findAllPlayerWithoutDrawer = (Player p) => { return(p.Id != current.Id); };
                List <Player>      players = _PlayerHandler.ListOfPlayers.FindAll(findAllPlayerWithoutDrawer);
                foreach (Player p in players)
                {
                    _PlayerHandler.PayeTo(p, current, card.Amount);
                }
            }
            else if (c is CardMove)
            {
                CardMove card    = (CardMove)c;
                Player   current = _PlayerHandler.currentPlayer;
                _PlayerHandler.MoveTo(current, (current.Position + card.NbMove));
            }
            else if (c is CardMoveToCell)
            {
                CardMoveToCell card    = (CardMoveToCell)c;
                Player         current = _PlayerHandler.currentPlayer;
                _PlayerHandler.MoveTo(current, _BoardHandler.Board.GetCell(card.CellPosition));
            }
            else if (c is CardMoveToJail)
            {
                CardMoveToJail card    = (CardMoveToJail)c;
                Player         current = _PlayerHandler.currentPlayer;
                current.InJail = true;
                DicesHandler.Instance.PlayerCanBeRaise = false;
                _PlayerHandler.MoveTo(current, _BoardHandler.Board.GetCell(card.CellPosition));
            }
            else if (c is CardExitToJail)
            {
                CardExitToJail card    = (CardExitToJail)c;
                Player         current = _PlayerHandler.currentPlayer;
                switch (card.Action)
                {
                case CardExitToJail.ActionOption.EXITTOJAIL:
                    _PlayerHandler.ExitToJail(current);
                    break;

                case CardExitToJail.ActionOption.KEEPCARD:
                    _PlayerHandler.AddCardTo(current, c);
                    break;
                }
            }
            else if (c is CardChoice)
            {
                CardChoice card    = (CardChoice)c;
                Player     current = _PlayerHandler.currentPlayer;

                switch (card.Action)
                {
                case CardChoice.ActionOption.DRAWCARD:
                    switch (card.CardTypeToDraw)
                    {
                    case (int)CardType.CHANCE:
                        this.GetNextChanceCard();
                        break;

                    case (int)CardType.COMMUNITY:
                        this.GetNextCommunityCard();
                        break;
                    }
                    break;

                case CardChoice.ActionOption.PAY:
                    _PlayerHandler.PayeAmount(current, card.Amount);
                    break;
                }
            }
        }
Exemplo n.º 14
0
 // Use this for initialization
 void Start()
 {
     _this = this;
 }
Exemplo n.º 15
0
 public void RemoveCard(CardMove card)
 {
     cards.Remove(card);
 }
Exemplo n.º 16
0
 public void AddCard(CardMove card)
 {
     cards.Add(card);
 }