protected virtual void OnRegisterFSM()
        {
            var startTurnState  = new FSMStartTurnState(this);
            var endTurnState    = new FSMEndTurnState(this);
            var leaveTurnState  = new FSMLeaveTurnState(this);
            var joinTurnState   = new FSMJoinTurnState(this);
            var rollDiceState   = new FSMRollDiceState(this);
            var enterBlockState = new FSMEnterBlockState(this);
            var waitingState    = new FSMWaitingState(this);

            m_FSMManager.RegisterState("StartTurnState", startTurnState);
            m_FSMManager.RegisterState("EndTurnState", endTurnState);
            m_FSMManager.RegisterState("LeaveTurnState", leaveTurnState);
            m_FSMManager.RegisterState("JoinTurnState", joinTurnState);
            m_FSMManager.RegisterState("RollDiceState", rollDiceState);
            m_FSMManager.RegisterState("EnterBlockState", enterBlockState);
            m_FSMManager.RegisterState("WaitingState", waitingState);

            m_FSMManager.RegisterCondition("IsStartTurn", IsStartTurn);
            m_FSMManager.RegisterCondition("IsEndTurn", IsEndTurn);
            m_FSMManager.RegisterCondition("IsDeath", IsDeath);
            m_FSMManager.RegisterCondition("DidMoveToTargetBlock", DidMoveToTargetBlock);
            m_FSMManager.RegisterCondition("IsActive", GetActive);
            m_FSMManager.RegisterCondition("DidRollDice", GetRollDice);
            m_FSMManager.RegisterCondition("CanRollDice", CanRollDice);
            m_FSMManager.RegisterCondition("Did5Turn", m_GameManager.Did5Turn);
            m_FSMManager.RegisterCondition("Did10Turn", m_GameManager.Did10Turn);
            m_FSMManager.RegisterCondition("Did20Turn", m_GameManager.Did20Turn);
            m_FSMManager.RegisterCondition("Did30Turn", m_GameManager.Did30Turn);
            m_FSMManager.RegisterCondition("Did40Turn", m_GameManager.Did40Turn);
            m_FSMManager.RegisterCondition("Did50Turn", m_GameManager.Did50Turn);
        }
예제 #2
0
        protected virtual void OnRegisterFSM()
        {
            var waitingState = new FSMWaitingState(this);

            m_FSMManager.RegisterState("WaitingState", waitingState);

            m_FSMManager.RegisterCondition("IsUnderHealth", this.IsUnderHealth);
            m_FSMManager.RegisterCondition("IsActive", this.GetActive);
            m_FSMManager.RegisterCondition("DidEndWaiting", this.DidEndWaiting);
        }
        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;
        }
    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);
    }