public void Add(Card card) { if (card == null) { return; } GameObject cardGameObject = card.Create(); CardStackEntry.Attach(cardGameObject, card, this); Vector3 destination = transform.position + new Vector3(Random.Range(0, 0.2f), Random.Range(-0.2f, 0.1f), 0) + new Vector3((cardGameObjects.Count - 1) * 0.5f, 0); cardGameObject.transform.localScale = new Vector3(0.5f, 0.5f, 1); cardGameObject.transform.Rotate(0, 0, Random.Range(destination.x <= 0 ? 0 : -2.5f, 2.5f)); cardGameObject.transform.position = transform.position + new Vector3(7.5f, 5, -transform.position.z); cardGameObject.transform.SetParent(transform, true); int oldValue = Value.NumberValue; cardGameObject.GetComponent <SpriteRenderer>().sortingOrder = cardGameObjects.Count + 1; cardGameObjects.Add(cardGameObject); cards.Add(card); cardMovementLerpInformations.Add(cardGameObjects.Count - 1, new LerpInformation <Vector3>(cardGameObject.transform.position, destination, 0.5f, Vector3.Lerp)); CardAdded?.Invoke(this, new CardAddedEventArgs(this, card)); ValueChanged?.Invoke(this, new ValueChangedEventArgs(oldValue, Value.NumberValue)); }
public static void Attach(GameObject cardGameObject, Card card, CardStackController cardStack) { if (cardGameObject == null || cardStack == null) { return; } CardStackEntry cardStackEntry = cardGameObject.AddComponent <CardStackEntry>(); cardStackEntry.CardStack = cardStack; cardStackEntry.Card = card; }