IEnumerator CheckLinksCor() { yield return(new WaitForSeconds(0.1f)); if (!LastNodeController.CheckAllLinksStateUntouchedActive()) { PuzzleManager.Instance.ScarabGameManager.DisableNodes(); IsClickBlocked = true; ActivateFirstPersonController(false); PuzzleManager.Instance.ScarabGameManager.SetText(true); StartCoroutine(ResetPuzzleCor()); } else { PuzzleManager.Instance.ScarabGameManager.GetNeighborsOnly(LastNodeController); } }
void Update() { if (!IsClickBlocked) { if (Input.GetMouseButtonDown(0)) { if (Physics.Raycast(this.transform.position, this.transform.forward, out _hit, distance)) { if (_hit.collider.gameObject) { if ((_hit.collider.gameObject.CompareTag("Node") || _hit.collider.gameObject.CompareTag("Neighbor"))) { if (resetNodes != null) { resetNodes(); } NodeController freshNodeController = _hit.collider.gameObject.GetComponent <NodeController>(); if (LastNodeController) { if (!GameObject.ReferenceEquals(freshNodeController, LastNodeController)) { foreach (LinkController link1 in freshNodeController.links) { foreach (LinkController link2 in LastNodeController.links) { if (link1 == link2) { if (link1.LinkState == LinkState.Untouched) { LastNodeController = freshNodeController; LastNodeController.SuccessNodeSound(); LastNodeController.PlayActiveNodeParticles(); } else { LastNodeController.ForbiddenNodeSound(); } } } } } } else { LastNodeController = freshNodeController; LastNodeController.SuccessNodeSound(); LastNodeController.PlayActiveNodeParticles(); } LastNodeController.NodeActive(); LastNodeController.IsNodeClicked = true; PuzzleManager.Instance.ScarabGameManager.HighlightLink(); StartCoroutine(CheckLinksCor()); } else if (_hit.collider.gameObject.CompareTag("Untagged")) { NodeController lastNodeControllerUntagged = _hit.collider.gameObject.GetComponent <NodeController>(); if (lastNodeControllerUntagged) { lastNodeControllerUntagged.ForbiddenNodeSound(); } } } } } } }