public void Drop(Vector2 vector) { if (StartPointMouse.HasValue) { var AvilibleSocket = listSocket.Where(X => AceptanceSocket(X)); CardSocketUI cardSocketUI = AvilibleSocket.GetMin(X => X != null? X.LenghtToObject(this):0); if (cardSocketUI != null) { BindCardToSocket(cardSocketUI, this); } StartPointMouse = null; } }
public static void BindCardToSocket(CardSocketUI socketUI, CardUI card, bool InvokeChenge = true) { if (card.socketUI != null) { card.socketUI.InnerCard = null; } if (socketUI.InnerCard != null && !socketUI.IsStack) { throw new InvalidOperationException(); } card.socketUI = socketUI; socketUI.InnerCard = card; if (InvokeChenge) { socketUI.TookCard(card); } }
public void AddCardSlot(CardSocketUI card, KindSlot kind) { Add(card); ListSocket.Add(card); switch (kind) { case KindSlot.Table: ListSocketTable.Add(card); break; case KindSlot.UserCard: ListSocketUser.Add(card); break; default: break; } }
private bool AceptanceSocket(CardSocketUI X) { return(!X.BlockedSetCard && (X.InnerCard == null) &&//carta może być odłożona i soket nie jest pusty (LenghtToObject(X) < MaxDystans) && //nie przekracza maksymalnego dystansu X.AceptanceSet != null && X.AceptanceSet(this)); //soket może przyjąć tą krte }