コード例 #1
0
    protected virtual void SelectObject(SelectableObject.SelectableObjectType newSelection)
    {
        ClearSelectedObject();

        selectedObject = newSelection;
        ApplicationManager.s_instance.SetSpecialMouseMode((int)ApplicationManager.SpecialCursorMode.ClosedHand);
    }
コード例 #2
0
    public virtual void ClearSelectedObject( )
    {
        if (selectedObject == SelectableObject.SelectableObjectType.None)
        {
            return;
        }

        selectedObject = SelectableObject.SelectableObjectType.None;
        ApplicationManager.s_instance.SetSpecialMouseMode((int)ApplicationManager.SpecialCursorMode.None);
    }
コード例 #3
0
    protected virtual void Init()
    {
        moduleSteps    = GetComponentsInChildren <BasePracticeModuleStep>();
        selectedObject = SelectableObject.SelectableObjectType.None;

        if (moduleSteps == null || moduleSteps.Length == 0)
        {
            Debug.LogWarning("Could not find any children under BaseAcquireModule named: " + gameObject.name);
        }
    }
コード例 #4
0
    public override void HoveredOverObject(SelectableObject obj)
    {
        // We didn't hover over anything
        if (obj == null)
        {
            // If we're still holding something then change to closed hand
            if (selectedObject != SelectableObject.SelectableObjectType.None)
            {
                ApplicationManager.s_instance.SetSpecialMouseMode((int)ApplicationManager.SpecialCursorMode.ClosedHand);
            }
            else
            {
                // Set the special cursor mode in the Application Manager to None if it isn't already that.
                if (ApplicationManager.s_instance.currentSpecialCursorMode != ApplicationManager.SpecialCursorMode.None)
                {
                    ApplicationManager.s_instance.SetSpecialMouseMode((int)ApplicationManager.SpecialCursorMode.None);
                }
            }
            return;
        }

        SelectableObject.SelectableObjectType hoveredObjectType = obj.objectType;

        switch (hoveredObjectType)
        {
        case SelectableObject.SelectableObjectType.CalibrationWeight:
            if (selectedObject == SelectableObject.SelectableObjectType.None && ApplicationManager.s_instance.currentMouseMode == ApplicationManager.MouseMode.Forceps)
            {
                ApplicationManager.s_instance.SetSpecialMouseMode((int)ApplicationManager.SpecialCursorMode.OpenHand);
            }
            break;

        case SelectableObject.SelectableObjectType.RiceContainer:
            if (selectedObject == SelectableObject.SelectableObjectType.None && ApplicationManager.s_instance.currentMouseMode == ApplicationManager.MouseMode.Pointer)
            {
                ApplicationManager.s_instance.SetSpecialMouseMode((int)ApplicationManager.SpecialCursorMode.OpenHand);
            }
            break;

        case SelectableObject.SelectableObjectType.WeighContainer:
            if (selectedObject == SelectableObject.SelectableObjectType.None && ApplicationManager.s_instance.currentMouseMode == ApplicationManager.MouseMode.Pointer)
            {
                ApplicationManager.s_instance.SetSpecialMouseMode((int)ApplicationManager.SpecialCursorMode.OpenHand);
            }
            else if (selectedObject == SelectableObject.SelectableObjectType.RiceContainer)
            {
                ApplicationManager.s_instance.SetSpecialMouseMode((int)ApplicationManager.SpecialCursorMode.PointingHand);
            }
            break;

        case SelectableObject.SelectableObjectType.WeighPan:
            if ((selectedObject == SelectableObject.SelectableObjectType.CalibrationWeight && ApplicationManager.s_instance.currentMouseMode == ApplicationManager.MouseMode.Forceps) ||
                selectedObject == SelectableObject.SelectableObjectType.WeighContainer && ApplicationManager.s_instance.currentMouseMode == ApplicationManager.MouseMode.Pointer)
            {
                ApplicationManager.s_instance.SetSpecialMouseMode((int)ApplicationManager.SpecialCursorMode.PointingHand);
            }
            break;

        case SelectableObject.SelectableObjectType.RightDoor:
            if (ApplicationManager.s_instance.currentMouseMode == ApplicationManager.MouseMode.Pointer && selectedObject == SelectableObject.SelectableObjectType.None)
            {
                ApplicationManager.s_instance.SetSpecialMouseMode((int)ApplicationManager.SpecialCursorMode.PointingHand);
            }
            break;

        case SelectableObject.SelectableObjectType.OnButton:
        case SelectableObject.SelectableObjectType.TareButton:
            if (!toggles[(int)PCToggles.FocusedOnBalanceFace])
            {
                break;
            }

            if (ApplicationManager.s_instance.currentMouseMode == ApplicationManager.MouseMode.Pointer && selectedObject == SelectableObject.SelectableObjectType.None)
            {
                ApplicationManager.s_instance.SetSpecialMouseMode((int)ApplicationManager.SpecialCursorMode.PointingHand);
            }
            break;
        }
    }
コード例 #5
0
    public override void ClickedOnObject(SelectableObject clickedOnObject, bool usedForceps)
    {
        SelectableObject.SelectableObjectType clickedObjectType = clickedOnObject.objectType;

        switch (clickedObjectType)
        {
        case SelectableObject.SelectableObjectType.CalibrationWeight:
            if (!usedForceps)
            {
                PracticeManager.s_instance.PressedHintButton();
                PracticeManager.s_instance.numMistakes++;
                return;
            }
            // If we aren't holding an object when we click the weight, make it our selected object.
            if (PracticeCalibrateBalanceManager.s_instance.selectedObject == SelectableObject.SelectableObjectType.None)
            {
                // Toggle on highlights
                if (toggles[(int)PCToggles.WeightInside])
                {
                    toggles[(int)PCToggles.WeightInside] = false;
                    weightInside.SetActive(false);
                    toggles[(int)PCToggles.WeightOutside] = true;
                    weightOutside.SetActive(true);
                }
                else if (toggles[(int)PCToggles.WeightOutside] || toggles[(int)PCToggles.CalibrationModeOn])
                {
                    SelectObject(SelectableObject.SelectableObjectType.CalibrationWeight);
                }
            }
            break;

        case SelectableObject.SelectableObjectType.TareButton:
            if (usedForceps || !toggles[(int)PCToggles.FocusedOnBalanceFace])
            {
                return;
            }
            if (toggles[(int)PCToggles.FocusedOnBalanceFace] && !toggles[(int)PCToggles.BalanceCalibrated])
            {
                ReadoutDisplay.s_instance.PlayCalibrationModeAnimation();
            }
            else
            {
                PracticeManager.s_instance.PressedHintButton();
                PracticeManager.s_instance.numMistakes++;
            }
            break;

        case SelectableObject.SelectableObjectType.OnButton:
            if (usedForceps || !toggles[(int)PCToggles.FocusedOnBalanceFace])
            {
                return;
            }
            if (toggles[(int)PCToggles.FocusedOnBalanceFace])
            {
                toggles[(int)PCToggles.BalanceOn] = true;
                ReadoutDisplay.s_instance.TurnBalanceOn();
            }
            else
            {
                PracticeManager.s_instance.PressedHintButton();
                PracticeManager.s_instance.numMistakes++;
            }
            break;

        case SelectableObject.SelectableObjectType.RightDoor:
            if (usedForceps)
            {
                return;
            }
            // Check what state the animation is in and toggle on the opposite since we're going to transition animations after.
            UpdateDoorTogglesBasedOnAnimationState(true);

            ReadoutDisplay.s_instance.doorsAreOpen = toggles[(int)PCToggles.RDoorOpen];            // newDoorOpenValue;
            rightGlassDoor.GetComponent <Animator>().SetTrigger("Clicked");
            SoundtrackManager.s_instance.PlayAudioSource(SoundtrackManager.s_instance.slidingDoor);
            break;

        case SelectableObject.SelectableObjectType.WeighPan:
            // If we're holding the calibration weight when clicking the weigh pan, place the weight.
            if (PracticeCalibrateBalanceManager.s_instance.selectedObject == SelectableObject.SelectableObjectType.CalibrationWeight && toggles[(int)PCToggles.BalanceOn] && toggles[(int)PCToggles.CalibrationModeOn])
            {
                toggles[(int)PCToggles.WeightInside] = true;
                weightInside.SetActive(true);
                toggles[(int)PCToggles.WeightOutside] = false;
                weightOutside.SetActive(false);
                ClearSelectedObject();
            }
            else
            {
                PracticeManager.s_instance.PressedHintButton();
                PracticeManager.s_instance.numMistakes++;
            }
            break;
        }
    }
コード例 #6
0
    public override void ClickedOnObject(SelectableObject clickedOnObject, bool usedForceps)
    {
        SelectableObject.SelectableObjectType clickedObjectType = clickedOnObject.objectType;

        switch (clickedObjectType)
        {
        case SelectableObject.SelectableObjectType.TareButton:
            if (usedForceps || !toggles[(int)PUToggles.FocusedOnBalanceFace])
            {
                return;
            }
            if (toggles[(int)PUToggles.WeightContainerInside] && !toggles[(int)PUToggles.RDoorOpen])
            {
                ReadoutDisplay.s_instance.ZeroOut();
                toggles[(int)PUToggles.BalanceTared] = true;
                SoundtrackManager.s_instance.PlayAudioSource(SoundtrackManager.s_instance.buttonBeep);
            }
            else
            {
                PracticeManager.s_instance.PressedHintButton();
                PracticeManager.s_instance.numMistakes++;
            }
            break;

        case SelectableObject.SelectableObjectType.RiceContainer:
            if (usedForceps || toggles[(int)PUToggles.WeighContainerFilled] || !toggles[(int)PUToggles.WeightContainerInside])
            {
                return;
            }
            // If we aren't holding an object when we click the weight, make it our selected object.
            if (selectedObject == SelectableObject.SelectableObjectType.None)
            {
                SelectObject(SelectableObject.SelectableObjectType.RiceContainer);
            }
            else
            {
                PracticeManager.s_instance.PressedHintButton();
                PracticeManager.s_instance.numMistakes++;
            }
            break;

        case SelectableObject.SelectableObjectType.RightDoor:
            if (usedForceps)
            {
                return;
            }
            // Check what state the animation is in and toggle on the opposite since we're going to transition animations after.
            UpdateDoorTogglesBasedOnAnimationState(true);

            ReadoutDisplay.s_instance.doorsAreOpen = toggles[(int)PUToggles.RDoorOpen];            // newDoorOpenValue;
            rightGlassDoor.GetComponent <Animator>().SetTrigger("Clicked");
            SoundtrackManager.s_instance.PlayAudioSource(SoundtrackManager.s_instance.slidingDoor);
            break;

        case SelectableObject.SelectableObjectType.WeighContainer:
            if (toggles[(int)PUToggles.WeightContainerInside] && PracticeUseBalanceManager.s_instance.selectedObject == SelectableObject.SelectableObjectType.RiceContainer)
            {
                if (toggles[(int)PUToggles.WeighContainerFilled])
                {
                    return;
                }

                StartCoroutine(PourRice());
            }
            // It can only be selected if balance has been calibrated
            else if (toggles[(int)PUToggles.WeighContainerOutside] && selectedObject == SelectableObject.SelectableObjectType.None)
            {
                SelectObject(SelectableObject.SelectableObjectType.WeighContainer);
            }
            else
            {
                PracticeManager.s_instance.PressedHintButton();
                PracticeManager.s_instance.numMistakes++;
            }
            break;

        case SelectableObject.SelectableObjectType.WeighPan:
            // If we're holding the calibration weight when clicking the weigh pan, place the weight.
            if (!toggles[(int)PUToggles.WeightContainerInside] && selectedObject == SelectableObject.SelectableObjectType.WeighContainer)
            {
                weighContainerOutside.SetActive(false);
                toggles[(int)PUToggles.WeighContainerOutside] = false;
                weighContainerInside.SetActive(true);
                toggles[(int)PUToggles.WeightContainerInside] = true;
                ClearSelectedObject();
                ReadoutDisplay.s_instance.readoutNumberText.text = "9.7306";
            }
            else
            {
                PracticeManager.s_instance.PressedHintButton();
                PracticeManager.s_instance.numMistakes++;
            }
            break;
        }
    }