コード例 #1
0
ファイル: Lever.cs プロジェクト: lshwayne96/5ive
        public override void RestoreWith(State state)
        {
            LeverState leverState = (LeverState)state;

            leverState.RebuildCompoundTypes();

            startRotation         = leverState.prevStartRotation;
            EndRotation           = leverState.prevEndRotation;
            OriginalStartRotation = leverState.originalStartRotation;
            OriginalEndRotation   = leverState.originalEndRotation;
            MovementDirection     = leverState.movementDirection;
            HasSwitchedRotation   = leverState.hasSwitchedRotation;
            IsRotating            = leverState.isRotating;
            hasInitialised        = true;

            if (IsRotating)
            {
                toResumeRotation = true;
            }

            if (HasSwitchedRotation)
            {
                SwitchRotation();
            }
        }
コード例 #2
0
 public void ResetOne()
 {
     if (reset_on_dead)
     {
         state = start_state;
     }
 }
コード例 #3
0
ファイル: Lever.cs プロジェクト: tomfulghum/Pandemic
    //*******************************//
    //    MonoBehaviour Functions    //
    //*******************************//

    private void Awake()
    {
        m_state           = new LeverState();
        m_interactable    = GetComponent <Interactable>();
        m_anim            = GetComponent <Animator>();
        m_animParamPulled = Animator.StringToHash("Pulled");
    }
コード例 #4
0
        private IEnumerator SwithLever(LeverState state)
        {
            if ((dungeonGate.gateState != DungeonGateController.GateState.Closing && dungeonGate.gateState != DungeonGateController.GateState.Opening))
            {
                switch (state)
                {
                case LeverState.Up:
                    leverAnim.Play("lever_up", PlayMode.StopAll);
                    break;

                case LeverState.Down:
                    leverAnim.Play("lever_down", PlayMode.StopAll);
                    break;
                }

                while (leverAnim.isPlaying)
                {
                    yield return(new WaitForEndOfFrame());
                }

                leverState = state;

                if (state == LeverState.Down)
                {
                    dungeonGate.ChangeState(DungeonGateController.GateState.Opening);
                }
                else
                {
                    dungeonGate.ChangeState(DungeonGateController.GateState.Closing);
                }
            }
        }
コード例 #5
0
ファイル: Lever.cs プロジェクト: tomfulghum/Pandemic
 public void SetState(LeverState _state)
 {
     m_state = _state;
     if (m_state.used)
     {
         m_interactable.SimulateInteraction();
     }
 }
コード例 #6
0
        void Update()
        {
            timer += Time.deltaTime;

            if (state != prev_state)
            {
                ChangeSprite();
                prev_state = state;
            }
        }
コード例 #7
0
ファイル: Lever.cs プロジェクト: CaptainSpaceCat/Apparition
    public LeverState state = LeverState.OFF;      //public for testing purposes.

    public void pressLever()
    {
        //TODO cue animation here

        if (state == LeverState.OFF)
        {
            state = LeverState.ON;
            transform.Rotate(direction);
        }
        else
        {
            state = LeverState.OFF;
            transform.Rotate(-direction);
        }
    }
コード例 #8
0
    public void TurnLever()
    {
        if (currentLeverState == LeverState.Left && isSingleUse)
        {
            if (OnLeverTurnRight != null)
            {
                OnLeverTurnRight(LeverID);
            }

            //Debug.Log("Lever " + LeverID + " turned Right and broke!");

            //  Animation
            animator.SetTrigger(turnLeverRightTriggerHash);

            Destroy(this);
        }
        else if (currentLeverState == LeverState.Left)
        {
            if (OnLeverTurnRight != null)
            {
                OnLeverTurnRight(LeverID);
            }

            currentLeverState = LeverState.Right;

            //  Animation
            animator.SetTrigger(turnLeverRightTriggerHash);

            //Debug.Log("Lever " + LeverID + " turned Right!");
        }
        else
        {
            if (OnLeverTurnLeft != null)
            {
                OnLeverTurnLeft(LeverID);
            }

            currentLeverState = LeverState.Left;

            //  Animation
            animator.SetTrigger(turnLeverLeftTriggerHash);
            //Debug.Log("Lever " + LeverID + " turned Left!");
        }

        //  Audio
        audioSrc.pitch = Random.Range(0.8f, 1.2f);
        audioSrc.PlayOneShot(leverTurnAudio);
    }
コード例 #9
0
        public void Activate()
        {
            //Can't activate twice very fast
            if (timer < 0f)
            {
                return;
            }

            if (!no_return || state == start_state)
            {
                timer = -0.8f;

                //Change state
                if (state == LeverState.left)
                {
                    state = (can_be_center) ? LeverState.center : LeverState.right;
                }
                else if (state == LeverState.center)
                {
                    state = LeverState.right;
                }
                else if (state == LeverState.right)
                {
                    state = LeverState.left;
                }

                //Audio
                GetComponent <AudioSource>().Play();

                //Trigger
                if (OnTriggerLever != null)
                {
                    OnTriggerLever.Invoke();
                }
            }
        }
コード例 #10
0
        public void Activate()
        {
            //Can't activate twice very fast
            if (timer < 0f)
            {
                return;
            }

            if (!no_return || state == start_state)
            {
                timer = -0.8f;

                //Change state
                if (state == LeverState.left)
                {
                    state = (can_be_center) ? LeverState.center : LeverState.right;
                }
                else if (state == LeverState.center)
                {
                    state = LeverState.right;
                }
                else if (state == LeverState.right)
                {
                    state = LeverState.left;
                }

                //Audio
                TheAudio.Play("lever", activate_sound, 0.5f);

                //Trigger
                if (OnTriggerLever != null)
                {
                    OnTriggerLever.Invoke();
                }
            }
        }
コード例 #11
0
 public void Interact()
 {
     if (CurrentState == LeverState.ON)
     {
         CurrentState = LeverState.Middle;
         onandoff     = false;
     }
     else if (CurrentState == LeverState.OFF)
     {
         CurrentState = LeverState.Middle;
         onandoff     = true;
     }
     else
     {
         if (onandoff == true)
         {
             CurrentState = LeverState.ON;
         }
         else
         {
             CurrentState = LeverState.OFF;
         }
     }
 }
コード例 #12
0
 void Start()
 {
     start_state = state;
     prev_state  = state;
     ChangeSprite();
 }
コード例 #13
0
ファイル: DoorGUIRenderer.cs プロジェクト: Baensi/Assets
 public string stateToString(LeverState state)
 {
     switch (state) {
         case LeverState.State1: return Dictionary.LEVER_STATE1_TEXT;
         case LeverState.State2: return Dictionary.LEVER_STATE2_TEXT;
     }
     return "";
 }
コード例 #14
0
ファイル: DoorPushLever.cs プロジェクト: Baensi/Assets
        public void OnUpdate()
        {
            // Режим в эдиторе
            #if UNITY_EDITOR
            OnStart();
            #endif

            int directionValue = direction == AnimationDirection.DirectionPositive ? 1 : -1;

            switch (state) {
                case LeverState.State1:

                    animator.update(this.gameObject, state1Angles, directionValue, speed);

                    if (turnLever && animator.isComplete(this.gameObject, state1Angles, directionValue, speed)) {
                        door.openDoor();
                        turnLever = false;
                    }

                    break;
                case LeverState.State2:

                    animator.update(this.gameObject, state2Angles, directionValue, speed);

                    if (turnLever && animator.isComplete(this.gameObject, state2Angles, directionValue, speed)) {
                        door.closeDoor();
                        turnLever = false;
                    }

                    break;
            }

            if (prevState != state)
                turnLever = true;

            prevState = state;
        }
コード例 #15
0
ファイル: DoorPushLever.cs プロジェクト: Baensi/Assets
        public void leverState2()
        {
            if (state == LeverState.State2 || !mayBeState1ToState2) return;

            prevState = state;
            state = LeverState.State2;

            #if UNITY_EDITOR
            if (audioSource == null) return;
            #endif

            audioSource.clip = sound.leverState2Sound();
            audioSource.Play();
        }