public void VisitNodeMovement(NodeMovement nm) { if (nm.Character == null) { _report.AddMessage(ProjectReportMessage.MessageSeverity.Error, "A movement node has no assigned character.", nm); } }
public void PacmanCollide(Collider2D _pacman) { NodeMovement pacmanMovement = _pacman.GetComponent <NodeMovement>(); _pacman.transform.position = m_target.transform.position; pacmanMovement.m_previous = m_target; pacmanMovement.m_next = m_target.GetNextAt(pacmanMovement.GetDirection()); }
void Advance() { if(playerNodeMovement == null) { playerNodeMovement = GameObject.FindGameObjectWithTag("Player").GetComponent<NodeMovement>(); } playerNodeMovement.MoveToNextNode(); }
private void Awake() { // mySnake = (GameObject) Instantiate(mySnake,transform.position,Quaternion.identity); // mySnake.name = "BlueHead"; txtScore = GameObject.FindGameObjectWithTag("Score").GetComponent <Text>(); NodeMovement.SetSpeed(5f); SnakeHeadController.SetSpeed(5f); score = 0; health = 3; }
IEnumerator Slowly(float _delay) { NodeMovement.SetSpeed(2f); SnakeHeadController.SetSpeed(2f); yield return(new WaitForSeconds(_delay)); NodeMovement.SetSpeed(OldSpeed); SnakeHeadController.SetSpeed(OldSpeed); Destroy(gameObject); }
public void VisitNodeMovement(NodeMovement nm) { UsedCharacters.Add(nm.Character); if (OutputState.Characters.ContainsKey(nm.MovementDirection)) // Operating on current module characters { switch (nm.MovementType) { case NodeMovement.MovementTypeEnum.Enter: if (OutputState.Characters.ContainsKey(nm.MovementDirection) && OutputState.Characters[nm.MovementDirection] != null) { Report.AddMessage(ProjectReportMessage.MessageSeverity.Error, "A movement node is adding a character to an occupied location.", nm); } if (OutputState.Characters.ContainsValue(nm.Character)) { Report.AddMessage(ProjectReportMessage.MessageSeverity.Error, "A movement node is adding a character that is already in the scene.", nm); } else { OutputState.Characters[nm.MovementDirection] = nm.Character; } break; case NodeMovement.MovementTypeEnum.Exit: if (!OutputState.Characters.ContainsKey(nm.MovementDirection) || OutputState.Characters[nm.MovementDirection] == null) { Report.AddMessage(ProjectReportMessage.MessageSeverity.Error, "Movement node is removing character from side with no present characters.", nm); } else if (OutputState.Characters[nm.MovementDirection] != nm.Character) { Report.AddMessage(ProjectReportMessage.MessageSeverity.Error, "A movement node is removing a character from the wrong side or another character overwrote it.", nm); } else { OutputState.Characters[nm.MovementDirection] = null; } break; } } else // Operating on caller characters { switch (nm.MovementType) { case NodeMovement.MovementTypeEnum.Enter: InputState.Characters[nm.MovementDirection] = null; OutputState.Characters[nm.MovementDirection] = nm.Character; break; case NodeMovement.MovementTypeEnum.Exit: InputState.Characters[nm.MovementDirection] = nm.Character; OutputState.Characters[nm.MovementDirection] = null; break; } } }
public void VisitNodeMovement(NodeMovement nm) { _writer.WriteStartElement("NodeMovement"); _writer.WriteAttributeString("Direction", nm.MovementDirection.ToString()); _writer.WriteAttributeString("Type", nm.MovementType.ToString()); _writer.WriteAttributeString("Animation", nm.MovementAnimation.ToString()); if (nm.Character != null) { _writer.WriteAttributeString("Character", _projectService.Characters.IndexOf(nm.Character).ToString()); } _writer.WriteEndElement(); }
public static void SetAddScore(int addScore) { score += addScore; txtScore.text = score.ToString(); PlayerPrefs.SetInt("Score", score); if (score % 1000 == 0) { NodeMovement.SetAddSpeed(1f); SnakeHeadController.SetAddSpeed(1f); } }
void Update() { if (transform.childCount <= 0) { if (playerNodeMovement == null) playerNodeMovement = GameObject.FindGameObjectWithTag ("Player").GetComponent<NodeMovement> (); if (gameObject.tag == "Left") playerNodeMovement.MoveToAltNode (); else playerNodeMovement.MoveToNextNode (); Destroy (gameObject); } }
public void VisitNodeMovement(NodeMovement nm) { UsedCharacters.Add(nm.Character); switch (nm.MovementType) { case NodeMovement.MovementTypeEnum.Exit: if (!PresentCharacters.Contains(nm.Character)) { Report.AddMessage(ProjectReportMessage.MessageSeverity.Error, "A movement node is removing a character that is not in the scene.", nm); } else { PresentCharacters.Remove(nm.Character); } if (!PresentCharactersSide.ContainsKey(nm.MovementDirection) || PresentCharactersSide[nm.MovementDirection] != nm.Character) { Report.AddMessage(ProjectReportMessage.MessageSeverity.Error, "A movement node is removing a character from the wrong side or another character overwrote it.", nm); } else { PresentCharactersSide.Remove(nm.MovementDirection); } break; case NodeMovement.MovementTypeEnum.Enter: if (PresentCharacters.Contains(nm.Character)) { Report.AddMessage(ProjectReportMessage.MessageSeverity.Error, "A movement node is adding a character that is already in the scene.", nm); } else { PresentCharacters.Add(nm.Character); } if (PresentCharactersSide.ContainsKey(nm.MovementDirection)) { Report.AddMessage(ProjectReportMessage.MessageSeverity.Error, "A movement node is adding a character to an occupied location.", nm); } else { PresentCharactersSide.Add(nm.MovementDirection, nm.Character); } break; default: throw new ArgumentOutOfRangeException(nameof(nm.MovementType), nm.MovementType, null); } }
void OnTriggerEnter(Collider other) { if (other.CompareTag("SnakeHead")) { _audioEat.Play(); OldSpeed = NodeMovement.GetSpeed(); transform.position = Vector3.down * 2; GameManager.SetAddScore(-50); StartCoroutine(Slowly(Random.Range(0.5f, 4f))); } }
void OnTriggerEnter(Collider other) { if (other.CompareTag("SnakeHead")) { _audioEat.Play(); transform.position = Vector3.down * 2; NodeMovement.SetAddSpeed(0.5f); SnakeHeadController.SetAddSpeed(0.5f); GameManager.SetAddScore(-100); Destroy(gameObject, _audioEat.clip.length); } }
/** * Drag a playable item onto the scene by destroying the GUI item itself and creating a game object * **/ public void DragOntoScene() { //create a cloned game object Vector2 guiNodePosition = this.GetComponent <RectTransform>().anchoredPosition; Vector3 clonedNodePosition = CoordinatesUtils.SharedInstance.GetScreenCoordinatesInWorldPoint(guiNodePosition); clonedNodePosition.z = NodeProperties.NODE_Z_VALUE; GameObject clonedNode = (GameObject)Instantiate(m_simpleNodePrefab, clonedNodePosition, Quaternion.identity); NodeProperties clonedNodeBehaviour = clonedNode.GetComponent <NodeProperties>(); clonedNodeBehaviour.m_nodeType = NodeProperties.NodeType.Simple; NodeMovement clonedNodeMovement = clonedNode.GetComponent <NodeMovement>(); clonedNodeMovement.m_movementPoints = this.GetComponent <NodeMovement>().m_movementPoints; //deactivate the gui element this.gameObject.SetActive(false); clonedNodeBehaviour.m_deactivatedGUIItem = this.gameObject; }
public void TryToSpawnfly(Node spawnNode) { GameObject flyPicked = null; //find a fly that is not active for (int i = 0; i < AllFlys.Length; i++) { NodeMovement.MoveState flyState = AllFlys[i].GetComponent <NodeMovement>().getState(); if (flyState == NodeMovement.MoveState.none) { //try to spawn the fly flyPicked = AllFlys[i]; break; } } if (flyPicked != null) { NodeMovement flyMoveNode = flyPicked.GetComponent <NodeMovement>(); flyPicked.transform.position = spawnNode.transform.position; flyMoveNode.currentNode = spawnNode; flyMoveNode.setState(NodeMovement.MoveState.toFood); } }
protected override bool OnPointerMove(Vector2 pointerLocation, ref Vector2 delta) { if (!base.OnPointerMove(pointerLocation, ref delta)) { return(false); } NodeProperties nodeBehaviour = this.GetComponent <NodeProperties>(); NodeMovement nodeMovement = this.GetComponent <NodeMovement>(); if (nodeBehaviour.m_nodeType == NodeProperties.NodeType.Simple) //SIMPLE NODES { if (m_attachedAnchor == null) //node can move freely (i.e it has been dragged from GUI item list) { SnapToClosestAnchor(); if (m_snappedAnchor != null) { TryToUnsnap(); } else { Vector3 deltaVec3 = delta; this.transform.position += deltaVec3; } } else { if (nodeMovement.m_movementPoints > 0 && m_targetIndicatorNode == null) { //instantiate a special node that will serve as a indicator that can snap on neighbouring reachable anchors Vector3 targetIndicatorPosition = transform.position; targetIndicatorPosition.z = NodeProperties.TARGET_ANCHOR_NODE_Z_VALUE; m_targetIndicatorNode = (GameObject)Instantiate(m_targetIndicatorNodePrefab, targetIndicatorPosition, Quaternion.identity); m_targetIndicatorNode.GetComponent <NodeProperties>().m_nodeType = NodeProperties.NodeType.TargetIndicator; m_targetIndicatorNode.GetComponent <NodeTouchHandler>().m_attachedAnchor = this.m_attachedAnchor; m_targetIndicatorNode.GetComponent <NodeTouchHandler>().m_parentNode = this.gameObject; GameObject targetIndicatorBridge = (GameObject)Instantiate(m_targetIndicatorBridgePrefab); targetIndicatorBridge.GetComponent <Bridge>().m_type = Bridge.BridgeType.TargetIndicator; targetIndicatorBridge.GetComponent <Bridge>().m_startPoint = targetIndicatorPosition; targetIndicatorBridge.GetComponent <Bridge>().m_endPoint = targetIndicatorPosition; this.m_targetIndicatorBridge = targetIndicatorBridge; } } } else if (nodeBehaviour.m_nodeType == NodeProperties.NodeType.TargetIndicator) { FindTargetAnchor(); Vector2 attachedAnchorToMouseDirection = CoordinatesUtils.SharedInstance.GetMousePositionInWorldCoordinates() - m_attachedAnchor.m_position; Vector2 attachedAnchorToTargetAnchorDirection = m_targetAnchor.m_position - m_attachedAnchor.m_position; float fDistanceToTargetAnchor = attachedAnchorToTargetAnchorDirection.magnitude; attachedAnchorToTargetAnchorDirection.Normalize(); //Project the first vector on the second one float fProjectionLength = Vector2.Dot(attachedAnchorToMouseDirection, attachedAnchorToTargetAnchorDirection); if (fProjectionLength <= fDistanceToTargetAnchor) { bool bMoveTargetIndicator = false; if (m_snappedAnchor != null) { TryToUnsnap(); if (m_snappedAnchor == null) //unsnap succeeded { bMoveTargetIndicator = true; } } else { Vector3 oldPosition = transform.position; if (SnapToClosestAnchor()) { if (m_snappedAnchor == m_targetAnchor) { fProjectionLength = fDistanceToTargetAnchor; } else if (m_snappedAnchor == m_attachedAnchor) //remove the SnapToClosestAnchor effect by resetting the previous position and m_snappedAnchor to null { transform.position = oldPosition; m_snappedAnchor = null; } } bMoveTargetIndicator = true; } if (bMoveTargetIndicator) { //set the new position of target indicator node float targetIndicatorNodeZValue = transform.position.z; transform.position = m_attachedAnchor.m_position + attachedAnchorToTargetAnchorDirection * fProjectionLength; transform.position = new Vector3(transform.position.x, transform.position.y, targetIndicatorNodeZValue); //update the endpoint of the target indicator bridge m_parentNode.GetComponent <NodeTouchHandler>().m_targetIndicatorBridge.GetComponent <Bridge>().m_endPoint = transform.position; } } } return(true); }