private void DeleteCardsPromLastPlace() { Card card = _cardsMove[0]; switch (card.Place) { case CardPlace.None: //throw new Exception("Card isn`t placed in any column."); break; case CardPlace.ResultColumn: //can`t move this card throw new Exception("Can`t move from result column."); //break; case CardPlace.GameColumn: int?iColGame = GameColumns.GetGameColIndex(card); if (iColGame != null) { for (int index = _cardsMove.Count - 1; index >= 0; index--) { GameColumns.ColGame[(int)iColGame].DeleteCard(_cardsMove[index]); } } else { throw new Exception("Index game column in null."); } break; case CardPlace.AdditionalColumn: if (GameColumns.ColAdditional[GameWindowConstants.iColKing].Contains(card)) { GameColumns.ColAdditional[GameWindowConstants.iColKing].DeleteCard(card); } else { GameColumns.ColAdditional[GameWindowConstants.iColJoker].DeleteCard(card); } break; case CardPlace.Deck: if (GameColumns.ColDeck.Contains(card)) { GameColumns.ColDeck.DeleteCard(card); } else { throw new Exception("Unknown card in deck"); } break; } }
private void SetMovingCards(Card card) { _cardsMove.Clear(); switch (card.Place) { case CardPlace.GameColumn: int?iColGame = GameColumns.GetGameColIndex(card); if (iColGame != null) { for (int index = GameColumns.ColGame[(int)iColGame].Count - 1; index >= 0; index--) { Card lastCard = GameColumns.ColGame[(int)iColGame][index]; _cardsMove.Add(lastCard); if (lastCard.Equals(card)) { break; } } } else { throw new Exception("Index game column in null."); } break; default: _cardsMove.Add(card); break; } Effect effect = new DropShadowEffect(); foreach (Card movingCard in _cardsMove) { movingCard.Effect = effect; } }
/// <summary> /// Check all last cards in every game column and in additional columns. /// If card suitables set property AllowDrop = true /// </summary> private void CheckOnAllowDrop(Card card) { Card lastCard; Data.Name cardName; Data.Color cardColor; if (card.Place == CardPlace.GameColumn) { cardName = GameColumns.ColGame[(int)GameColumns.GetGameColIndex(card)].GetCardMovingNameInColumn(card); cardColor = GameColumns.ColGame[(int)GameColumns.GetGameColIndex(card)].GetCardColorInColumn(card); } else { cardName = card.Data.CardName; cardColor = card.Data.CardColor; } //game columns for (int index = 0; index < GameColumns.ColGame.Length; index++) { //set allowDrop = false for every card in column GameColumns.ColGame[index].SetAllowDrop(); //set allowDrop = false for image in this column GameImages.GameColImages[index].AllowDrop = false; //get last card lastCard = GameColumns.ColGame[index].GetLastCard(); if (lastCard != null) { Data.Name lastCardName = GameColumns.ColGame[index].GetCardReceivingNameInColumn(lastCard); Data.Color lastCardColor = GameColumns.ColGame[index].GetCardColorInColumn(lastCard); if (lastCardName != Data.Name.Joker) { if (cardName == Data.Name.Joker || (cardName == lastCardName - 1 && cardColor != lastCardColor)) { lastCard.AllowDrop = true; } } } else { if (cardName == Data.Name.Joker || cardName == Data.Name.King) { GameImages.GameColImages[index].AllowDrop = true; } } } lastCard = null; //if move 1 card if (card.Place != CardPlace.GameColumn || GameColumns.ColGame[(int)GameColumns.GetGameColIndex(card)].GetLastCard().Equals(card)) { //result columns for (int index = 0; index < GameColumns.ColResult.Length; index++) { //set allowDrop = false for every card in column GameColumns.ColResult[index].SetAllowDrop(); //set allowDrop = false for image in this column GameImages.ResultColImages[index].AllowDrop = false; //get last card lastCard = GameColumns.ColResult[index].GetLastCard(); if (lastCard != null) { if (card.Data.CardLear == lastCard.Data.CardLear && card.Data.CardName == lastCard.Data.CardName + 1) { lastCard.AllowDrop = true; } } else { if (card.Data.CardName == Data.Name.Ace) { GameImages.ResultColImages[index].AllowDrop = true; } } } lastCard = null; //additional columns for (int index = 0; index < GameColumns.ColAdditional.Length; index++) { //set allowDrop = false for every card in column GameColumns.ColAdditional[index].SetAllowDrop(); //set allowDrop = false for image in this column GameImages.AdditionalColImages[index].AllowDrop = false; //get last card lastCard = GameColumns.ColAdditional[index].GetLastCard(); if (lastCard != null) { if (card.Data.CardName == GameColumns.ColAdditional[index].CardName) { lastCard.AllowDrop = true; } } else { if (card.Data.CardName == GameColumns.ColAdditional[index].CardName) { GameImages.AdditionalColImages[index].AllowDrop = true; } } } } }