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