コード例 #1
0
ファイル: BattleUnit.cs プロジェクト: yxpandjay/HalfSLG
        //向目标地点使用技能
        public void UseSkill(List <BattleAction> actions, GridUnit target, BattleSkillAnalysis skillAnalysis)
        {
            if (target == null || skillAnalysis == null)
            {
                UtilityHelper.LogError("Use skill error, none target or skill");
                return;
            }

            List <BattleHeroSkillResult> skillResults = new List <BattleHeroSkillResult>();

            for (int i = 0; i < skillAnalysis.suitableUnits.Count; ++i)
            {
                //范围内的都受到伤害
                if (target.Distance(skillAnalysis.suitableUnits[i].mapGrid) <= skillAnalysis.battleSkill.rangeRadius)
                {
                    skillResults.Add(BattleCalculator.Instance.CalcSingle(this, skillAnalysis.suitableUnits[i], skillAnalysis.battleSkill));
                }
            }

            //产生使用技能的动作
            if (actions != null)
            {
                BattleHeroSkillAction action = new BattleHeroSkillAction(this, skillAnalysis.battleSkill.skillID);
                action.skillResult = skillResults.ToArray();
                actions.Add(action);
            }

            //产生伤害
            for (int i = 0; i < skillResults.Count; ++i)
            {
                skillResults[i].battleUnit.AcceptSkillResult(skillResults[i].syncAttribute, actions);
            }
        }
コード例 #2
0
        //使用技能
        private IEnumerator PlaySkillAction(BattleHeroSkillAction action)
        {
            if (action == null)
            {
                UtilityHelper.LogError("Error BattleHeroSkillAction");
                yield break;
            }


            if (action.skillResult == null)
            {
                UtilityHelper.LogError("Error BattleHeroSkillAction: No skill result.");
                yield break;
            }

            AddBattleBeSelected(this, EGameConstL.Color_Cyan);

            for (int i = 0; i < action.skillResult.Length; ++i)
            {
                if (action.skillResult[i].battleUnit != null && action.skillResult[i].battleUnit.battleUnitRenderer != null)
                {
                    AddBattleBeSelected(action.skillResult[i].battleUnit.battleUnitRenderer, EGameConstL.Color_Yellow);
                    yield return(EGameConstL.WaitForHalfSecond);

                    action.skillResult[i].battleUnit.battleUnitRenderer.RefreshAttribute(action.skillResult[i].syncAttribute);
                }
            }

            // yield return EGameConstL.WaitForTouchedScreen;

            ClearAllSelectedBattleUnit();
        }
コード例 #3
0
        //使用技能
        private void UseSkill(List <BattleAction> actions)
        {
            int skillID = 0;

            BattleHeroSkillResult skillResult = BattleCalculator.Instance.CalcSingle(this, targetBattleUnit, skillID);

            if (actions != null)
            {
                BattleHeroSkillAction action = new BattleHeroSkillAction(this, skillID);
                action.skillResult = new BattleHeroSkillResult[1] {
                    skillResult
                };
                actions.Add(action);
            }

            if (skillResult != null)
            {
                skillResult.battleUnit.AcceptSkillResult(skillResult.syncAttribute, actions);
            }
        }
コード例 #4
0
        //使用技能
        private IEnumerator PlaySkillAction(BattleHeroSkillAction action)
        {
            if (action == null)
            {
                UtilityHelper.LogError("Error BattleHeroSkillAction");
                yield break;
            }


            if (action.skillResult == null)
            {
                UtilityHelper.LogError("Error BattleHeroSkillAction: No skill result.");
                yield break;
            }

            UpdateRenderState(BattleUnitRenderState.Action);

            for (int i = 0; i < action.skillResult.Length; ++i)
            {
                if (action.skillResult[i].battleUnit != null && action.skillResult[i].battleUnit.battleUnitRenderer != null)
                {
                    action.skillResult[i].battleUnit.battleUnitRenderer.UpdateRenderState(BattleUnitRenderState.Selected);

                    yield return(EGameConstL.WaitForHalfSecond);

                    action.skillResult[i].battleUnit.battleUnitRenderer.OnSkillDamage(action.skillResult[i]);
                    action.skillResult[i].battleUnit.battleUnitRenderer.RefreshAttribute(action.skillResult[i].syncAttribute);
                }
            }


            UpdateRenderState(BattleUnitRenderState.Normal);

            for (int i = 0; i < action.skillResult.Length; ++i)
            {
                if (action.skillResult[i].battleUnit != null && action.skillResult[i].battleUnit.battleUnitRenderer != null)
                {
                    action.skillResult[i].battleUnit.battleUnitRenderer.UpdateRenderState(BattleUnitRenderState.Normal);
                }
            }
        }
コード例 #5
0
        //使用技能
        public void UseSkill(List <BattleAction> actions, BattleUnit target, int skillID)
        {
            if (target == null)
            {
                UtilityHelper.LogError("Use skill error, none target");
                return;
            }

            BattleHeroSkillResult skillResult = BattleCalculator.Instance.CalcSingle(this, target, skillID);

            if (actions != null)
            {
                BattleHeroSkillAction action = new BattleHeroSkillAction(this, skillID);
                action.skillResult = new BattleHeroSkillResult[1] {
                    skillResult
                };
                actions.Add(action);
            }

            if (skillResult != null)
            {
                skillResult.battleUnit.AcceptSkillResult(skillResult.syncAttribute, actions);
            }
        }