Esempio n. 1
0
    public void Update()
    {
        stateDict[currentState].Update();
        eUnitState newState = stateDict[currentState].Evaluate();

        if (newState != currentState)
        {
            stateDict[currentState].Exit();
            currentState = newState;
            stateDict[currentState].Enter();
        }
    }
    public void switchToState(eUnitState newState, int targetID = Utilities.INVALID_ID, Vector3 position = new Vector3())
    {
        m_targetID     = targetID;
        m_currentState = newState;

        switch (newState)
        {
        case eUnitState.AwaitingDecision:
        case eUnitState.AttackingEnemy:
            m_tankMovement.stop();
            break;

        case eUnitState.MovingToNewPosition:
            m_tankMovement.moveTo(position);
            break;

        case eUnitState.SetDestination:
        {
            m_currentState = eUnitState.MovingToNewPosition;
            m_tankMovement.moveTo(position);
        }
        break;

        case eUnitState.SetAttackDestination:
        {
            m_currentState = eUnitState.AttackMovingToNewPosition;
            m_tankMovement.moveTo(position);
        }
        break;

        case eUnitState.SetDestinationToSafePosition:
        {
            m_tankMovement.moveTo(Pathfinder.Instance.getSafePosition(transform.position, (int)m_unit.getFactionName(), m_unit.getScaredValue()));
            m_currentState = eUnitState.MovingToNewPosition;
        }
        break;
        }
    }
Esempio n. 3
0
 public StateMachine(eUnitState currentState, Dictionary <eUnitState, BaseState> stateDict)
 {
     this.currentState = currentState;
     this.stateDict    = stateDict;
 }
Esempio n. 4
0
 public Transition(eUnitState toState, List <MyDelegate> list, Enemy enemy)
 {
     this.toState = toState;
     this.list    = list;
     this.enemy   = enemy;
 }
Esempio n. 5
0
 public BaseState(Enemy e, List <Transition> list, eUnitState state)
 {
     this.enemy = e;
     this.list  = list;
     this.state = state;
 }
Esempio n. 6
0
    public void StateChange(eUnitState state)
    {
        if (unitState != state)
        {
            switch (unitState)
            {
            case eUnitState.Standby:
                break;

            case eUnitState.Move:
                StopCoroutine("Move");
                break;

            case eUnitState.Atk:
                StopCoroutine("Attack");
                break;

            case eUnitState.Build:
                StopCoroutine("Attack");
                break;

            case eUnitState.Work:
                Renderer[] rl = transform.GetComponentsInChildren <Renderer>();
                foreach (Renderer r in rl)
                {
                    r.enabled = true;
                }
                Collider[] cl = transform.GetComponentsInChildren <Collider>();
                foreach (Collider c in cl)
                {
                    c.enabled = true;
                }
                Target.OnTargetEnable();
                break;
            }
            unitState = state;
            switch (state)
            {
            case eUnitState.Standby:
                ani.Play("StandAni");
                break;

            case eUnitState.Move:
                ani.Play("WalkAni");
                break;

            case eUnitState.Atk:
                StartCoroutine("Attack");
                break;

            case eUnitState.Build:
                StartCoroutine("Attack");
                break;

            case eUnitState.Dead:
                StopAllCoroutines();
                StartCoroutine("Dead");
                break;

            case eUnitState.Work:
                Renderer[] rl = transform.GetComponentsInChildren <Renderer>();
                foreach (Renderer r in rl)
                {
                    r.enabled = false;
                }
                Collider[] cl = transform.GetComponentsInChildren <Collider>();
                foreach (Collider c in cl)
                {
                    c.enabled = false;
                }
                Target.OnTargetDisable();
                break;
            }
        }
    }