コード例 #1
0
    private void RpcSendScoreData(uint netId, string DisplayName, int collectibles, int position, double time)
    {
        if (!isServer)
        {
            if (SyncedPlayerScores.ContainsKey(netId))
            {
                SyncedPlayerScores[netId].StageCollectibles.Add(collectibles);
                SyncedPlayerScores[netId].StageFinishPosition.Add(position);
                SyncedPlayerScores[netId].StageTime.Add(time);
                PrintDict();
                UpdateScoreBoardCanvas(netId, collectibles, position);
            }

            else //Should never be called, but just in case
            {
                SyncedPlayerScores[netId]             = new NetworkScoreKeeper.PlayerData();
                SyncedPlayerScores[netId].DisplayName = DisplayName;
                SyncedPlayerScores[netId].StageCollectibles.Add(collectibles);
                SyncedPlayerScores[netId].StageFinishPosition.Add(position);
                SyncedPlayerScores[netId].StageTime.Add(time);
                PrintDict();
            }
        }
    }
コード例 #2
0
    private void InitializeScoreboard()
    {
        // ADDS GAMEPLAYERS TO SCOREBOARD DICTIONARY ***********************************************

        for (int i = 0; i < ListOfPlayerNetIds.Count; i++)
        {
            uint initNetId = 0;
            initNetId = ListOfPlayerNetIds[i];
            SyncedPlayerScores[initNetId]             = new NetworkScoreKeeper.PlayerData();
            SyncedPlayerScores[initNetId].DisplayName = ListOfPlayerNames[i];
        }

        // GENERATES HEADERS ************************************************************************
        float containerWidth  = StageRowTransformContainer.GetComponent <RectTransform>().anchoredPosition.x;
        float containerHeight = StageRowTransformContainer.GetComponent <RectTransform>().anchoredPosition.y;

        StageRowTemplate.gameObject.SetActive(false);
        PlayerScoresBackgroundTemplate.gameObject.SetActive(false);
        PlayerScoresTemplate.gameObject.SetActive(false);

        for (int i = 0; i < StagesCount; i++) //Generates and places all headers
        {
            var stageRow = Instantiate(StageRowTemplate, StageRowTransformContainer);
            stageRow.GetComponent <RectTransform>().anchoredPosition = new Vector2(StageRowWidth * i, 0);
            stageRow.GetComponent <TextMeshProUGUI>().text           = "" + (i + 1);
            stageRow.gameObject.SetActive(true);
            IncreaseUIWidth();
        }

        CollectiblesHeader.GetComponent <RectTransform>().anchoredPosition = new Vector2(TotalUIWidth + containerWidth, containerHeight);
        IncreaseUIWidth();

        TotalScoreHeader.GetComponent <RectTransform>().anchoredPosition = new Vector2(TotalUIWidth + containerWidth, containerHeight);
        IncreaseUIWidth();

        // GENERATES PLACEHOLDERS FOR SCORES ***********************************************************

        PlayerScoresBackground.GetComponent <RectTransform>().sizeDelta = new Vector2(130 * (TotalNumberOfHeaders), ScoreHeight);

        for (int i = 0; i < NumberOfPlayers; i++) // Creates the background for each player score row
        {
            var PlayerBkgScoreRow     = Instantiate(PlayerScoresBackgroundTemplate, PlayerScoresBackgroundContainer);
            var ScoreBkgRectTransform = PlayerBkgScoreRow.GetComponent <RectTransform>();
            ScoreBkgRectTransform.anchoredPosition = new Vector2(0, i * -ScoreHeight);
            PlayerBkgScoreRow.gameObject.SetActive(true);
        }

        for (int i = 0; i < NumberOfPlayers; i++) //Creates each cell in the scoreboard table that contains player data
        {
            uint initNetId = 0;
            initNetId = ListOfPlayerNetIds[i];
            CanvasScores.Add(initNetId, new List <TextMeshProUGUI>());

            for (int k = 0; k < TotalNumberOfHeaders; k++)
            {
                var PlayerScoreRow     = Instantiate(PlayerScoresTemplate, PlayerScoresContainer);
                var ScoreRectTransform = PlayerScoreRow.GetComponent <RectTransform>();
                ScoreRectTransform.anchoredPosition = new Vector2(k * StageRowWidth, i * -ScoreHeight);
                PlayerScoreRow.gameObject.SetActive(true);

                CanvasScores[initNetId].Add(PlayerScoreRow.GetComponent <TextMeshProUGUI>());
                CanvasScores[initNetId][0].SetText(ListOfPlayerNames[i]); //Sets name for player
            }
        }
    }