/// <summary> /// This handles end dragging. /// </summary> void OnMouseUp() { dragDisabled = false; if (isDragging) { isDragging = false; GetComponent <Collider2D>().enabled = true; var mousePosition = Camera.main.ScreenToWorldPoint(Input.mousePosition); var deck = (from d in FindObjectsOfType <Deck>() where d != Deck orderby d.TopCard == null ? // snap to deck if empty otherwise snap to top card position Vector2.SqrMagnitude(new Vector2(mousePosition.x - d.transform.position.x, mousePosition.y - d.transform.position.y)) : Vector2.SqrMagnitude(new Vector2(mousePosition.x - d.TopCard.transform.position.x, mousePosition.y - d.TopCard.transform.position.y)) select d).FirstOrDefault(); //if (deck != null) // print("Closest deck " + deck.Type); //if (deck != null && deck.TopCard != null) // print("Closest deck " + deck.TopCard.ToString()); if (deck != null && FreeCellBehavior.Instance.CardDrag(this, deck)) { return; } Deck.UpdateCards(); } }
/// <summary> /// Move this card to a specified position in a specified deck. /// </summary> public void SetDeck(int newPosition, Deck deck = null) { Deck.Cards.Remove(this); if (deck != null) { Deck.UpdateCards(); this.deck = deck; } Deck.Cards.Insert(newPosition, this); Deck.UpdateCards(); }