コード例 #1
0
    public override void OnTagChanged(TagDelta change)
    {
        switch (((GAME_TAG)change.tag))
        {
        case GAME_TAG.STEP:
            if (change.newValue == 4)
            {
                MulliganManager.Get().BeginMulligan();
            }
            break;

        case GAME_TAG.NEXT_STEP:
            if (change.newValue == 6)
            {
                if (GameState.Get().IsMulliganManagerActive())
                {
                    GameState.Get().SetMulliganPowerBlocker(true);
                }
            }
            else if (((change.oldValue == 9) && (change.newValue == 10)) && GameState.Get().IsFriendlySidePlayerTurn())
            {
                TurnStartManager.Get().BeginPlayingTurnEvents();
            }
            break;
        }
        base.OnTagChanged(change);
    }
コード例 #2
0
 public override void OnTagsChanged(TagDeltaSet changeSet)
 {
     for (int i = 0; i < changeSet.Size(); i++)
     {
         TagDelta change = changeSet[i];
         this.OnTagChanged(change);
     }
 }
コード例 #3
0
    public void Add <TagEnum>(GAME_TAG tag, TagEnum prev, TagEnum curr)
    {
        TagDelta item = new TagDelta {
            tag      = (int)tag,
            oldValue = Convert.ToInt32(prev),
            newValue = Convert.ToInt32(curr)
        };

        this.m_deltas.Add(item);
    }
コード例 #4
0
    public void Add(int tag, int prev, int curr)
    {
        TagDelta item = new TagDelta {
            tag      = tag,
            oldValue = prev,
            newValue = curr
        };

        this.m_deltas.Add(item);
    }
コード例 #5
0
 protected void ToggleActorSpellOnCard(Card card, TagDelta change, SpellType spellType)
 {
     if ((card != null) && card.CanShowActorVisuals())
     {
         Actor actor = card.GetActor();
         if (change.newValue > 0)
         {
             actor.ActivateSpell(spellType);
         }
         else
         {
             actor.DeactivateSpell(spellType);
         }
     }
 }
コード例 #6
0
    private void OnOpposingPlayerTagChanged(TagDelta change)
    {
        switch (((GAME_TAG)change.tag))
        {
        case GAME_TAG.PLAYSTATE:
            if (change.newValue == 7)
            {
                NotificationManager.Get().CreateInnkeeperQuote(GameStrings.Get("VO_ANNOUNCER_DISCONNECT_45"), "VO_ANNOUNCER_DISCONNECT_45", 0f, null);
            }
            break;

        case GAME_TAG.RESOURCES:
            if (change.newValue > change.oldValue)
            {
                GameState.Get().GetGameEntity().NotifyOfEnemyManaCrystalSpawned();
            }
            break;
        }
    }
コード例 #7
0
    public override void OnTagChanged(TagDelta change)
    {
        if (this.IsFriendlySide())
        {
            this.OnFriendlyPlayerTagChanged(change);
        }
        else
        {
            this.OnOpposingPlayerTagChanged(change);
        }
        GAME_TAG tag = (GAME_TAG)change.tag;

        switch (tag)
        {
        case GAME_TAG.LOCK_AND_LOAD:
        {
            Card heroCard = this.GetHeroCard();
            this.ToggleActorSpellOnCard(heroCard, change, SpellType.LOCK_AND_LOAD);
            return;
        }

        case GAME_TAG.SHADOWFORM:
        {
            Card card5 = this.GetHeroCard();
            this.ToggleActorSpellOnCard(card5, change, SpellType.SHADOWFORM);
            return;
        }
        }
        if ((tag != GAME_TAG.RESOURCES_USED) && (tag != GAME_TAG.RESOURCES))
        {
            if (tag == GAME_TAG.PLAYSTATE)
            {
                if (change.newValue == 8)
                {
                    this.PlayConcedeEmote();
                }
                return;
            }
            if (tag == GAME_TAG.COMBO_ACTIVE)
            {
                foreach (Card card in this.GetHandZone().GetCards())
                {
                    card.UpdateActorState();
                }
                return;
            }
            if (tag != GAME_TAG.TEMP_RESOURCES)
            {
                if (tag == GAME_TAG.MULLIGAN_STATE)
                {
                    if ((change.newValue == 4) && (MulliganManager.Get() != null))
                    {
                        MulliganManager.Get().ServerHasDealtReplacementCards(this.IsFriendlySide());
                    }
                    return;
                }
                if (tag == GAME_TAG.STEADY_SHOT_CAN_TARGET)
                {
                    Card heroPowerCard = this.GetHeroPowerCard();
                    this.ToggleActorSpellOnCard(heroPowerCard, change, SpellType.STEADY_SHOT_CAN_TARGET);
                    return;
                }
                if (tag == GAME_TAG.CURRENT_HEROPOWER_DAMAGE_BONUS)
                {
                    if (this.IsHeroPowerAffectedByBonusDamage())
                    {
                        Card card3 = this.GetHeroPowerCard();
                        this.ToggleActorSpellOnCard(card3, change, SpellType.CURRENT_HEROPOWER_DAMAGE_BONUS);
                    }
                    return;
                }
                return;
            }
        }
        if (!GameState.Get().IsTurnStartManagerActive() || !this.IsFriendlySide())
        {
            this.UpdateManaCounter();
        }
    }
コード例 #8
0
    private void OnFriendlyPlayerTagChanged(TagDelta change)
    {
        GAME_TAG tag = (GAME_TAG)change.tag;

        switch (tag)
        {
        case GAME_TAG.CURRENT_SPELLPOWER:
            break;

        case GAME_TAG.TEMP_RESOURCES:
        {
            int num  = change.oldValue - this.m_usedTempMana;
            int num2 = change.newValue - change.oldValue;
            if (num2 < 0)
            {
                this.m_usedTempMana += num2;
            }
            if (this.m_usedTempMana < 0)
            {
                this.m_usedTempMana = 0;
            }
            if (num < 0)
            {
                num = 0;
            }
            int numCrystals = (change.newValue - num) - this.m_usedTempMana;
            if (numCrystals > 0)
            {
                this.AddTempManaCrystal(numCrystals);
            }
            else
            {
                this.DestroyTempManaCrystal(-numCrystals);
            }
            return;
        }

        case GAME_TAG.OVERLOAD_OWED:
            this.HandleSameTurnOverloadChanged(change.newValue - change.oldValue);
            return;

        case GAME_TAG.CURRENT_PLAYER:
            if (change.newValue == 1)
            {
                ManaCrystalMgr.Get().OnCurrentPlayerChanged();
                this.m_queuedSpentMana = 0;
                if (GameState.Get().IsMainPhase())
                {
                    TurnStartManager.Get().BeginListeningForTurnEvents();
                }
            }
            return;

        case GAME_TAG.RESOURCES_USED:
        {
            int num4 = change.oldValue + this.m_queuedSpentMana;
            int num5 = change.newValue - change.oldValue;
            if (num5 > 0)
            {
                this.m_queuedSpentMana -= num5;
            }
            if (this.m_queuedSpentMana < 0)
            {
                this.m_queuedSpentMana = 0;
            }
            int shownChangeAmount = (change.newValue - num4) + this.m_queuedSpentMana;
            ManaCrystalMgr.Get().UpdateSpentMana(shownChangeAmount);
            return;
        }

        case GAME_TAG.RESOURCES:
            if (change.newValue <= change.oldValue)
            {
                this.DestroyManaCrystal(change.oldValue - change.newValue);
                return;
            }
            if (!GameState.Get().IsTurnStartManagerActive() || !this.IsFriendlySide())
            {
                this.AddManaCrystal(change.newValue - change.oldValue);
                return;
            }
            TurnStartManager.Get().NotifyOfManaCrystalGained(change.newValue - change.oldValue);
            return;

        default:
            switch (tag)
            {
            case GAME_TAG.SPELLPOWER_DOUBLE:
            case GAME_TAG.HEALING_DOUBLE:
                break;

            case GAME_TAG.MULLIGAN_STATE:
                if ((change.newValue == 4) && (MulliganManager.Get() == null))
                {
                    foreach (Card card in this.GetHandZone().GetCards())
                    {
                        card.GetActor().TurnOnCollider();
                    }
                }
                return;

            default:
                if ((tag == GAME_TAG.OVERLOAD_LOCKED) && (change.newValue < change.oldValue))
                {
                    this.UnlockCrystals(change.oldValue - change.newValue);
                }
                return;
            }
            break;
        }
        List <Card> cards = this.GetHandZone().GetCards();

        for (int i = 0; i < cards.Count; i++)
        {
            if (cards[i].GetEntity().IsSpell())
            {
                cards[i].GetActor().UpdatePowersText();
            }
        }
    }