Пример #1
0
        public void RemoveCard(CardWrapper CardToRemove)
        {
            Cards.Remove(CardToRemove);
            ShrinkCards();

            UpdateHandData();
        }
 public void CreateInvisibleCard(CardWrapper FromCard)
 {
     InvisibleCard = MonoBehaviour.Instantiate(BattlePrefabsConfig.Get().CardWrapperPrefab);
     InvisibleCard.SetParent(GetTransform());
     InvisibleCard.SetState(CardState.Hand, FromCard.GetOriginalSkill());
     InvisibleCard.gameObject.SetActive(false);
 }
Пример #3
0
        public void AddCard(CardWrapper NewCard)
        {
            Cards.Add(NewCard);
            NewCard.SetState(CardState.Hand, NewCard.GetOriginalSkill());
            NewCard.SetParent(GetTransform());
            ShrinkCards();

            UpdateHandData();
        }
        public bool TryInsertVisibleCard(CardWrapper NewCard)
        {
            if (!Cards.Contains(InvisibleCard))
            {
                return(false);
            }

            ReplaceWith(InvisibleCard, NewCard);
            return(true);
        }
        public bool TryInsertInvisibleCard(CardWrapper NewCard)
        {
            if (Cards.Count == 0)
            {
                return(TryAddCard(InvisibleCard));
            }

            float newCardStartPosition = NewCard.WorldBounds.min.x;

            if (newCardStartPosition > Cards.Last().WorldBounds.center.x)
            {
                return(TryAddCard(InvisibleCard));
            }

            float previousCardEndPosition            = WorldBounds.min.x;
            float previousCardHandMinusPreBattleSize = 0;

            int i = 0;

            foreach (CardWrapper card in Cards)
            {
                if (card == InvisibleCard)
                {
                    previousCardEndPosition += previousCardHandMinusPreBattleSize;
                    continue;
                }

                float currentCardSize               = card.WorldBounds.size.x;
                float currentCardHandSize           = card.HandCard.WorldBounds.size.x;
                float currentCardStartPosition      = previousCardEndPosition;
                float currentHandCardEndPosition    = currentCardStartPosition + currentCardHandSize;
                float currentHandCardCenterPosition = currentCardStartPosition + currentCardHandSize / 2.0f;

                if (newCardStartPosition < currentHandCardEndPosition)
                {
                    int index = newCardStartPosition < currentHandCardCenterPosition ? i : i + 1;

                    Cards.Remove(InvisibleCard);
                    if (!TryInsertCard(InvisibleCard, index) && !TryAddCard(InvisibleCard))
                    {
                        UpdateCardsLayout(true);
                        return(false);
                    }

                    return(true);
                }

                previousCardEndPosition           += currentCardSize;
                previousCardHandMinusPreBattleSize = currentCardHandSize - currentCardSize;

                i++;
            }

            return(false);
        }
Пример #6
0
        private void GenerateEnemiesTimeline()
        {
            EnemyTimeline = GenerateTimeline(BattlePrefabsConfig.Get().TimelinePrefab);
            EnemyTimeline.Initialize(BattleSystem.Get().BattleBoard.EnemyTimeline);

            foreach (Skill skill in BattleSystem.Get().GetCurrentEnemySkillSet())
            {
                CardWrapper cardWrapper = MonoBehaviour.Instantiate(BattlePrefabsConfig.Get().CardWrapperPrefab);
                cardWrapper.SetState(CardState.Hand, skill);
                EnemyTimeline.AddCard(cardWrapper, false);
            }

            EnemyTimeline.MaxLength = EnemyTimeline.Length;
            EnemyTimeline.Size      = EnemyTimeline.GetContentSize();
            EnemyTimeline.GetTransform().localScale = new Vector3(1, -1, 1);
        }