// 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); }
/// <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); }