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();
        }
Beispiel #3
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();
        }