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