Ejemplo n.º 1
0
        public override bool update(TableManager table, THHCard.DamageEventArg eventArg)
        {
            if (_animList == null)
            {
                _animList = new List <AnimAnim>();
                foreach (var card in eventArg.infoDic.Keys)
                {
                    if (table.tryGetServant(card, out var servant))
                    {
                        servant.DamageText.text = "-" + eventArg.value;
                        servant.HpTextPropNumber.asText.text = eventArg.infoDic[card].currentLife.ToString();
                        servant.onDamage.invokeBeforeAnim();
                        _animList.Add(new AnimAnim(servant.animator, servant.onDamage.animName));
                    }
                    else if (table.tryGetMaster(card, out Master master))
                    {
                        master.DamageText.text            = "-" + eventArg.value;
                        master.LifePropNumber.asText.text = eventArg.infoDic[card].currentLife.ToString();
                        master.onDamage.invokeBeforeAnim();
                        _animList.Add(new AnimAnim(master.animator, master.onDamage.animName));
                    }
                    else if (table.tryGetItem(card, out var item))
                    {
                        item.DurabilityPropNumber.asText.text = eventArg.infoDic[card].currentLife.ToString();
                        item.onLifeDown.invokeBeforeAnim();
                        _animList.Add(new AnimAnim(item.animator, item.onLifeDown.animName));
                    }
                }
            }
            bool isAllAnimDone = true;

            foreach (var anim in _animList)
            {
                if (!anim.update(table))
                {
                    isAllAnimDone = false;
                }
            }
            if (!isAllAnimDone)
            {
                return(false);
            }
            foreach (var card in eventArg.infoDic.Keys)
            {
                if (table.tryGetServant(card, out var servant))
                {
                    servant.onDamage.afterAnim.Invoke();
                }
                else if (table.tryGetMaster(card, out Master master))
                {
                    master.onDamage.afterAnim.Invoke();
                }
                else if (table.tryGetItem(card, out var item))
                {
                    item.onLifeDown.afterAnim.Invoke();
                }
            }
            return(true);
        }
Ejemplo n.º 2
0
        /// <summary>
        /// 每一帧调用
        /// </summary>
        /// <param name="table">游戏桌面UI管理器</param>
        /// <param name="eventArg">死亡事件</param>
        /// <returns></returns>
        public override bool update(TableManager table, THHCard.DeathEventArg eventArg)
        {
            if (_animList == null)
            {
                _animList = new List <AnimAnim>();
                foreach (var card in eventArg.infoDic.Keys)         //列举所有死亡的信息
                {
                    if (table.tryGetServant(card, out var servant)) //尝试获取死亡的随从的随从UI
                    {
                        servant.onDeath.beforeAnim.Invoke();
                        _animList.Add(new AnimAnim(servant.animator, servant.onDeath.animName));
                        //table.ui.SelfFieldList.removeItem(servant);//从自己的场上移除随从UI
                        //table.ui.EnemyFieldList.removeItem(servant);//从敌人的场上移除随从UI
                    }
                    else if (table.tryGetServant(card, out var master))
                    {
                        master.onDeath.beforeAnim.Invoke();
                        _animList.Add(new AnimAnim(master.animator, master.onDeath.animName));
                    }
                    else if (table.tryGetItem(card, out var item))
                    {
                        item.onDestroy.beforeAnim.Invoke();
                        _animList.Add(new AnimAnim(item.animator, item.onDestroy.animName));
                    }
                }
            }
            bool isAllAnimDone = true;

            foreach (var anim in _animList)
            {
                if (!anim.update(table))
                {
                    isAllAnimDone = false;
                }
            }
            if (!isAllAnimDone)
            {
                return(false);
            }
            foreach (var card in eventArg.infoDic.Keys)         //列举所有死亡的信息
            {
                if (table.tryGetServant(card, out var servant)) //尝试获取死亡的随从的随从UI
                {
                    servant.onDeath.afterAnim.Invoke();
                    table.ui.SelfFieldList.removeItem(servant);  //从自己的场上移除随从UI
                    table.ui.EnemyFieldList.removeItem(servant); //从敌人的场上移除随从UI
                }
                else if (table.tryGetMaster(card, out var master))
                {
                    master.onDeath.afterAnim.Invoke();
                }
                else if (table.tryGetItem(card, out var item))
                {
                    item.onDestroy.afterAnim.Invoke();
                }
            }
            return(true);
        }