Пример #1
0
        // TODO: Переписать!
        public CardPack Gap(Point p)
        {
            if (pack.Count == 0)
            {
                return(null);
            }
            CardPack gapPack;

            if (pack.displayMode == CardPack.DisplayMode.Full)
            {
                int a = (int)Math.Floor((double)(p.Y - point.Y) / CARD_IMPOSE_HEIGHT);
                a = a < pack.Count ? pack.Count - a : 1;
                if (!pack.CanGive(a))
                {
                    return(null);
                }
                gapPack = pack.LastCards(a);
                pack.RemoveLastCards(a);
                return(gapPack);
            }

            if (!pack.CanGive(1))
            {
                return(null);
            }
            gapPack = pack.LastCards(1);
            pack.RemoveLastCards(1);
            return(gapPack);
        }
Пример #2
0
 /// <summary>
 /// Совершает перемещение карт с одной колоды на другую.
 /// Желательно проводить все операции с колодами через этот метод.
 /// </summary>
 /// <returns><c>true</c>, перемещение возможно и совершено, <c>false</c> в ином случае.</returns>
 /// <param name="from">С какой колоды.</param>
 /// <param name="to">На какую.</param>
 /// <param name="count">Количество карт.</param>
 public bool ConfirmMove(CardPack from, CardPack to, int count)
 {
     if (!disabledMoves.Contains(Tuple.Create(from, to)) &&
         from.CanGive(count) &&
         to.CanAccept(from.LastCards(count)))
     {
         to.AddCards(from.LastCards(count));
         from.RemoveLastCards(count);
         OnMoveConfirmed(from, to, count);
         movesHistory.Add(Tuple.Create(from, to, count));
         return(true);
     }
     return(false);
 }