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