示例#1
0
    //function used for networking that compiles stats and destroys dead player objects
    public int reducePlayers(GameObject player)
    {
        numberAlive--;
        if (numberAlive > 0)
        {
            player.GetComponent <LocalPlayerScript>().removeMeter();
            player.GetComponent <LocalPlayerScript>().cancelSuperAnimation();
            Destroy(player);

            if (numberAlive == 1)
            {
                NetworkedPlayerScript winningPlayer = GameObject.FindGameObjectWithTag("Player").GetComponent <NetworkedPlayerScript>();

                winner = winningPlayer.getPlayerType();
                Debug.Log(winner);

                if (winningPlayer.getHasAuthority())
                {
                    winningPlayer.compileData();
                }
            }
        }

        else
        {
            displayResults();
        }
        return(numberOfPlayers);
    }
    void Start()
    {
        //playerParentScript = GameObject.FindWithTag("PlayerParent").GetComponent<PlayerParentScript>();

        networkedPScript = GetComponent <NetworkedPlayerScript>();

        countdownText = GUIManagerScript.countdownText;

        sliderText = GUIManagerScript.sliderText;

        infoText = GUIManagerScript.infoText;

        // Assigned GUI elements based on
        finalScoreText   = GUIManagerScript.finalScoreText;
        answerText       = GUIManagerScript.answerText;
        noGuessText      = GUIManagerScript.noGuessText;
        listeningToText  = GUIManagerScript.listeningToText;
        detailsText      = GUIManagerScript.detailsText;
        continuingInText = GUIManagerScript.continuingInText;

        playerPickedBtn = GUIManagerScript.playerPickedBtn;
        lookingForBtn   = GUIManagerScript.lookingForBtn;

        answerParent     = GUIManagerScript.answerParent;
        lookingForParent = GUIManagerScript.lookingForParent;

        Application.runInBackground = true;
        // Disable screen dimming
        Screen.sleepTimeout = SleepTimeout.NeverSleep;
    }
示例#3
0
    private void Update()
    {
        if (health > maxHealth)
        {
            health = maxHealth;
        }
        // Healthbar
        healthBar.transform.forward = Vector3.up;
        //healthBar.transform.position = transform.position + Vector3.forward;
        healthBar.localScale = new Vector3(((health * 100) / maxHealth) * 0.005f, 0.2f, 1);

        Collider[] hitColliders = Physics.OverlapSphere(transform.position, range);
        for (int i = 0; i < hitColliders.Length; i++)
        {
            GameObject temp = hitColliders[i].gameObject;
            //if (temp.tag == "Player" && temp.GetComponent<NetworkedPlayerScript>().netId != netId && temp.GetComponent<NetworkedPlayerScript>().isAI)
            if (temp.tag == "Player")
            {
                target = temp.GetComponent <NetworkedPlayerScript>();
            }
        }
        if (target && Vector3.Distance(shootingPosition.position, target.transform.position) < range)
        {
            target.RpcResolveHit(0.5f);
            lineRenderer.enabled = true;
            light.enabled        = true;
            lineRenderer.SetPosition(1, target.transform.position);
        }
        else
        {
            lineRenderer.enabled = false;
            light.enabled        = false;
            target = null;
        }
    }
示例#4
0
    public void BackButtonPressed()
    {
        // Oops, let's reset the match ID
        networkedPScript.CmdResetMatchSongID();

        List <CaptainsMessPlayer> players = networkedPScript.GetPlayers();

        int size = players.Count;

        foreach (CaptainsMessPlayer player in players)
        {
            NetworkedPlayerScript nps = player.GetComponent <NetworkedPlayerScript>();
            if (!nps.isLocalPlayer)
            {
                nps.playerButton.SetActive(true);
                nps.playerButton.GetComponent <Button>().interactable = true;

                Vector3 goal = player.GetComponent <RemotePlayerScript>().GetPosition();

                nps.playerButton.transform.DOLocalMove(goal, nps.fastMovementSpeed);
                nps.playerButton.transform.DOScale(Vector3.one, nps.fastMovementSpeed);
            }
            else
            {
                nps.playerParent.GetComponent <RectTransform>().sizeDelta = new Vector2(160 * (size + 1), 340);
            }
        }


        GUIManagerScript.SetBackButton(false);
    }
示例#5
0
    private static void NumberInputProcessed(bool del)
    {
        GameObject            player = GameObject.Find("LOCAL Player");
        NetworkedPlayerScript nps    = player.GetComponent <NetworkedPlayerScript>();

        bool shouldClear = true;

        if (numberTextField.text != null)
        {
            int input = -1;
            if (System.Int32.TryParse(numberTextField.text, out input))
            {
                if (nps.GetColor() != input)
                {
                    if (nps.DoesPlayerNumberExist(input) != -1)
                    {
                        GUIManagerScript.SetNumberInputFieldColor(ColorScript.GetColor(input), true);
                        shouldClear = false;
                    }
                }
            }
        }

        if (shouldClear)
        {
            Color clr = ColorScript.GetColor(nps.GetColor());
            clr = clr * 0.5f;
            GUIManagerScript.SetNumberInputFieldColor(clr);

            if (del)
            {
                GUIManagerScript.ClearNumberInput();
            }
        }
    }
    public void RpcReplayGame()
    {
        List <CaptainsMessPlayer> players = GetPlayers();
        int size = players.Count;

        foreach (CaptainsMessPlayer player in players)
        {
            NetworkedPlayerScript nps = player.GetComponent <NetworkedPlayerScript>();
            if (!nps.isLocalPlayer)
            {
                nps.playerButton.SetActive(true);
            }
            nps.playerButton.GetComponent <Button>().interactable = false;

            Vector3 goal = player.GetComponent <RemotePlayerScript>().GetPosition();

            //Move there

            /*
             * nps.playerButton.transform.DOLocalMove(goal, nps.fastMovementSpeed);
             * nps.playerButton.transform.DOScale(Vector3.one, nps.fastMovementSpeed);
             */
            //Insta go there
            nps.playerButton.transform.localPosition = goal;
            nps.playerButton.transform.localScale    = Vector3.one;
        }

        playerParent.GetComponent <RectTransform>().sizeDelta = new Vector2(170, 120 * (size));

        SetReady(true); //Auto advance
    }
示例#7
0
    public void CmdStartGame()
    {
        if (mess.AreAllPlayersReady()) //Redundant?
        {
            List <CaptainsMessPlayer> players = GetPlayers();

            int length = players.Count;

            Assert.IsTrue(length >= 4, "There must be >=4 players!");

            int numSongsToPick = (length / 2);

            List <int> songs = new List <int>(); //List of the songID's we'll use this game.

            int numberOfSongs = AudioManagerScript.instance.GetNumSongs();
            for (int i = 0; i < numSongsToPick; i++)
            {
                int rand;
                do
                {
                    rand = Random.Range(0, numberOfSongs);
                }while (songs.Contains(rand));
                songs.Add(rand);
            }

            List <int> playerSongChoice = new List <int>(); // Final list will pull from

            // Remember, final list will have at least 2 of every choice!
            int j = 0;
            if (length % 2 != 0)
            {
                j = -1;
            }
            for (int k = 0; k < length; k++)
            {
                if (j == -1)
                {
                    playerSongChoice.Add(songs[Random.Range(0, numSongsToPick)]);
                }
                else
                {
                    playerSongChoice.Add(songs[(int)(j / 2)]);
                }
                j++;
            }

            foreach (CaptainsMessPlayer player in players)
            {
                //Recycle local J variable, don't care about last value
                j = Random.Range(0, playerSongChoice.Count);

                NetworkedPlayerScript nps = player.GetComponent <NetworkedPlayerScript>();
                //Tell the player which song they got
                nps.RpcStartGame(playerSongChoice[j]);

                //Remove that entry from list.
                playerSongChoice.RemoveAt(j);
            }
        } //Close if statement for checking if all players ready
    }
示例#8
0
    public override void OnLobbyServerSceneLoadedForPlayer(NetworkManager manager, GameObject lobbyPlayer, GameObject gamePlayer)
    {
        LobbyPlayer           lobby  = lobbyPlayer.GetComponent <LobbyPlayer>();
        NetworkedPlayerScript player = gamePlayer.GetComponent <NetworkedPlayerScript>();

        player.playerName   = lobby.playerName;
        player.playerColour = lobby.playerColor;
    }
    public void RpcStartGame(int s)
    {
        songID            = s;
        scored_ThisRound  = 0;
        scored_TimeBonus  = 0;
        scored_FirstBonus = false;
        scored_WasGuessed = false;

        //playerParent.GetComponent<PlayerParentScript>().Unlock();

        // Bullshit code. Temp? Maybe not?
        // What if player WAS ready, but now that we're actually starting they are no longer?
        // Too late for them! Let's double check
        if (!ready)
        {
            Assert.IsFalse(ready, "Player wasn't ready, but the server thought they were!");
            // Oh noes! What do we do? Let's cheat:
            SetReady(true);
            // See buddy, you were ready the whole time, right?
        }
        ResetMatch();

        if (isLocalPlayer)
        {
            GUIManagerScript.SetButton(false);

            GUIManagerScript.SetBackButton(false);

            Color clr = ColorScript.GetColor(GetColor());
            clr = clr * 0.5f;
            GUIManagerScript.SetNumberInputFieldColor(clr);
            GUIManagerScript.ClearNumberInput();
            GUIManagerScript.SetSongSetButton(false);

            //Hacky bullshit for finding which kind of game we're in?
            GameManagerScript gameManager = FindObjectOfType <GameManagerScript>();
            Assert.IsNotNull <GameManagerScript>(gameManager);
            int index = gameManager.GetSongSet();

            AudioManagerScript.instance.StartGameMusic(index);

            GUIManagerScript.SetClassicGameParent(color, ColorScript.GetColor(color), ColorScript.GetColorName(color));

            localPScript.reminded = false;
        }

        List <CaptainsMessPlayer> players = GetPlayers();

        foreach (CaptainsMessPlayer player in players)
        {
            NetworkedPlayerScript nps = player.GetComponent <NetworkedPlayerScript>();
            if (!nps.isLocalPlayer)
            {
                player.GetComponent <NetworkedPlayerScript>().playerButton.SetActive(true);
                player.GetComponent <NetworkedPlayerScript>().playerButton.GetComponent <Button>().interactable = true;
            }
        }
    }
示例#10
0
    public void SetPlayerText()
    {
        InputField field = nameInputObject.GetComponentInChildren <InputField>();

        GameObject            player = GameObject.Find("LOCAL Player");
        NetworkedPlayerScript nps    = player.GetComponent <NetworkedPlayerScript>();

        nps.CmdSetPlayerText(field.text);
    }
示例#11
0
    public void RpcStartGame(int s)
    {
        songID            = s;
        scored_ThisRound  = 0;
        scored_TimeBonus  = 0;
        scored_FirstBonus = false;
        scored_WasGuessed = false;

        //playerParent.GetComponent<PlayerParentScript>().Unlock();

        // Bullshit code. Temp? Maybe not?
        // What if player WAS ready, but now that we're actually starting they are no longer?
        // Too late for them! Let's double check
        if (!ready)
        {
            Assert.IsFalse(ready, "Player wasn't ready, but the server thought they were!");
            // Oh noes! What do we do? Let's cheat:
            SetReady(true);
            // See buddy, you were ready the whole time, right?
        }
        ResetMatch();

        if (isLocalPlayer)
        {
            GUIManagerScript.FillPlayerText(nameText);

            GUIManagerScript.SetButton(false);

            GUIManagerScript.DisableInput(true);
            GUIManagerScript.SetBackButton(false);

            AudioManagerScript.instance.StartGameMusic();

            GUIManagerScript.SetColorShow(nameText, ColorScript.GetColor(color), ColorScript.GetColorName(color));

            localPScript.reminded = false;
        }

        List <CaptainsMessPlayer> players = GetPlayers();

        foreach (CaptainsMessPlayer player in players)
        {
            NetworkedPlayerScript nps = player.GetComponent <NetworkedPlayerScript>();
            if (!nps.isLocalPlayer)
            {
                player.GetComponent <NetworkedPlayerScript>().playerButton.SetActive(true);
                player.GetComponent <NetworkedPlayerScript>().playerButton.GetComponent <Button>().interactable = true;
            }
        }
    }
示例#12
0
文件: Item.cs 项目: liamm14/LMOBA
    public void Consume(NetworkedPlayerScript player)
    {
        if (!isConsumable || !player)
        {
            return;
        }

        if (type == ItemType.healthPotion)
        {
            player.health += 20;
        }
        if (type == ItemType.manaPotion)
        {
            player.mana += 20;
        }
    }
示例#13
0
    void SortPlayers()
    {
        List <CaptainsMessPlayer> players = mess.Players();
        int i    = 0;
        int size = players.Count;

        List <CaptainsMessPlayer> SortedList = players.OrderBy(o => o.GetComponent <NetworkedPlayerScript>().nameText).ToList();

        foreach (CaptainsMessPlayer player in SortedList)
        {
            NetworkedPlayerScript nps = player.GetComponent <NetworkedPlayerScript>();
            if (!nps.isLocalPlayer)
            {
                RemotePlayerScript rps = player.GetComponent <RemotePlayerScript>();

                Vector3 goal = rps.SetPosition(++i, size);

                if (nps.playerButton.activeSelf == false)
                {
                    nps.playerButton.SetActive(true);
                    nps.playerButton.transform.localPosition = new Vector3(i * 160, -340, 0);
                }

                nps.playerButton.transform.DOLocalMove(goal, movementSpeed);
                nps.playerButton.transform.DOScale(Vector3.one, movementSpeed);
            }
            nps.SetColor();
            nps.SetNameText();
        }

        if (size >= 4)
        {
            GUIManagerScript.SetButton(true);
        }
        else
        {
            GUIManagerScript.SetButton(false);
        }

        playerParent.GetComponent <RectTransform>().sizeDelta = new Vector2(160 * (size + 1), 340);
    }
    public void PlayerButtonPressed()
    {
        GameManagerScript gameManager = FindObjectOfType <GameManagerScript>();

        Assert.IsNotNull <GameManagerScript>(gameManager);

        if (isLocalPlayer)
        {
            if (!gameManager.IsGameStarted())
            {
                ToggleReady();
            }
        }
        else
        {
            if (gameManager.IsGameStarted())
            {
                List <CaptainsMessPlayer> players = GetPlayers();
                foreach (CaptainsMessPlayer player in players)
                {
                    NetworkedPlayerScript nps = player.GetComponent <NetworkedPlayerScript>();
                    if (player.name == "LOCAL Player")
                    {
                        nps.CmdSetMatchSongID(songID, color);
                    }
                    nps.playerButton.SetActive(false);
                    nps.playerButton.GetComponent <Button>().interactable = false;
                }

                playerButton.SetActive(true);
                playerButton.GetComponent <Button>().interactable = false;
                playerButton.transform.DOLocalMove(new Vector3(30, 20, 0), fastMovementSpeed);
                playerButton.transform.DOScale(new Vector3(1.5f, 1.5f, 1f), fastMovementSpeed);

                playerParent.GetComponent <RectTransform>().sizeDelta = new Vector2(170, 140);

                GUIManagerScript.SetBackButton(true);
            }
        }
    }
示例#15
0
    public void BackButtonPressed()
    {
        // Oops, let's reset the match ID
        networkedPScript.CmdResetMatchSongID();

        GUIManagerScript.NumberInputLocked(false);

        List <CaptainsMessPlayer> players = networkedPScript.GetPlayers();

        int size = players.Count;

        foreach (CaptainsMessPlayer player in players)
        {
            NetworkedPlayerScript nps = player.GetComponent <NetworkedPlayerScript>();
            if (!nps.isLocalPlayer)
            {
                nps.playerButton.SetActive(true);
                nps.playerButton.GetComponent <Button>().interactable = true;

                Vector3 goal = player.GetComponent <RemotePlayerScript>().GetPosition();

                nps.playerButton.transform.DOLocalMove(goal, nps.fastMovementSpeed);
                nps.playerButton.transform.DOScale(Vector3.one, nps.fastMovementSpeed);
            }
            else
            {
                nps.playerParent.GetComponent <RectTransform>().sizeDelta = new Vector2(160 * (size + 1), 340);
            }
        }

        // Optional clear colors after backing out of choice?

        /*Color clr = ColorScript.GetColor(networkedPScript.GetColor());
         * clr = clr * 0.5f;
         * GUIManagerScript.SetNumberInputFieldColor(clr);
         * GUIManagerScript.ClearNumberInput();*/

        GUIManagerScript.SetBackButton(false);
    }
    public void CmdEndGame()
    {
        List <CaptainsMessPlayer> players     = GetPlayers();
        NetworkedPlayerScript     bonusPlayer = null;
        float      longestMatchTime           = -1;
        List <int> scoringSongs = new List <int>();

        foreach (CaptainsMessPlayer player in players)
        {
            NetworkedPlayerScript nps = player.GetComponent <NetworkedPlayerScript>();

            int sid = nps.GetSongID();

            if (nps.scored_GuessedCorrect)
            {
                float currentMatchTime = nps.matchTime;

                nps.RpcAddScore(5 * Mathf.FloorToInt(currentMatchTime), (int)Score.Time);

                if (currentMatchTime > longestMatchTime)
                {
                    longestMatchTime = currentMatchTime;
                    bonusPlayer      = nps;
                }

                scoringSongs.Add(sid);

                //Hacky bullshit for finding which kind of game we're in?
                GameManagerScript gameManager = FindObjectOfType <GameManagerScript>();
                Assert.IsNotNull <GameManagerScript>(gameManager);
                int songSet = gameManager.GetSongSet();

                Analytics.CustomEvent("guessedCorrect", new Dictionary <string, object>
                {
                    { "matchTime", currentMatchTime },
                    { "songSet", songSet },
                    { "songID", sid }
                });
            }
            else
            {
                for (int i = 0; i < players.Count; i++)
                {
                    NetworkedPlayerScript other_nps = players[i].GetComponent <NetworkedPlayerScript>();

                    if (sid == other_nps.GetSongID())
                    {
                        if (nps.color != other_nps.color)
                        {
                            nps.match_color = other_nps.color;
                            break;
                        }
                    }
                }
            }
        }

        //Bonus for player who guessed first.
        if (bonusPlayer != null) //If this is null, nobody guessed anything. Lame!
        {
            bonusPlayer.RpcAddScore(100, (int)Score.First);
        }

        foreach (CaptainsMessPlayer player in players)
        {
            NetworkedPlayerScript nps = player.GetComponent <NetworkedPlayerScript>();

            if (nps.scored_GuessedCorrect)
            {
                nps.RpcAddScore(250, (int)Score.Correct);
            }
            if (scoringSongs.Contains(nps.songID))
            {
                nps.RpcAddScore(500, (int)Score.WasGuessed);
            }

            nps.RpcEndGame();
        }

        mess.FinishGame();
    }
示例#17
0
    private void SetNPS()
    {
        GameObject player = GameObject.Find("LOCAL Player");

        networkedPScript = player.GetComponent <NetworkedPlayerScript>();
    }