Ejemplo n.º 1
0
        private void AddCard(UnityCard card)
        {
            if (card == null)
            {
                return;
            }

            CardZone cardZone  = CardZones.Last();
            var      cardModel = Instantiate(cardModelPrefab, cardZone.transform).GetOrAddComponent <CardModel>();

            cardModel.Value = card;

            OnAddCardModel(cardZone, cardModel);
        }
Ejemplo n.º 2
0
        private void AddCardZone()
        {
            var cardZone = Instantiate(cardZonePrefab, layoutContent).GetOrAddComponent <CardZone>();

            cardZone.type = CardZoneType.Vertical;
            cardZone.scrollRectContainer    = scrollRect;
            cardZone.DoesImmediatelyRelease = true;
            cardZone.OnLayout = Consolidate;
            cardZone.OnAddCardActions.Add(OnAddCardModel);
            cardZone.OnRemoveCardActions.Add(OnRemoveCardModel);
            CardZones.Add(cardZone);
            cardZone.GetComponent <VerticalLayoutGroup>().spacing =
                CardZonePrefabSpacing *
                (CardGameManager.PixelsPerInch * CardGameManager.Current.CardSize.Y / CardPrefabHeight);
        }
Ejemplo n.º 3
0
        public void FocusScrollRectOn(CardModel cardModel)
        {
            if (cardModel == null || cardModel.ParentCardZone == null)
            {
                return;
            }

            int cardZoneIndex = CardZones.IndexOf(cardModel.ParentCardZone);

            if (cardZoneIndex > 0 && cardZoneIndex < CardZones.Count)
            {
                scrollRect.horizontalNormalizedPosition = CardZones.Count > 1
                    ? cardZoneIndex / (CardZones.Count - 1f)
                    : 0f;
            }
        }
Ejemplo n.º 4
0
        private void Consolidate()
        {
            HashSet <Transform> seen  = new HashSet <Transform>();
            List <Transform>    cards = new List <Transform>();

            foreach (Transform cardZoneTransform in CardZones.Select(cardZone => cardZone.transform))
            {
                for (var i = 0; i < cardZoneTransform.childCount; i++)
                {
                    Transform current = cardZoneTransform.GetChild(i);
                    if (seen.Contains(current))
                    {
                        continue;
                    }
                    cards.Add(current);
                    var cardModel = current.GetComponent <CardModel>();
                    if (cardModel != null && cardModel.PlaceHolder != null)
                    {
                        seen.Add(cardModel.PlaceHolder);
                    }
                    seen.Add(current);
                }
            }

            for (var i = 0; i < cards.Count; i++)
            {
                Transform card = cards[i];
                if (i / CardsPerZone >= CardZones.Count)
                {
                    AddCardZone();
                }
                Transform cardZone = CardZones[i / CardsPerZone].transform;
                if (card.parent != cardZone)
                {
                    card.SetParent(cardZone);
                }
                int cardZoneIndex = i % CardsPerZone;
                if (card.GetSiblingIndex() != cardZoneIndex)
                {
                    card.SetSiblingIndex(cardZoneIndex);
                }
            }

            for (int i = CardZones.Count - 1; i > 0; i--)
            {
                if (CardZones[i].transform.childCount != 0)
                {
                    break;
                }
                GameObject cardZone = CardZones[i].gameObject;
                CardZones.RemoveAt(i);
                Destroy(cardZone);
            }

            if (CardZones.Count * CardsPerZone == cards.Count)
            {
                AddCardZone();
            }

            Resize();
        }