Example #1
0
    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));
    }
Example #2
0
    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;
    }