示例#1
0
        public override void    execute()
        {
            BasicAction basic_action = this.behavior.basic_action;

            // ---------------------------------------------------------------- //
            // 다음 상태로 이행할지 체크한다.

            switch (this.step.do_transition())
            {
            // 대기 중.
            case STEP.READY:
            {
                /*do {
                 *
                 *      if(!LevelControl.get().canCreateCurrentRoomEnemy()) {
                 *
                 *              break;
                 *      }
                 *
                 *      if(!Input.GetMouseButtonDown(1)) {
                 *      //if(!this.step.is_acrossing_cycle(5.0f)) {
                 *
                 *              break;
                 *      }
                 *
                 *      this.step.set_next(STEP.SPAWN);
                 *
                 * } while(false);*/
            }
            break;

            // 적 스폰.
            case STEP.SPAWN:
            {
                // 스폰 애니메이션이 끝나면 대기 상태로 돌아간다.
                do
                {
                    // 애니메이션 전환 중이면 돌아가지 않는다.
                    // (이걸 넣어두지 않으면 "idle" -> "generate"의.
                    //  전환 중에 다음 if문이 true가 되어 버린다).
                    if (basic_action.animator.IsInTransition(0))
                    {
                        break;
                    }
                    if (basic_action.animator.GetCurrentAnimatorStateInfo(0).IsName("Base Layer.Generate"))
                    {
                        break;
                    }

                    this.step.set_next(STEP.READY);
                } while(false);
            }
            break;

            // 찌그러진다.
            case STEP.PECHANCO:
            {
                if (this.is_death_motion_finished)
                {
                    this.step.set_next_delay(STEP.IDLE, 0.5f);
                }
            }
            break;
            }

            // ---------------------------------------------------------------- //
            // 상태 전환 시 초기화.

            while (this.step.get_next() != STEP.NONE)
            {
                switch (this.step.do_initialize())
                {
                case STEP.IDLE:
                {
                    // 부모 계층의 액션으로 복귀.
                    if (this.parent != null)
                    {
                        this.parent.resume();
                    }
                }
                break;

                // 대기 중.
                case STEP.READY:
                {
                }
                break;

                // 적 스폰.
                case STEP.SPAWN:
                {
                    this.is_trigger_pe = false;
                    basic_action.animator.SetTrigger("Generate");
                }
                break;

                // 찌그러진다.
                case STEP.PECHANCO:
                {
                    basic_action.animator.SetTrigger("Death");
                    this.is_death_motion_finished = false;

                    this.control.cmdEnableCollision(false);
                }
                break;
                }
            }

            // ---------------------------------------------------------------- //
            // 각 상태에서의 실행 처리.

            switch (this.step.do_execution(Time.deltaTime))
            {
            // 적 스폰.
            case STEP.SPAWN:
            {
                // 모션 타이밍에 맞춰 적을 토해낸다.
                if (this.is_trigger_pe)
                {
                    chrBehaviorEnemy_Lair behave_lair = this.behavior as chrBehaviorEnemy_Lair;

                    if (this.pedigree != "")
                    {
                        behave_lair.create_enemy_internal_pedigree(this.pedigree);
                        this.pedigree = "";
                    }
                    else
                    {
                        behave_lair.create_enemy_internal();
                    }

                    this.is_trigger_pe = false;
                }
            }
            break;
            }

            // ---------------------------------------------------------------- //
        }
示例#2
0
        public override void    execute()
        {
            BasicAction basic_action = this.behavior.basic_action;

            // ---------------------------------------------------------------- //
            // ?ㅼ쓬 ?곹깭濡??댄뻾?좎? 泥댄겕?쒕떎.

            switch (this.step.do_transition())
            {
            // ?€湲?以?
            case STEP.READY:
            {
                /*do {
                 *
                 *      if(!LevelControl.get().canCreateCurrentRoomEnemy()) {
                 *
                 *              break;
                 *      }
                 *
                 *      if(!Input.GetMouseButtonDown(1)) {
                 *      //if(!this.step.is_acrossing_cycle(5.0f)) {
                 *
                 *              break;
                 *      }
                 *
                 *      this.step.set_next(STEP.SPAWN);
                 *
                 * } while(false);*/
            }
            break;

            // ???ㅽ룿.
            case STEP.SPAWN:
            {
                // ?ㅽ룿 ?좊땲硫붿씠?섏씠 ?앸굹硫??€湲??곹깭濡??뚯븘媛꾨떎.
                do
                {
                    // ?좊땲硫붿씠???꾪솚 以묒씠硫??뚯븘媛€吏€ ?딅뒗??
                    // (?닿구 ?l뼱?먯? ?딆쑝硫?"idle" -> "generate"??
                    //  ?꾪솚 以묒뿉 ?ㅼ쓬 if臾몄씠 true媛€ ?섏뼱 踰꾨┛??.
                    if (basic_action.animator.IsInTransition(0))
                    {
                        break;
                    }
                    if (basic_action.animator.GetCurrentAnimatorStateInfo(0).IsName("Base Layer.Generate"))
                    {
                        break;
                    }

                    this.step.set_next(STEP.READY);
                } while(false);
            }
            break;

            // 李뚭렇?ъ쭊??
            case STEP.PECHANCO:
            {
                if (this.is_death_motion_finished)
                {
                    this.step.set_next_delay(STEP.IDLE, 0.5f);
                }
            }
            break;
            }

            // ---------------------------------------------------------------- //
            // ?곹깭 ?꾪솚 ??珥덇린??

            while (this.step.get_next() != STEP.NONE)
            {
                switch (this.step.do_initialize())
                {
                case STEP.IDLE:
                {
                    // 遺€紐?怨꾩링???≪뀡?쇰줈 蹂듦?.
                    if (this.parent != null)
                    {
                        this.parent.resume();
                    }
                }
                break;

                // ?€湲?以?
                case STEP.READY:
                {
                }
                break;

                // ???ㅽ룿.
                case STEP.SPAWN:
                {
                    this.is_trigger_pe = false;
                    basic_action.animator.SetTrigger("Generate");
                }
                break;

                // 李뚭렇?ъ쭊??
                case STEP.PECHANCO:
                {
                    basic_action.animator.SetTrigger("Death");
                    this.is_death_motion_finished = false;

                    this.control.cmdEnableCollision(false);
                }
                break;
                }
            }

            // ---------------------------------------------------------------- //
            // 媛??곹깭?먯꽌???ㅽ뻾 泥섎━.

            switch (this.step.do_execution(Time.deltaTime))
            {
            // ???ㅽ룿.
            case STEP.SPAWN:
            {
                // 紐⑥뀡 ?€?대컢??留욎떠 ?곸쓣 ?좏빐?몃떎.
                if (this.is_trigger_pe)
                {
                    chrBehaviorEnemy_Lair behave_lair = this.behavior as chrBehaviorEnemy_Lair;

                    if (this.pedigree != "")
                    {
                        behave_lair.create_enemy_internal_pedigree(this.pedigree);
                        this.pedigree = "";
                    }
                    else
                    {
                        behave_lair.create_enemy_internal();
                    }

                    this.is_trigger_pe = false;
                }
            }
            break;
            }

            // ---------------------------------------------------------------- //
        }