示例#1
0
    public void TryHit(SongProfiler.PlayerNumber playerNumber)
    {
        /*
         * // Show the indicator for a bit
         * if (indicatorRoutine != null)
         * {
         *  StopCoroutine(indicatorRoutine);
         * }
         *
         * indicatorRoutine = HideIndicator();
         * StartCoroutine(indicatorRoutine);
         * GetComponent<SpriteRenderer>().enabled = true;
         */

        // Try and hit overlapping Notes
        List <Collider2D> overlappingColliders = new List <Collider2D>();

        GetComponent <Collider2D>().OverlapCollider(new ContactFilter2D(), overlappingColliders);

        bool found = false;

        foreach (Collider2D collider in overlappingColliders)
        {
            SockNote note = collider.gameObject.GetComponent <SockNote>();
            if (note != null && note.hittable)
            {
                note.Hit(playerNumber);
                found = true;
            }
        }
        if (!found)
        {
            _playerMovement.UpdateScore(-1);
        }
    }
示例#2
0
    // Get the first sock of a Player
    public Sock PopPlayerSock(SongProfiler.PlayerNumber playerNumber)
    {
        Sock sock = null;

        if (playerNumber == SongProfiler.PlayerNumber.Player1)
        {
            if (playerOneSocks.playerQueue.Count == 0)
            {
                QueueSock(SongProfiler.PlayerNumber.Player1);
            }
            sock = playerOneSocks.playerQueue[0];
            playerOneSocks.playerQueue.Remove(sock);
        }

        if (playerNumber == SongProfiler.PlayerNumber.Player2)
        {
            if (playerTwoSocks.playerQueue.Count == 0)
            {
                QueueSock(SongProfiler.PlayerNumber.Player2);
            }
            sock = playerTwoSocks.playerQueue[0];
            playerTwoSocks.playerQueue.Remove(sock);
        }

        availableSocks.Add(sock);

        return(sock);
    }
示例#3
0
    // Used to get the next Sock to spawn
    public Sock PopRhythmQueue(SongProfiler.PlayerNumber playerNumber)
    {
        Sock sock = null;

        if (playerNumber == SongProfiler.PlayerNumber.Player1)
        {
            if (playerOneSocks.rhythmQueue.Count == 0)
            {
                QueueSock(SongProfiler.PlayerNumber.Player1);
            }
            sock = playerOneSocks.rhythmQueue[0];
            playerOneSocks.rhythmQueue.Remove(sock);
        }

        if (playerNumber == SongProfiler.PlayerNumber.Player2)
        {
            if (playerTwoSocks.rhythmQueue.Count == 0)
            {
                QueueSock(SongProfiler.PlayerNumber.Player2);
            }
            sock = playerTwoSocks.rhythmQueue[0];
            playerTwoSocks.rhythmQueue.Remove(sock);
        }

        return(sock);
    }
示例#4
0
 // Call when this Note is hit by a player
 public void Hit(SongProfiler.PlayerNumber hitPlayer)
 {
     if (hitPlayer == owner && hittable)
     {
         hit = true;
         HitEffect(hitPlayer);
     }
     else
     {
         PlayWrongEffect();
     };
 }
示例#5
0
    private void HitEffect(SongProfiler.PlayerNumber hitPlayer)
    {
        PlayerMovement player = RhythmManager.Instance.GetPlayerMovement(hitPlayer);

        player.UpdateSock();
        int val = player.UpdateScore(scoreEvaluationCurve.Evaluate(_scoreValue));

        Instantiate((val == 1) ? _badHit : (val == 2) ? _okHit : _perfHit, transform.position, Quaternion.identity);

        Instantiate(hitParticle, transform.position, Quaternion.identity);
        //  TODO score based on accuracy here
        StartCoroutine(DestroyNote());
    }
示例#6
0
    public PlayerMovement GetPlayerMovement(SongProfiler.PlayerNumber playerNumber)
    {
        if (playerNumber == SongProfiler.PlayerNumber.Player1)
        {
            return(PlayerMovement.Player1);
        }

        if (playerNumber == SongProfiler.PlayerNumber.Player2)
        {
            return(PlayerMovement.Player2);
        }

        return(null);
    }
示例#7
0
    // Add more socks to both queues
    private void QueueSock(SongProfiler.PlayerNumber playerNumber)
    {
        Sock sock = GetRandomAvailableSock();

        if (playerNumber == SongProfiler.PlayerNumber.Player1)
        {
            playerOneSocks.playerQueue.Add(sock);
            playerOneSocks.rhythmQueue.Add(sock);
        }

        if (playerNumber == SongProfiler.PlayerNumber.Player2)
        {
            playerTwoSocks.playerQueue.Add(sock);
            playerTwoSocks.rhythmQueue.Add(sock);
        }
        availableSocks.Remove(sock);
    }
示例#8
0
    public void SetSock(Sock givenSock, SongProfiler.PlayerNumber playerNumber, SongProfiler.NotePosition notePos)
    {
        sock = givenSock;
        sockAppearance.GetComponent <SpriteRenderer>().sprite = sock.sprite;

        owner        = playerNumber;
        notePosition = notePos;

        if (notePosition == SongProfiler.NotePosition.Jump)
        {
            wings.GetComponent <SpriteRenderer>().enabled = true;
        }
        else if (notePosition == SongProfiler.NotePosition.Ground)
        {
            wings.GetComponent <SpriteRenderer>().enabled = false;
        }
    }