protected virtual void SelectObject(SelectableObject.SelectableObjectType newSelection) { ClearSelectedObject(); selectedObject = newSelection; ApplicationManager.s_instance.SetSpecialMouseMode((int)ApplicationManager.SpecialCursorMode.ClosedHand); }
public virtual void ClearSelectedObject( ) { if (selectedObject == SelectableObject.SelectableObjectType.None) { return; } selectedObject = SelectableObject.SelectableObjectType.None; ApplicationManager.s_instance.SetSpecialMouseMode((int)ApplicationManager.SpecialCursorMode.None); }
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); } }
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; } }
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; } }
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; } }