Example #1
0
 public BasicState(FSMManager manager)
 {
     this.manager  = manager;
     this.from     = manager.gameObject;
     this.fromAttr = manager.GetComponent <BasicObjectAttr>();
     this._config  = Config.getInstance();
 }
Example #2
0
//	protected float[] m_AngleCheckings = new float[] { 0, -15, 15, -45, 45 };
//	protected float[] m_AngleAvoidances = new float[] { 10, 40, -40, 40, -40 };
//	protected float[] m_LengthAvoidances = new float[] { 3f, 3f, 3f, 3f, 3f };

    #endregion

    #region Monobehaviour Implementation

    protected override void Awake()
    {
        base.Awake();
        this.m_NavMeshAgent       = this.GetComponent <NavMeshAgent> ();
        this.m_NavMeshAgent.speed = this.m_MoveSpeed + Random.Range(0, 2f);
        this.m_MaxSpeed           = this.m_NavMeshAgent.speed;

        this.m_FSMManager = new FSMManager();

        this.m_FSMManager.RegisterState("FSMSoccerIdleState", new FSMSoccerIdleState(this));
        this.m_FSMManager.RegisterState("FSMSoccerAttackState", new FSMSoccerAttackState(this));
        this.m_FSMManager.RegisterState("FSMSoccerDefendState", new FSMSoccerDefendState(this));
        this.m_FSMManager.RegisterState("FSMSoccerPassBallState", new FSMSoccerPassBallState(this));
        this.m_FSMManager.RegisterState("FSMSoccerAssistState", new FSMSoccerAssistState(this));
        this.m_FSMManager.RegisterState("FSMSoccerChaseBallState", new FSMSoccerChaseBallState(this));
        this.m_FSMManager.RegisterState("FSMSoccerCatchBallState", new FSMSoccerCatchBallState(this));

        this.m_FSMManager.RegisterCondition("IsTeamAttacking", this.IsTeamAttacking);
        this.m_FSMManager.RegisterCondition("HaveBall", this.HaveBall);
        this.m_FSMManager.RegisterCondition("PassTheBall", this.PassTheBall);
        this.m_FSMManager.RegisterCondition("DidToManyChaseBall", this.DidToManyChaseBall);
        this.m_FSMManager.RegisterCondition("IsNearAllyGoal", this.IsNearAllyGoal);
        this.m_FSMManager.RegisterCondition("IsNearEnemyGoal", this.IsNearEnemyGoal);

        this.m_FSMManager.LoadFSM(this.m_FSMTextAsset.text);
    }
Example #3
0
    void Start()
    {
        FSMManager manager = GetComponent <FSMManager>();

        RandomState search = new RandomState();
        FollowState follow = new FollowState();
        EatState    eat    = new EatState();

        /**
         *  Search for "food"
         *      when locate -> follow it
         *          When arrive -> eat it;
         */
        manager.GetBasicState()
        .configure("Food",
                   o => follow.whenArrive((e) => eat.setToEat(e).setAfterEat((s) => search), o), (o) => {
            Debug.LogError("GOTCHA");
            return(null);
        });

        /**
         *  Search for "player"
         *      when locate -> follow it
         *          When arrive -> attack it;
         */
        //        search.config("Player", o => follow.config((e) => attack.setTarget(e), o));

        manager.setCurrentState(search);
    }
Example #4
0
    // Use this for initialization
    void Start()
    {
        controlMove = transform.GetComponent <CharacterController>();



        animator = transform.GetComponentInChildren <Animator>();

        animManager = new FSMManager((int)AnimalEnum.MaxValue);

        PlayerIdle tmpIdle = new PlayerIdle(animator, new AnimalStateBack(AnimalStateChange));

        animManager.AddState(tmpIdle);

        PlayerRun tmpRun = new PlayerRun(animator, new AnimalStateBack(AnimalStateChange));

        animManager.AddState(tmpRun);

        PlayerAttact tmpAttact = new PlayerAttact(animator, new AnimalStateBack(AnimalStateChange));

        animManager.AddState(tmpAttact);



        PlayerBigAttact bigAttact = new PlayerBigAttact(animator, new AnimalStateBack(AnimalStateChange));

        animManager.AddState(bigAttact);


        transform.localEulerAngles = new Vector3(0, 90, 0);
    }
Example #5
0
        protected override void Awake()
        {
            base.Awake();

            m_ObjectPool = new ObjectPool <CAIController> ();

            m_FSMManger = new FSMManager();
            m_FSMManger.LoadFSM("FSM/SimpleNestFSM");

            var idleNestState     = new FSMNestIdleState(this);
            var deactiveNestState = new FSMNestDeactiveState(this);

            m_FSMManger.RegisterState("NestIdleState", idleNestState);
            m_FSMManger.RegisterState("NestDeactiveState", deactiveNestState);

            m_FSMManger.RegisterCondition("IsDeactive", IsDeactive);

            m_Members = new List <CAIController> ();

            m_Frees          = new LinkedList <CAIController> ();
            m_LineWorkers    = new LinkedList <CAIController> ();
            m_LineReturnNest = new LinkedList <CAIController> ();

            OnNestInit();
        }
Example #6
0
    void Start()
    {
        fsm = new FSMManager <Data>();

        StateBase <Data> defreezeState = new DefreezeState(fsm);

        defreezeState.AddTransition(Transition.PressFreeze, StateID.FreezeState);
        defreezeState.AddTransition(Transition.PressReset, StateID.ResetState);

        StateBase <Data> freezeState = new FreezeState(fsm);

        freezeState.AddTransition(Transition.PressDefreeze, StateID.DefreezeState);
        freezeState.AddTransition(Transition.PressReset, StateID.ResetState);

        StateBase <Data> resetState = new ResetState(fsm);

        resetState.AddTransition(Transition.PressDefreeze, StateID.DefreezeState);
        resetState.AddTransition(Transition.PressFreeze, StateID.FreezeState);


        fsm.AddState(defreezeState);
        fsm.AddState(freezeState);
        fsm.AddState(resetState);

        fsm.InitState(freezeState);
    }
Example #7
0
        private void Awake()
        {
            myActor      = GetComponent <Actor> ();
            myTimer      = GetComponent <Timer> ();
            myFsmManager = GetComponent <FSMManager> ();
            myAnimator   = GetComponent <Animator> ();
            myDamager    = GetComponentInChildren <Damager> ();
            myShooter    = GetComponentInChildren <Shooter> ();

            myActor.solidLayer = solidLayer;
            myActor.maxFall    = maxFall;
            myActor.gravity    = gravity;
            myFsmManager.RegisterState("Direction", "Left");
            myFsmManager.RegisterState("Direction", "Right", true, true);

            myFsmManager.RegisterState("FullBody", "Jump");
            myFsmManager.RegisterState("FullBody", "Fall");
            myFsmManager.RegisterState("FullBody", "Dash");
            myFsmManager.RegisterState("FullBody", "Idle", true, true);
            myFsmManager.RegisterState("FullBody", "Run");
            myFsmManager.RegisterState("Action", "Attack", false);
            myFsmManager.RegisterState("Action", "Shoot");

            myTimer.RegisterAction("DashDuration", Timer.types.Auto);
            myTimer.RegisterAction("DashLock", Timer.types.Auto);
            myTimer.RegisterAction("AttackDuration", Timer.types.Auto);
            myTimer.RegisterAction("AttackLock", Timer.types.Auto);
            myTimer.RegisterAction("ShootLock", Timer.types.Auto);
            // We can have several action cold down. Can cold down AttackLock/DashLock... -> parallel mode
            // we can only have one action is performed at the moment. Can only Jump/Fall/Dash -> sequential mode. Transfer to the other state when the action is performed and allowed.
            // we can only either have left or right -> sequential mode
            // Maybe Manual mode becomes useless...
        }
Example #8
0
 public FSMBaseAction(E_ActionTYpe type, Agent agent, FSMManager owner)
 {
     _actionType = type;
     _agent      = agent;
     _owner      = owner;
     Initialize();
 }
Example #9
0
    void FixedUpdate()
    {
        lineOfSight.enabled = _config.lightIsOn;
        lineOfSight.SetStatus(LineOfSight.Status.Idle);

        if (lineOfSight.enabled)
        {
            if (lineOfSight.SeeByTag("Player"))
            {
                List <GameObject> obs    = lineOfSight.getViewing();
                GameObject        obj    = obs[0];
                Player            player = obj.GetComponent <Player>();

                if (player != null)
                {
                    if (!player.disguised)
                    {
                        Collider[] colliders = Physics.OverlapSphere(gameObject.transform.position, alertRadious);

                        GameObject nearest     = null;
                        float      nearestDist = 0f;

                        foreach (Collider c in colliders)
                        {
                            if (c.tag.Equals("Soldier"))
                            {
                                float dist = Vector3.Distance(c.gameObject.transform.position, transform.position);
                                if (nearest == null || dist < nearestDist)
                                {
                                    nearestDist = dist;
                                    nearest     = c.gameObject;
                                }
                            }
                        }

                        if (nearest != null)
                        {
                            FSMManager      g    = nearest.GetComponent <FSMManager>();
                            BasicObjectAttr attr = nearest.GetComponent <BasicObjectAttr>();
                            // We arrive to destination
                            List <SearchConfig> searchConf = g.GetBasicState().GetSearchConfig();
                            foreach (SearchConfig sc in searchConf)
                            {
                                if (sc.doWhenAlert != null)
                                {
                                    IAState st = sc.doWhenAlert.Invoke(obj);
                                    g.setCurrentState(st);
                                }
                            }
                        }
                        lineOfSight.SetStatus(LineOfSight.Status.Alerted);
                    }
                    else
                    {
                        lineOfSight.SetStatus(LineOfSight.Status.Suspicious);
                    }
                }
            }
        }
    }
Example #10
0
	void Awake(){
		m_Instance = this;
		//m_AIData初始化
		m_AIData.fspeed = 20.0f;
		m_AIData.fMaxspeed = m_fMaxSpeed;
		m_AIData.frotate = 0.0f;
		m_AIData.fMaxrotate = 10.0f;
		m_AIData.fColProbe = 2.0f;
		m_AIData.thisPoint = this.gameObject;
		m_AIData.targetPoint = targetPoint;
		m_AIData.m_Obs = SceneManager.m_Instance.m_Obs;
		m_AIData.m_Wall = SceneManager.m_Instance.m_Wall;
		m_AIData.fRadius = 0.5f;
		m_AIData.iAstarIndex = -1;
		m_AIData.targetPosition = Vector3.zero;
		m_AIData.fDetectLength = 10.0f;
		m_AIData.fAttackLength = 5.0f;
		m_AIData.fAttack = 10.0f;
		m_AIData.fSkill = 30.0f;
		m_AIData.iLV = 1;
		m_AIData.iEXP = 0;
		m_AIData.fHP = fHP;
		m_AIData.fMP = fMP;
		m_AIData.fMaxHP = fMaxHP;
		m_AIData.fMaxMP = fMaxMP;
		//FSM的設定
		m_FSMManager = new FSMManager ();
		FSMIdleState IdleState = new FSMIdleState ();
		m_FSMManager.AddState (IdleState);
		m_AIData.m_State = m_FSMManager;
	}
Example #11
0
 public override void OnUpdate(FSMManager fsm, float time)
 {
     //持续时间结束
     if (time - enterTime >= lastTime)
     {
         fsm.EndState(FSMState.Sheep);
     }
 }
Example #12
0
    public void Aggro()
    {
        FSMState chaseState = FSMManager.GetState("ZombieChase");

        if (chaseState != null)
        {
            EntityFSM.ChangeState(chaseState);
        }
    }
Example #13
0
    public void Awake()
    {
        _fsm = new FSMManager(this, E_ActionTYpe.Idle);
        _fsm.Addaction(FSMActionFactory.Create(E_ActionTYpe.Idle, _fsm));
        _fsm.Addaction(FSMActionFactory.Create(E_ActionTYpe.Walk, _fsm));
        _fsm.Initialize();

        controller = GetComponent <CharacterController>();
    }
 protected override void Awake()
 {
     base.Awake();
     this.OnLoadData();
     this.SetID(Guid.NewGuid().ToString());
     this.m_FSMManager  = new FSMManager();
     this.OnStartAction = new CEventListener();
     this.OnEndAction   = new CEventListener();
 }
Example #15
0
    void Start()
    {
        RunFSM    tmpRunFSM    = new RunFSM();
        AttackFSM tmpAttackFSM = new AttackFSM();

        manager = new FSMManager(2);
        manager.AddState(tmpRunFSM);
        manager.AddState(tmpAttackFSM);
    }
Example #16
0
    void Start()
    {
        fromAttr = GetComponent <BasicObjectAttr>();
        this.originalPos.transform.parent = null;
        FSMManager   manager = GetComponent <FSMManager>();
        NavMeshAgent agent   = GetComponent <NavMeshAgent>();

        RandomState search = new RandomState();
        FollowState follow = new FollowState();
        IdleState   idle   = new IdleState();

        idle.isInfinite = true;
        InvestigateState investigateState = new InvestigateState();

        manager.GetBasicState().configure("Player",
                                          (o) => {
            return(null);
        },
                                          (o) => {
            investigateState.setTargetPos(o.transform.position);
            investigateState.SetDoWhenArrive((s) => {
                Collider[] coll = Physics.OverlapSphere(gameObject.transform.position, fromAttr.dangerViewAreaRadius);
                Debug.Log("Clll" + coll.Length);
                foreach (Collider c in coll)
                {
                    if (c.tag.Equals("Player"))
                    {
                        var go            = Camera.main.GetComponent <GameOverCameraControl>();
                        go.showDeadEffect = true;
                        return(null);
                    }
                }

                idle.time       = fromAttr.investigateWaitTime;
                idle.isInfinite = false;
                idle.onComplete((s1) => {
                    investigateState.setTargetPos(this.originalPos.transform.position);
                    investigateState.SetDoWhenArrive((s2) => {
                        idle.isInfinite    = true;
                        transform.rotation = this.originalPos.transform.rotation;
                        agent.destination  = this.transform.position;
                        return(idle);
                    });
                    return(investigateState);
                });
                return(idle);
            });

            return(investigateState);
        });
        manager.setCurrentState(idle);
    }
Example #17
0
	/*
	//=============================角色動作=============================
	public Animator Anim;
	public AnimatorStateInfo BS;
	static int Idle = Animator.StringToHash("Base.Layer.BG_Chibi_Idle");
	static int Run = Animator.StringToHash("Base.Layer.BG_Chibi_B_Run");
	static int Attac = Animator.StringToHash("Base.Layer.0G_Chibi_Attack00");
	static int Skill = Animator.StringToHash("Base.Layer.0G_Chibi_Attack00");
	public enum eEgo {
		None = -1,
		Idle,
		Run,
		Attac,
		Skill
	}
	public eEgo iNowEgo = eEgo.None;
	//=============================完=============================
	*/

	void Awake(){
		//iNowEgo = eEgo.Idle;
		m_Instance = this;
		//獲得AStar的Component
		//Camera mainCamera = Camera.main;
		//m_AStar = mainCamera.GetComponent<AStar>();
		m_AStar = this.GetComponent<AStar> ();
		//m_AIData初始化
		m_AIData.fspeed = 0.1f;
		m_AIData.fMaxspeed = m_fMaxSpeed;
		m_AIData.frotate = 0.0f;
		m_AIData.fMaxrotate = 10.0f;
		m_AIData.fColProbe = 1.0f;
		m_AIData.thisPoint = this.gameObject;
		m_AIData.targetPoint = targetPoint;
		m_AIData.m_Obs = SceneManager.m_Instance.m_Obs;
		m_AIData.fRadius = 0.5f;
		m_AIData.iAstarIndex = -1;
		m_AIData.targetPosition = Vector3.zero;
		m_AIData.fDetectLength = 10.0f;
		m_AIData.fAttackLength = 5.0f;
		m_AIData.fAttack = 10.0f;
		m_AIData.fSkill = 30.0f;
		m_AIData.fSkillMP = 20.0f;
		m_AIData.iEXPGET = 20;
		m_AIData.fHP = fHP;
		m_AIData.fMP = fMP;
		m_AIData.fMaxHP = fMaxHP;
		m_AIData.fMaxMP = fMaxMP;
		/*
			生成隊長時呼叫自己的小兵,並傳入變數給小兵,指派他的隊長
		*/
		//FSM的設定
		m_FSMManager = new FSMManager ();
		FSMNpcIdleState IdleState = new FSMNpcIdleState ();
		FSMNpcTrackState TrackState = new FSMNpcTrackState ();
		FSMNpcAttackState AttackState = new FSMNpcAttackState ();
		FSMNpcSkillState SkillState = new FSMNpcSkillState ();
		IdleState.AddTransition (eTransitionID.Idle_To_Track, eStateID.Track);
		TrackState.AddTransition (eTransitionID.Track_To_Attack, eStateID.Attack);
		TrackState.AddTransition (eTransitionID.Track_To_Skill, eStateID.Skill);
		AttackState.AddTransition (eTransitionID.Attack_To_Idle, eStateID.Idle);
		AttackState.AddTransition (eTransitionID.Attack_To_Track, eStateID.Track);
		SkillState.AddTransition (eTransitionID.Skill_To_Idle, eStateID.Idle);
		SkillState.AddTransition (eTransitionID.Skill_To_Track, eStateID.Track);
		m_FSMManager.AddState (IdleState);
		m_FSMManager.AddState (TrackState);
		m_FSMManager.AddState (AttackState);
		m_FSMManager.AddState (SkillState);
		m_AIData.m_State = m_FSMManager;
	}
Example #18
0
        protected override void Awake()
        {
            base.Awake();
            this.m_FSMManager = new FSMManager();
            this.m_FSMManager.LoadFSM(this.m_FSMText.text);
            this.m_FSMManager.RegisterState("GameIdleState", new FSMGameIdleState(this));
            this.m_FSMManager.RegisterState("GameActiveState", new FSMGameActiveState(this));
            this.m_FSMManager.RegisterState("GameCompletedState", new FSMGameCompletedState(this));
            this.m_FSMManager.RegisterState("GameEndState", new FSMGameEndState(this));

            this.m_FSMManager.RegisterCondition("IsLoadingCompleted", this.IsLoadingCompleted);
            this.m_FSMManager.RegisterCondition("IsPlayerDeath", this.IsPlayerDeath);
            this.m_FSMManager.RegisterCondition("IsRoundCompleted", this.IsRoundCompleted);
        }
Example #19
0
    private void Start()
    {
        //FSM TESTING
        FSMState normalState = FSMManager.GetState("ZombieWander");

        if (normalState != null)
        {
            EntityFSM.ChangeState(normalState);
        }
        else
        {
            Debug.LogError("Can't find Zombie Wander state");
        }
    }
Example #20
0
 // Use this for initialization
 void Start()
 {
     m_AStar = this.GetComponent<AStar>(); ;
     //m_AIData初始化
     m_AIData.fspeed = 20.0f;
     m_AIData.fMaxspeed = m_fMaxSpeed;
     m_AIData.frotate = 0.0f;
     m_AIData.fMaxrotate = 10.0f;
     m_AIData.fColProbe = 2.0f;
     m_AIData.thisPoint = this.gameObject;
     m_AIData.targetPoint = targetPoint;
     m_AIData.m_Obs = SceneManager.m_Instance.m_Obs;
     m_AIData.m_Wall = SceneManager.m_Instance.m_Wall;
     m_AIData.fRadius = 0.5f;
     m_AIData.iAstarIndex = -1;
     m_AIData.targetPosition = Vector3.zero;
     m_AIData.fDetectLength = 20.0f;
     m_AIData.fAttackLength = 10.0f;
     m_AIData.fHP = 100.0f;
     m_AIData.fMP = 30.0f;
     m_AIData.fAttack = 10.0f;
     m_AIData.fSkill = 30.0f;
     //FSM的設定
     m_FSMManager = new FSMManager();
     FSMIdleState IdleState = new FSMIdleState();
     //FSMTrackState TrackState = new FSMTrackState ();
     //FSMChaseState ChaseState = new FSMChaseState ();
     //FSMAttackState AttackState = new FSMAttackState ();
     //FSMWanderState WanderState = new FSMWanderState ();
     //IdleState.AddTransition (eTransitionID.Idle_To_Track, eStateID.Track);
     //IdleState.AddTransition (eTransitionID.Idle_To_Chase, eStateID.Chase);
     //IdleState.AddTransition (eTransitionID.Idle_To_Attack, eStateID.Attack);
     //IdleState.AddTransition (eTransitionID.Idle_To_Wander, eStateID.Wander);
     //TrackState.AddTransition (eTransitionID.Track_To_Idle, eStateID.Idle);
     //TrackState.AddTransition (eTransitionID.Track_To_Chase, eStateID.Chase);
     //TrackState.AddTransition (eTransitionID.Track_To_Attack, eStateID.Attack);
     //TrackState.AddTransition (eTransitionID.Track_To_Wander, eStateID.Wander);
     //ChaseState.AddTransition (eTransitionID.Chase_To_Attack, eStateID.Attack);
     //ChaseState.AddTransition (eTransitionID.Chase_To_Idle, eStateID.Idle);
     //AttackState.AddTransition (eTransitionID.Attack_To_Idle, eStateID.Idle);
     //AttackState.AddTransition (eTransitionID.Attack_To_Chase, eStateID.Chase);
     //WanderState.AddTransition (eTransitionID.Wander_To_Idle, eStateID.Idle);
     m_FSMManager.AddState(IdleState);
     //m_FSMManager.AddState (TrackState);
     //m_FSMManager.AddState (ChaseState);
     //m_FSMManager.AddState (AttackState);
     //m_FSMManager.AddState (WanderState);
     m_AIData.m_State = m_FSMManager;
 }
    // Use this for initialization
    void Start()
    {
        fm = new FSMManager((int)AnimationEnum.Max);
        Animator            animator            = GetComponent <Animator>();
        CharacterController characterController = GetComponent <CharacterController>();;
        PlayerIdle          tmpIdle             = new PlayerIdle(animator);

        fm.AddState(tmpIdle);
        PlayerRun tmpRun = new PlayerRun(animator, characterController);

        fm.AddState(tmpRun);
        PlayerAttack tmpAttack = new PlayerAttack(animator, this);

        fm.AddState(tmpAttack);
    }
Example #22
0
        public PatrolState(FSMManager <GameObject> fsm) : base(fsm)
        {
            stateID = StateID.PatrolState;

            wayPointList = new List <Transform>();
            Transform[] trans = GameObject.Find("WayPoints").GetComponentsInChildren <Transform>();
            for (int i = 0; i < trans.Length; i++)
            {
                if (i != 0)
                {
                    wayPointList.Add(trans[i]);
                }
            }
            player = GameObject.Find("Player").transform;
        }
    protected override void Awake()
    {
        base.Awake();

        this.m_FSMManager = new FSMManager();
        this.m_FSMManager.LoadFSM(this.m_FSMText.text);

        this.m_FSMManager.RegisterState("FishIdleState", new FSMFishIdleState(this));
        this.m_FSMManager.RegisterState("FishChaseBaitState", new FSMFishChaseBaitState(this));
        this.m_FSMManager.RegisterState("FishBiteBaitState", new FSMFishBiteBaitState(this));

        this.m_FSMManager.RegisterCondition("HaveBait", this.HaveBait);
        this.m_FSMManager.RegisterCondition("IsBiteBail", this.IsBiteBail);
        this.m_FSMManager.RegisterCondition("IsBailTimer", this.IsBailTimer);
    }
    protected override void Awake()
    {
        base.Awake();

        this.m_FSMManager = new FSMManager();
        this.m_FSMManager.LoadFSM(this.m_FSMText.text);

        this.m_FSMManager.RegisterState("RepairFishingState", new FSMRepairFishingState(this));
        this.m_FSMManager.RegisterState("StartFishingState", new FSMStartFishingState(this));
        this.m_FSMManager.RegisterState("FinishFishingState", new FSMFinishFishingState(this));

        this.m_FSMManager.RegisterCondition("IsObjectActive", this.IsObjectActive);
        this.m_FSMManager.RegisterCondition("IsBaitThrowed", this.IsBaitThrowed);
        this.m_FSMManager.RegisterCondition("IsFishBite", this.IsFishBite);
        this.m_FSMManager.RegisterCondition("IsFishingEnd", this.IsFishingEnd);
    }
Example #25
0
        protected virtual void OnRegisterFSM()
        {
            var jsonText       = Resources.Load <TextAsset>(m_MapManager.mapData.gameFSMPath);
            var gameIdle       = new FSMGameIdleState(this);
            var gameLoading    = new FSMGameLoadingState(this);
            var gameStart      = new FSMGameStartState(this);
            var gameProcessing = new FSMGameProcessingState(this);
            var startTurn      = new FSMGameStartTurnState(this);
            var updateTurn     = new FSMGameUpdateTurnState(this);
            var endTurn        = new FSMGameEndTurnState(this);
            var gameEnd        = new FSMGameEndState(this);
            var winGame        = new FSMWinGameState(this);
            var closeGame      = new FSMCloseGameState(this);

            m_FSMManager = new FSMManager();
            m_FSMManager.RegisterState("GameIdleState", gameIdle);
            m_FSMManager.RegisterState("GameLoadingState", gameLoading);
            m_FSMManager.RegisterState("GameStartState", gameStart);
            m_FSMManager.RegisterState("GameProcessingState", gameProcessing);
            m_FSMManager.RegisterState("StartTurnState", startTurn);
            m_FSMManager.RegisterState("UpdateTurnState", updateTurn);
            m_FSMManager.RegisterState("EndTurnState", endTurn);
            m_FSMManager.RegisterState("GameEndState", gameEnd);
            m_FSMManager.RegisterState("WinGameState", winGame);
            m_FSMManager.RegisterState("CloseGameState", closeGame);

            m_FSMManager.RegisterCondition("IsLoading", IsLoading);
            m_FSMManager.RegisterCondition("IsLoadingComplete", IsLoadingComplete);
            m_FSMManager.RegisterCondition("IsProcessing", IsProcessing);
            m_FSMManager.RegisterCondition("IsStartTurn", IsStartTurn);
            m_FSMManager.RegisterCondition("IsUpdateTurn", IsUpdateTurn);
            m_FSMManager.RegisterCondition("IsEndTurn", IsEndTurn);
            m_FSMManager.RegisterCondition("IsEndGame", IsEndGame);
            m_FSMManager.RegisterCondition("IsAllCompleteBlock", IsAllCompleteBlock);
            m_FSMManager.RegisterCondition("IsOnceCompleteBlock", IsOnceCompleteBlock);
            m_FSMManager.RegisterCondition("IsAllDeath", IsAllDeath);
            m_FSMManager.RegisterCondition("IsOnceDeath", IsOnceDeath);
            m_FSMManager.RegisterCondition("DidDeactiveTargetObject", DidDeactiveTargetObject);
            m_FSMManager.RegisterCondition("Did5Turn", Did5Turn);
            m_FSMManager.RegisterCondition("Did10Turn", Did10Turn);
            m_FSMManager.RegisterCondition("Did20Turn", Did20Turn);
            m_FSMManager.RegisterCondition("Did30Turn", Did30Turn);
            m_FSMManager.RegisterCondition("Did40Turn", Did40Turn);
            m_FSMManager.RegisterCondition("Did50Turn", Did50Turn);

            m_FSMManager.LoadFSM(jsonText.text);
        }
Example #26
0
    public virtual void Initial()
    {
        moveControl = transform.GetComponent <CharacterController>();

        if (moveControl == null)
        {
            moveControl = gameObject.AddComponent <CharacterController>();
        }



        fsmManager = new FSMManager((int)StateEnum.MaxValue);

        dataBase = new NPCDataBase(DataBackLogic);

        // Debug.Log("parent Initial");
    }
Example #27
0
    protected override void Awake()
    {
        base.Awake();
        this.m_FSMManager = new FSMManager();

        this.m_FSMManager.RegisterState("FSMTeamIdleState", new FSMTeamIdleState(this));
        this.m_FSMManager.RegisterState("FSMTeamPlayingState", new FSMTeamPlayingState(this));
        this.m_FSMManager.RegisterState("FSMTeamAttackState", new FSMTeamAttackState(this));
        this.m_FSMManager.RegisterState("FSMTeamDefendState", new FSMTeamDefendState(this));

        this.m_FSMManager.RegisterCondition("IsPlaying", this.IsPlaying);
        this.m_FSMManager.RegisterCondition("IsTeamHaveBall", this.IsTeamHaveBall);
        this.m_FSMManager.RegisterCondition("IsNearAllyGoal", this.IsNearAllyGoal);
        this.m_FSMManager.RegisterCondition("IsNearEnemyGoal", this.IsNearEnemyGoal);

        this.m_FSMManager.LoadFSM(this.m_FSMTextAsset.text);
    }
Example #28
0
    // Use this for initialization
    void Start()
    {
        fsmManager = new FSMManager((int)AnimationEnum.Max);
        Animator   animator = GetComponent <Animator>();
        PlayerWait tmpWait  = new PlayerWait(animator);

        fsmManager.AddState(tmpWait);
        PlayerJump tmpJump = new PlayerJump(animator, this);

        fsmManager.AddState(tmpJump);
        PlayerWalk tmpWalk = new PlayerWalk(animator);

        fsmManager.AddState(tmpWalk);
        PlayerWait02 tmpWait02 = new PlayerWait02(animator);

        fsmManager.AddState(tmpWait02);
    }
Example #29
0
    private static FSMBaseAction CreateAction(E_ActionTYpe type, Agent agent, FSMManager owner)
    {
        switch (type)
        {
        case E_ActionTYpe.Idle:
            return(new PlayerIdleAction(agent, owner));

        case E_ActionTYpe.Walk:
            return(new PlayerWalkAction(agent, owner));

        //case E_ActionTYpe.Attack:

        //    break;
        default:
            Debug.LogError("No this Action");
            return(null);
        }
    }
Example #30
0
    public override void TakeDamage(float damage)
    {
        FSMManager _manager = GetComponent <FSMManager>();

        if (!_manager.Dead)
        {
            if (_manager.Anim.GetBool("IsMoving"))
            {
                _manager.Anim.SetTrigger("Damaged");
            }
            else
            {
                _manager.SetState(PlayerState.Idle);
                _manager.Anim.SetTrigger("Damaged");
            }
            base.TakeDamage(damage);
        }
    }
        protected override void Awake()
        {
            base.Awake();

            m_NavMeshAgent = this.GetComponent <NavMeshAgent> ();
            havestObjects  = new LinkedList <CObjectController> ();

            m_FSMManager = new FSMManager();
            m_FSMManager.LoadFSM("FSM/SimpleWorkerFSM");

            var idleState           = new FSMIdleState(this);
            var moveState           = new FSMMoveState(this);
            var waitingState        = new FSMWaitingState(this);
            var waitingCommandState = new FSMWaitCommandState(this);
            var havestState         = new FSMHavestState(this);
            var goNestState         = new FSMGoNestState(this);
            var productFoodState    = new FSMProductFoodState(this);
            var deathState          = new FSMDeathState(this);

            m_FSMManager.RegisterState("IdleState", idleState);
            m_FSMManager.RegisterState("MoveState", moveState);
            m_FSMManager.RegisterState("WaitingState", waitingState);
            m_FSMManager.RegisterState("WaitingCommandState", waitingCommandState);
            m_FSMManager.RegisterState("HavestState", havestState);
            m_FSMManager.RegisterState("GoNestState", goNestState);
            m_FSMManager.RegisterState("ProductFoodState", productFoodState);
            m_FSMManager.RegisterState("DeathState", deathState);

            m_FSMManager.RegisterCondition("HaveTarget", HaveTarget);
            m_FSMManager.RegisterCondition("HaveHavest", HaveHavest);
            m_FSMManager.RegisterCondition("DidMoveToSignPoint", DidMoveToSignPoint);
            m_FSMManager.RegisterCondition("DidMoveToTarget", DidMoveToTarget);
            m_FSMManager.RegisterCondition("DidMoveToNest", DidMoveToNest);
            m_FSMManager.RegisterCondition("DidFullStorable", DidFullStorable);
            m_FSMManager.RegisterCondition("DidProductFoodComplete", DidProductFoodComplete);
            m_FSMManager.RegisterCondition("IsDeath", IsDeath);

            m_MovableComponent = new CMovableComponent(this, m_NavMeshAgent);
            m_MovableComponent.currentTransform = m_Transform;
            m_MovableComponent.obstacles        = m_ObstacleLayerMasks;
            m_MovableComponent.radiusBase       = 0f;

            m_CurrentLayerMask = this.gameObject.layer;
        }
Example #32
0
    public void TargetCheck()
    {
        GameObject          player = GameObject.FindGameObjectWithTag("Player");
        CharacterController cc     = player.GetComponent <CharacterController>();

        bool found = false;

        if (cc)
        {
            Plane[] ps = GeometryUtility.CalculateFrustumPlanes(_sight);
            if (GeometryUtility.TestPlanesAABB(ps, cc.bounds))
            {
                RaycastHit hit;
                Vector3    direction = player.transform.position + Vector3.up * 1.5f;
                direction = direction - _sight.transform.position;
                Physics.Raycast(_sight.transform.position, direction, out hit);

                Debug.DrawRay(_sight.transform.position, direction);
                if (hit.transform == player.transform)
                {
                    FSMManager playerManager = player.GetComponent <FSMManager>();
                    if (playerManager.CurrentState != PlayerState.Hide && playerManager.CurrentState != PlayerState.Dead)
                    {
                        found = true;
                    }
                }
            }
        }
        else if (Vector3.Distance(transform.position, player.transform.position) <= 1.0f)
        {
            found = true;
        }

        if (found)
        {
            _target = player;
        }
        else
        {
            _target = null;
        }
    }
Example #33
0
    void Start()
    {
        fromAttr = GetComponent <BasicObjectAttr>();
        FSMManager manager = GetComponent <FSMManager>();

        RandomState      search           = new RandomState();
        FollowState      follow           = new FollowState();
        IdleState        idle             = new IdleState();
        PatrolState      patrol           = new PatrolState();
        InvestigateState investigateState = new InvestigateState();


        patrol.patrolRoute = patrolRoute;
        patrol.setAgent(GetComponent <NavMeshAgent>());
        manager.GetBasicState().configure("Player",
                                          (o) => {
            investigateState.setTargetPos(o.transform.position).SetDoWhenArrive(null);
            return(investigateState);
        },
                                          (o) => {
            investigateState.setTargetPos(o.transform.position);
            investigateState.SetDoWhenArrive((s) => {
                Collider[] coll = Physics.OverlapSphere(gameObject.transform.position, fromAttr.dangerViewAreaRadius);
                foreach (Collider c in coll)
                {
                    if (c.tag.Equals("Player"))
                    {
                        var go            = Camera.main.GetComponent <GameOverCameraControl>();
                        go.showDeadEffect = true;
                        return(null);
                    }
                }

                return(patrol);
            });

            return(investigateState);
        });
        manager.setCurrentState(patrol);
    }
    public virtual void Init()
    {
        m_Transform	= this.transform;
        SetStartPosition (m_Transform.position);
        SetTargetPosition (m_Transform.position);

        m_AnimatorController = this.GetComponent<Animator> ();
        m_Collider 			 = this.GetComponent<CapsuleCollider> ();
        m_ObjectCurrentvalue = new Dictionary<string, object>();

        m_GameManager 	= TDCGameManager.GetInstance();
        m_FSMManager 	= new FSMManager();

        var waiting 		= new FSMWaitingState (this);
        var waitingOne 		= new FSMWaitingOneSecondState (this);
        var waitingOne2Three = new FSMWaitingOne2ThreeSecondState (this);
        var waitingThree2Five = new FSMWaitingThree2FiveSecondState (this);
        var sleepState 		= new FSMSleepState(this);
        var dayModeState	= new FSMDayModeState(this);
        var nightModeState	= new FSMNightModeState(this);

        m_FSMManager.RegisterState("WaitingState", waiting);
        m_FSMManager.RegisterState("WaitingOneSecondState", waitingOne);
        m_FSMManager.RegisterState("WaitingOne2ThreeSecondState", waitingOne2Three);
        m_FSMManager.RegisterState("WaitingThree2FiveSecondState", waitingThree2Five);
        m_FSMManager.RegisterState("DayModeState", dayModeState);
        m_FSMManager.RegisterState("NightModeState", nightModeState);
        m_FSMManager.RegisterState("SleepState", sleepState);

        m_FSMManager.RegisterCondition("IsActive", IsActive);
        m_FSMManager.RegisterCondition("CountdownWaitingTime", CountdownWaitingTime);
        m_FSMManager.RegisterCondition("IsDayTime", TDCDateTime.IsDayTime);
        m_FSMManager.RegisterCondition("IsMidDayTime", TDCDateTime.IsMidDayTime);
        m_FSMManager.RegisterCondition("IsNightTime", TDCDateTime.IsNightTime);
        m_FSMManager.RegisterCondition("IsMidNightTime", TDCDateTime.IsMidNightTime);
        m_FSMManager.RegisterCondition("IsSpring", IsSpring);
        m_FSMManager.RegisterCondition("IsSummer", IsSummer);
        m_FSMManager.RegisterCondition("IsAutumn", IsAutumn);
        m_FSMManager.RegisterCondition("IsWinter", IsWinter);
        m_FSMManager.RegisterCondition("IsRainy", IsRainy);
        m_FSMManager.RegisterCondition("IsOverHeat", IsOverHeat);
        m_FSMManager.RegisterCondition("IsWindy", IsWindy);
        m_FSMManager.RegisterCondition("IsSnowy", IsSnowy);
    }