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(); } } }
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 } } }