예제 #1
0
 private void Awake()
 {
     frontState = new FrontState(this);
     backState  = new BackState(this);
     rightState = new RightState(this);
     leftState  = new LeftState(this);
 }
예제 #2
0
    private LeftState()
    {
        if (instance != null)//If an isntance of this class already exists, return
        {
            return;
        }

        instance = this;
    }
예제 #3
0
 public void ResetPos()
 {
     state   = LeftState.Idle;
     MoveDir = Vector3.zero;
     rb.ExitMove();
     rf.ExitMove();
     MyEventSystem.PushEventStatic(MyEvent.EventType.ExitMove);
     useMouse = false;
 }
예제 #4
0
        private AbstractState CreateAbstractState(Shipping m_Parent)
        {
            AbstractState _ret = null;

            switch (m_Parent.ShippingState2.GetValueOrDefault(GetDefaultValue(m_Parent)))
            {
            case ShippingState2.Cancelation:
                _ret = new CancelationState(this);
                break;

            case ShippingState2.Canceled:
                _ret = new CanceledState(this);
                break;

            case ShippingState2.Completed:
                _ret = new CompletedState(this);
                break;

            case ShippingState2.Confirmed:
                _ret = new ConfirmedState(this);
                break;

            case ShippingState2.Creation:
                _ret = new CreationState(this);
                break;

            case ShippingState2.Delayed:
                _ret = new DelayedState(this);
                break;

            case ShippingState2.LackOfData:
                _ret = new LackOfDataState(this);
                break;

            case ShippingState2.Left:
                _ret = new LeftState(this);
                break;

            case ShippingState2.Started:
                _ret = new StartedState(this);
                break;

            case ShippingState2.Waiting:
                _ret = new WaitingState(this);
                break;
            }
            return(_ret);
        }
예제 #5
0
파일: Player.cs 프로젝트: SDCGT/Product02
    void Start()
    {
        //ani = GetComponent<Animation>();

        IdleState   idle   = new IdleState(1, this);
        LeftState   left   = new LeftState(2, this);
        RightState  right  = new RightState(3, this);
        UpState     up     = new UpState(4, this);
        DownState   down   = new DownState(5, this);
        AttackState attack = new AttackState(6, this);

        machine = new StateMachine(idle);
        machine.AddState(left);
        machine.AddState(right);
        machine.AddState(up);
        machine.AddState(down);
        machine.AddState(attack);
    }
예제 #6
0
        public AbstractState makeState(string stateName, string p1, string p2, string p3, float precision, float grados, string stateType, int posState1, int posState2)
        {
            AbstractState aS;
            AbstractState aS1 = getState(posState1);
            AbstractState aS2 = getState(posState2);

            switch (stateType)
            {
            case "AND": aS = new AndState(aS1, aS2, stateName); break;

            case "ANGLE": aS = new AngleState(p1, p3, p2, grados, precision, stateName); break;

            case "CENTER_X": aS = new CenterStateX(p1, p2, precision, stateName); break;

            case "CENTER_Y": aS = new CenterStateY(p1, p2, precision, stateName); break;

            case "CENTER_Z": aS = new CenterStateZ(p1, p2, precision, stateName); break;

            case "DISTANCE": aS = new DistanceState(p1, p2, precision, stateName); break;

            case "LEFT": aS = new LeftState(p1, p2, precision, stateName); break;

            case "OR": aS = new OrState(aS1, aS2, stateName); break;

            case "OVER": aS = new OverState(p1, p2, precision, stateName); break;

            case "POSITION": aS = new PositionState(p1, precision, stateName); break;

            case "RIGHT": aS = new RightState(p1, p2, precision, stateName); break;

            case "UNDER": aS = new UnderState(p1, p2, precision, stateName); break;

            default: aS = new InvalidState(stateName); break;
            }
            return(aS);
        }
예제 #7
0
 public LeftTransition(Player _player)
 {
     player    = _player;
     nextState = new LeftState(_player);
 }
예제 #8
0
    void Update()
    {
        if (!CanProcessEvent)
        {
            return;
        }
        if (state == LeftState.Idle)
        {
            MoveDir = Vector3.zero;
#if UNITY_EDITOR || UNITY_STANDALONE
            if (Input.GetMouseButtonDown(0))
            {
                var mousePos = Input.mousePosition;
                if (mousePos.x < Screen.width / 2)
                {
                    state = LeftState.Move;
                    rb.EnterMove();
                    rf.EnterMove();
                    useMouse = true;

                    rb.SetFingerPos(mousePos);
                    rf.SetFingerPos(mousePos);

                    CalculateShootDir();
                    MyEventSystem.myEventSystem.PushEvent(MyEvent.EventType.EnterMove);
                }
            }
            else
#endif
            {
                foreach (var touch in Input.touches)
                {
                    fingerId = touch.fingerId;
                    //if (fingerId > 0 && fingerId < Input.touchCount)
                    if (touch.phase == TouchPhase.Began)
                    {
                        if (touch.position.x < Screen.width / 2)
                        {
                            state = LeftState.Move;

                            var fp = touch.position;
                            rb.EnterMove();
                            rf.EnterMove();
                            useMouse = false;
                            rb.SetFingerPos(fp);
                            rf.SetFingerPos(fp);
                            CalculateShootDir();
                            MyEventSystem.myEventSystem.PushEvent(MyEvent.EventType.EnterMove);
                            break;
                        }
                    }
                }
            }
        }
        else
        {
#if UNITY_EDITOR || UNITY_STANDALONE
            if (useMouse)
            {
                if (!Input.GetMouseButton(0))
                {
                    state = LeftState.Idle;
                    rb.ExitMove();
                    rf.ExitMove();
                    useMouse = false;
                    MyEventSystem.PushEventStatic(MyEvent.EventType.ExitMove);
                }
                else
                {
                    var mousePos = Input.mousePosition;
                    rb.SetFingerPos(mousePos);
                    rf.SetFingerPos(mousePos);
                    CalculateShootDir();
                }
            }
            else
#endif
            {
                var   find     = false;
                Touch touch    = new Touch();
                var   getTouch = false;
                foreach (var t in Input.touches)
                {
                    if (t.fingerId == fingerId)
                    {
                        touch    = t;
                        getTouch = true;
                        break;
                    }
                }

                if (getTouch)
                {
                    var phase = touch.phase;
                    find = phase == TouchPhase.Ended || phase == TouchPhase.Canceled;
                }
                else
                {
                    find = true;
                }

                if (find)
                {
                    state = LeftState.Idle;
                    rb.ExitMove();
                    rf.ExitMove();
                    MyEventSystem.PushEventStatic(MyEvent.EventType.ExitMove);
                }
                else
                {
                    var pos = touch.position;
                    rb.SetFingerPos(pos);
                    rf.SetFingerPos(pos);
                    CalculateShootDir();
                }
            }
        }
    }