Beispiel #1
0
        public void Execute(UseSkill cmd)
        {
            CurrenctRivalHealth = Mathf.Max(CurrenctRivalHealth - cmd.PhysicalDamage, 0);
            var ko = CurrenctRivalHealth <= 0;

            var res = new UseSkillOk
            {
                Ko             = ko,
                SkillCode      = cmd.SkillCode,
                PhysicalDamage = cmd.PhysicalDamage,
                SyncData       = new SyncData
                {
                    MyHealth    = GameData.MyHealth,
                    RivalHealth = CurrenctRivalHealth,
                    RivalEnergy = GameData.RivalEnergy,
                }
            };

            Responder.Instance.Execute(res);

            if (ko)
            {
                if (_defenseData == null)//掉线托管或纯单机
                {
                    Responder.Instance.Execute(new EndRound
                    {
                        MyInfo    = CommonData.MyUser,
                        RivalInfo = CommonData.RivalUser,
                        Win       = true
                    });
                }
                else//异步挑战
                {
                    GameManager.Instance.EndChallengeRound(true);
                }
            }
        }
Beispiel #2
0
        /// <summary>
        /// 我施放技能时,根据当前状态和信息,生成UseSkill消息,供后面的PreShow和发送命令使用。UseSkill包含效果和逻辑的所有信息。
        /// </summary>
        /// <param name="skillCode"></param>
        /// <returns></returns>
        public static UseSkill GetUseSkillCmd(SkillEnum skillCode)
        {
            var skill = skillCode.GetSkill();

            if (skill == null)
            {
                Debug.LogError("找不到Skill:Code==" + skillCode);
            }

            var level = GetMySkillLevel(skillCode);

            if (level == 0)
            {
                Debug.LogError("我的技能还未解锁skillCode:" + skillCode);
            }

            var physicalDamage = skill == null ? 0 : skill.PhysicalDamageList[level - 1];

            switch (skillCode)
            {
            case SkillEnum.ExtraDamage:
            {
                var config = DesignConfigHelper.GetSkillParameterItem(skillCode);
                if (config == null || config.ConstantList.Count < 2)
                {
                    break;
                }
                var extraDamage = Mathf.FloorToInt(level * config.ConstantList[1] + config.ConstantList[0]);
                physicalDamage += extraDamage;
            }
            break;
            }

            var cmd = new UseSkill((int)skillCode, physicalDamage);

            return(cmd);
        }