コード例 #1
0
ファイル: BTJudge.cs プロジェクト: mengtest/skilldemo
        protected override EBTStatus Execute()
        {
            if (FindJudgeTrans() == false)
            {
                return(EBTStatus.BT_FAILURE);
            }
            List <Actor> list = Owner.GetActorsByAffectType(Affect);
            List <Actor> hits = new List <Actor>();

            for (int i = 0; i < list.Count; i++)
            {
                Actor actor = list[i];
                if (Scope.IsTouch(actor))
                {
                    mCurCount++;
                    hits.Add(actor);
                }
                if (CheckHitLimit())
                {
                    break;
                }
            }

            if (hits.Count > 0)
            {
                BTTreeManager.Instance.SaveData(this, Define.BT_JUDGE_LIST, hits);
                BTTreeManager.Instance.SaveData(this, Define.BT_JUDGE_SUCCESS, string.Empty);
                if (mChildren.Count > 0)
                {
                    BTNode pNode = mChildren[0];
                    pNode.Step();
                }
            }

            if (LifeTime > 0)
            {
                return(CheckHitLimit() ? EBTStatus.BT_SUCCESS : EBTStatus.BT_RUNNING);
            }
            else
            {
                return(mCurCount > 0 ? EBTStatus.BT_SUCCESS : EBTStatus.BT_FAILURE);
            }
        }
コード例 #2
0
        protected override BTStatus Execute()
        {
            if (FindJudgeTrans() == false)
            {
                return(BTStatus.Failure);
            }
            List <ActorBase> list = Owner.GetActorsByAffectType(Affect);
            List <ActorBase> hits = new List <ActorBase>();

            for (int i = 0; i < list.Count; i++)
            {
                ActorBase actor = list[i];
                if (Scope.IsTouch(actor))
                {
                    mCurCount++;
                    hits.Add(actor);
                }
                if (CheckHitLimit())
                {
                    break;
                }
            }

            if (hits.Count > 0)
            {
                GameEntry.BT.SaveData(this, Constant.Define.BTJudgeList, hits);
                GameEntry.BT.SaveData(this, Constant.Define.BTJudgeSuccess, string.Empty);
                if (m_Children.Count > 0)
                {
                    BTNode pNode = m_Children[0];
                    pNode.Step();
                }
            }

            if (LifeTime > 0)
            {
                return(CheckHitLimit() ? BTStatus.Success : BTStatus.Running);
            }
            else
            {
                return(mCurCount > 0 ? BTStatus.Success : BTStatus.Failure);
            }
        }