/// <summary>
        /// Activate Battle cards
        /// </summary>
        private void ActivateBattleCards()
        {
            var activePlayer = BattleArena.GetActivePlayer();

            // Set active all not dead areana cards
            foreach (var cardView in _cardUnitViews)
            {
                if (cardView.Card.Status == BattleStatus.Active)
                {
                    continue;
                }
                cardView.Card.Status = BattleStatus.Active;
                AddHistoryLogSignal.Dispatch(new[]
                {
                    "PLAYER '", activePlayer.Name, "' Activate '",
                    cardView.Card.SourceCard.name, "' battle card!"
                }, LogType.Battle);
                cardView.Init(cardView.Card);
            }

            // remove all dead carts
            _cardUnitViews = _cardUnitViews.FindAll(
                view => view.Card.Status == BattleStatus.Active
                );
            _cardUnitViews.ForEach(view => view.HasActive = true);
        }
Esempio n. 2
0
        /// <summary>
        /// Add card to hand
        /// </summary>
        private void OnAddCardToHand()
        {
            if (BattleArena.HandCount < Arena.HandLimitCount)
            {
                var card = BattleArena.GetActivePlayer().CardBattlePull[0];
                if (card != null)
                {
                    // add card to battle hand
                    View.AddCardToDeck(card, BattleArena.ActiveSide);

                    AddHistoryLogSignal.Dispatch(new[]
                    {
                        "PLAYER '", BattleArena.GetActivePlayer().Name, "' Add '", card.SourceCard.name,
                        "' Card to Deck Hand"
                    }, LogType.Hand);
                }
            }
            else
            {
                AddHistoryLogSignal.Dispatch(new[]
                {
                    "PLAYER '", BattleArena.GetActivePlayer().Name, "' has add Card to Hand ERROR! "
                }, LogType.Error);
            }

            // Remove card from pull
            BattleArena.GetActivePlayer().CardBattlePull.RemoveAt(0);
        }
        public override void Execute()
        {
            var trate        = TrateView.Trate;
            var card         = BattleUnitView.Card;
            var activePlayer = BattleArena.GetActivePlayer();

            if (activePlayer.ManaPull <= 0 ||
                activePlayer.ManaPull < trate.Mana)
            {
                AddHistoryLogSignal.Dispatch(new[]
                {
                    "Player '", activePlayer.Name, "' Has ERROR! 'Add trate' '",
                    trate.SourceTrate.name,
                    "' to battle card '", card.SourceCard.name, "' 'not enough mana!'"
                }, LogType.Hand);
                BattleArena.ApplyTrate = null;
                InitAttackLineSignal.Dispatch(false);
                return;
            }

            if (BattleUnitView.TrateViews.Count >= BattleCard.MaxTratesCount)
            {
                AddHistoryLogSignal.Dispatch(new[]
                {
                    "PLAYER '", activePlayer.Name, "' has ERROR! Add Trate '",
                    trate.SourceTrate.name, "' to cart 'not enough space'"
                }, LogType.Hand);
                BattleArena.ApplyTrate = null;
                InitAttackLineSignal.Dispatch(false);
                return;
            }

            if (activePlayer.LessManaPull(trate.Mana))
            {
                BattleUnitView.AddTrate(TrateView);
                // add history battle log
                AddHistoryLogSignal.Dispatch(new[]
                {
                    "Player '", activePlayer.Name, "' Add trate '", trate.SourceTrate.name,
                    "' to battle card '", card.SourceCard.name, "'"
                }, LogType.Hand);
            }
            else
            {
                AddHistoryLogSignal.Dispatch(new[]
                {
                    "Player '", activePlayer.Name, "' Has ERROR! 'Add trate' '",
                    trate.SourceTrate.name,
                    "' to battle card '", card.SourceCard.name, "' 'not enough mana!'"
                }, LogType.Hand);
                BattleArena.ApplyTrate = null;
                InitAttackLineSignal.Dispatch(false);
                return;
            }

            BattleArena.ApplyTrate = null;
            InitAttackLineSignal.Dispatch(false);
            // Init mana view
            InitManaSignal.Dispatch();
        }
        /// <summary>
        ///  Add card to battle arena
        /// </summary>
        /// <param name="view"></param>
        private void AddCardToBattleArena(CardView view)
        {
            var activePlayer = BattleArena.GetActivePlayer();

            if (activePlayer.ManaPull == 0)
            {
                AddHistoryLogSignal.Dispatch(new[]
                {
                    "Player '", activePlayer.Name, "' Has ERROR! add card '",
                    view.Card.SourceCard.name, "' to battle 'not enough mana!'"
                }, LogType.Hand);
                return;
            }

            var battleCard = view.Card;

            if (_cardUnitViews.Count >= Arena.ArenaCartCount ||
                battleCard.Status != BattleStatus.Wait)
            {
                AddHistoryLogSignal.Dispatch(new[]
                {
                    "PLAYER '", activePlayer.Name, "' has ERROR! Add Cart '",
                    battleCard.SourceCard.name, "' to Arena 'not enough space'"
                }, LogType.Hand);
                return;
            }

            if (!activePlayer.LessManaPull(battleCard.Mana))
            {
                AddHistoryLogSignal.Dispatch(new[]
                {
                    "Player '", activePlayer.Name, "' Has ERROR! add card '", battleCard.SourceCard.name,
                    "' to battle 'not enough mana!'"
                }, LogType.Hand);
                return;
            }

            // add history battle log
            AddHistoryLogSignal.Dispatch(new[]
            {
                "Player '", activePlayer.Name, "' Add card '", battleCard.SourceCard.name, "' to battle!"
            }, LogType.Hand);
            // Create card unit on battle arena
            var unitView = View.CreateCardUnit(battleCard);

            _cardUnitViews.Add(unitView);
            // remove card from hand
            view.DestroyView();
            // Init mana view
            InitManaSignal.Dispatch();
        }
        /// <summary>
        /// Execute event init hand
        /// </summary>
        public override void Execute()
        {
            // Add card or trates to hand
            if (BattleArena.GetActivePlayer().CardBattlePull.Count > 0)
            {
                // First always card
                AddCardToHandDeckSignal.Dispatch();

                // Next 50/50 call call card or trate
                for (var i = 1; i < BattleArena.CountOfCardsAddingToHand; i++)
                {
                    if (Random.value > 0.5f)
                    {
                        if (BattleArena.GetActivePlayer().CardBattlePull.Count <= 0)
                        {
                            continue;
                        }
                        AddCardToHandDeckSignal.Dispatch();
                    }
                    else
                    {
                        if (BattleArena.GetActivePlayer().TrateBattlePull.Count <= 0)
                        {
                            continue;
                        }
                        AddTrateToHandDeckSignal.Dispatch();
                    }
                }
            }
            else
            {
                for (var i = 0; i < BattleArena.CountOfCardsAddingToHand; i++)
                {
                    if (BattleArena.GetActivePlayer().TrateBattlePull.Count <= 0)
                    {
                        continue;
                    }
                    AddTrateToHandDeckSignal.Dispatch();
                }
            }

            InitCardHandSignal.Dispatch();
        }
Esempio n. 6
0
        /// <summary>
        /// Execute event init arena
        /// </summary>
        public override void Execute()
        {
            // Init Active player
            StateService.InitActivePlayer(BattleArena.ActiveSide == BattleSide.Player
                ? Arena.Player
                : Arena.Opponent);

            // init active turn
            // Increase turn count
            StateService.IncreaseTurnCount();

            // init turn history
            BattleArena.InitHistory();

            // On 2 Turn add more carts
            BattleArena.CountOfCardsAddingToHand = Arena.CartToAddCount;
            if (StateService.TurnCount == 2)
            {
                BattleArena.CountOfCardsAddingToHand++;
            }

            // Init card desk
            InitCardDeckSignal.Dispatch();

            // Init trate deck signal
            InitTrateDeckSignal.Dispatch();

            // Init mana pull
            BattleArena.GetActivePlayer().InitManaPull();

            // Init mana view
            InitManaSignal.Dispatch();

            // Init hand panel
            InitHandPullSignal.Dispatch();

            //Init battle arena
            InitBattleArenaSignal.Dispatch();

            // show new turn popup
            ShowTurnPopupSignal.Dispatch();
        }
Esempio n. 7
0
        public override void Execute()
        {
            var activePlayer = BattleArena.GetActivePlayer();
            var sourceCard   = DamageStruct.SourceCardView.Card;
            var damageCard   = DamageStruct.DamageCardView.Card;

            if (sourceCard.TakeDamage(damageCard))
            {
                AddHistoryLogSignal.Dispatch(new[]
                {
                    "Player '", activePlayer.Name, "' Use Card '", damageCard.SourceCard.name,
                    "' hit CRITICAL on '", sourceCard.CriticalDamage.ToString(), "' to enemy Card '",
                    sourceCard.SourceCard.name, "' "
                }, LogType.Battle);
            }
            else
            {
                AddHistoryLogSignal.Dispatch(new[]
                {
                    "Player '", activePlayer.Name, "' Use Card '", damageCard.SourceCard.name,
                    "' hit enemy Card '", sourceCard.SourceCard.name, "' take damage '", damageCard.Attack.ToString(),
                    "'"
                }, LogType.Battle);
            }

            // Enemy cart return attack
            damageCard.TakeDamage(sourceCard, false);
            AddHistoryLogSignal.Dispatch(new[]
            {
                "Enemy Card '", sourceCard.SourceCard.name,
                "' return  damage '", sourceCard.Attack.ToString(), "' to '", damageCard.SourceCard.name, "'"
            }, LogType.Battle);


            if (damageCard.Status == BattleStatus.Dead)
            {
                AddHistoryLogSignal.Dispatch(new[] { "Player Card '", damageCard.SourceCard.name, "' has dead!" },
                                             LogType.Battle);
                DamageStruct.DamageCardView.DestroyView();
            }
            else
            {
                damageCard.Status = BattleStatus.Sleep;
                AddHistoryLogSignal.Dispatch(new[]
                {
                    "Player card '", damageCard.SourceCard.name, "' has '", damageCard.Health.ToString(),
                    "' Health and '", damageCard.Defence.ToString(), "' Defence"
                }, LogType.Battle);
                DamageStruct.DamageCardView.Init(damageCard);
            }

            if (sourceCard.Status == BattleStatus.Dead)
            {
                AddHistoryLogSignal.Dispatch(new[] { "Enemy Card '", sourceCard.SourceCard.name, "' has dead!" },
                                             LogType.Battle);
                DamageStruct.SourceCardView.DestroyView();
            }
            else
            {
                AddHistoryLogSignal.Dispatch(new[]
                {
                    "Enemy card '", sourceCard.SourceCard.name, "' has '", sourceCard.Health.ToString(),
                    "' Health and '", sourceCard.Defence.ToString(), "' Defence"
                }, LogType.Battle);
                DamageStruct.SourceCardView.Init(sourceCard);
            }

            DamageStruct.DamageCardView.HasAttack = false;
            BattleArena.AttackUnit.HasActive      = false;
            BattleArena.AttackUnit = null;
            InitAttackLineSignal.Dispatch(false);
            RefreshArenaSignal.Dispatch();
        }
        /// <summary>
        /// Execute init mana
        /// </summary>
        public override void Execute()
        {
            var activePlayer = BattleArena.GetActivePlayer();

            ShowManaSignal.Dispatch(activePlayer.ManaPull);
        }