コード例 #1
0
    private IEnumerator DefendAI()
    {
        DefendListener dl = GameManager.Instance.GetComponent <DefendListener>();

        dl.SelectDamageType("damage");
        yield return(new WaitForSeconds(1f));

        GameManager.Instance.ActiveHero(false).AssignDamageAbsorbed(true);
        yield return(new WaitForSeconds(1f));

        dl.SubmitDefenseButtonFunc();
        yield return(new WaitForSeconds(1f));

        ShowUI();
    }
コード例 #2
0
    private void OnEvent(EventData photonEvent)
    {
        byte eventCode = photonEvent.Code;

        if (eventCode == START_COMBAT)
        {
            object[]          data    = (object[])photonEvent.CustomData;
            int[]             damages = (int[])data[0];
            List <CardPhoton> cards   = (List <CardPhoton>)DataHandler.Instance.ByteArrayToObject((byte[])data[1]);
            bool heroAttacking        = (bool)data[2];

            if (heroAttacking)
            {
                GameManager.Instance.ActiveHero(true).AdjustMana(GameManager.Instance.ActiveHero(true).Damage, false);
            }

            TapMinions(cards);

            GameManager.Instance.StartCombatDamageUI.gameObject.SetActive(true);
            GameManager.Instance.alliedStealthDamageCounter.text     = damages[0].ToString();
            GameManager.Instance.alliedLifestealDamageCounter.text   = damages[1].ToString();
            GameManager.Instance.alliedPoisonTouchDamageCounter.text = damages[2].ToString();
            GameManager.Instance.alliedDamageCounter.text            = damages[3].ToString();

            StartCombat sc = GameManager.Instance.ActiveHero(true).AttackButton.parent.GetComponent <StartCombat>();
            sc.totalDamage = new Dictionary <string, int>
            {
                { "stealth", damages[0] },
                { "lifesteal", damages[1] },
                { "poisonTouch", damages[2] },
                { "damage", damages[3] }
            };

            EventManager.Instance.PostNotification(EVENT_TYPE.DEFEND_AGAINST);
            GameManager.Instance.shopButton.interactable = false;
        }
        else if (eventCode == ASSIGN_DEFENDING_DAMAGE)
        {
            object[]                 data           = (object[])photonEvent.CustomData;
            List <DamagePhoton>      damageToAssign = (List <DamagePhoton>)DataHandler.Instance.ByteArrayToObject((byte[])data[0]);
            Dictionary <string, int> heroDamage     = (Dictionary <string, int>)DataHandler.Instance.ByteArrayToObject((byte[])data[1]);
            bool minionDefeated  = (bool)data[2];
            int  totalHeroDamage = 0;
            foreach (KeyValuePair <string, int> entry in heroDamage)
            {
                totalHeroDamage += entry.Value;
            }
            AssignDamageToDefenders(damageToAssign, heroDamage);
            if (totalHeroDamage > 0)
            {
                //Add Bleed to the queue
                EffectCommand.Instance.EffectQueue.Enqueue(EVENT_TYPE.BLEED);
            }
            if (minionDefeated)
            {
                //Add Minion Defeated to the queue
                EffectCommand.Instance.EffectQueue.Enqueue(EVENT_TYPE.MINION_DEFEATED);
            }

            GameManager.Instance.IsDefending = false;

            AssignDamageToAttackers();

            DefendListener dl = GameManager.Instance.GetComponent <DefendListener>();
            dl.ChangeUiForDefense(GameManager.Instance.IsDefending);
            GameManager.Instance.EnableOrDisablePlayerControl(true);
            GameManager.Instance.endButton.interactable = true;
            dl.ResetDamageUI();

            StartCombat sc = GameManager.Instance.ActiveHero(true).AttackButton.parent.GetComponent <StartCombat>();
            sc.totalDamage = new Dictionary <string, int>
            {
                { "stealth", 0 },
                { "lifesteal", 0 },
                { "poisonTouch", 0 },
                { "damage", 0 }
            };

            GameManager.Instance.instructionsObj.GetComponent <TMP_Text>().text = "";
        }
        else if (eventCode == ASSIGN_AFTER_EFFECT_SYNC_EVENT)
        {
            object[] data    = (object[])photonEvent.CustomData;
            int[]    minions = (int[])data[0];

            int i = 0;
            foreach (Transform card in GameManager.Instance.GetActiveMinionZone(true))
            {
                CardVisual cv = card.GetComponent <CardVisual>();
                if (cv.Md.MinionID == minions[i])
                {
                    cv.AdjustHealth(1, false);
                }

                i++;
            }
        }
    }