public void VisitNodeMovement(NodeMovement nm)
 {
     if (nm.Character == null)
     {
         _report.AddMessage(ProjectReportMessage.MessageSeverity.Error, "A movement node has no assigned character.", nm);
     }
 }
Example #2
0
    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();
    }
Example #4
0
    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;
    }
Example #5
0
    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;
                }
            }
        }
Example #7
0
 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();
 }
Example #8
0
    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);
        }
    }
Example #10
0
        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);
            }
        }
Example #11
0
    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)));
        }
    }
Example #12
0
    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);
        }
    }
Example #13
0
    /**
     * 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;
    }
Example #14
0
    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);
        }
    }
Example #15
0
    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);
    }