private void UpdateServerStartButton() { int[] teams = TeamTracker.GetInstance().GetTeams(); if (teams[0] == 0 || teams[1] == 0) { startGameButtonText.text = "Waiting for teams"; allowServerStart = false; return; } bool allReady = true; foreach (GameObject player in PlayerTracker.GetInstance().GetPlayers()) { if (!player) { continue; } PlayerDataForClients settings = player.GetComponent <PlayerDataForClients>(); if (!settings.GetIsReadyFlag() && !settings.GetIsServerFlag()) { allReady = false; } } startGameButtonText.text = allReady ? "Start game" : "Waiting on ready"; allowServerStart = allReady; }
public void Start() { foreach (GameObject player in PlayerTracker.GetInstance().GetPlayers()) { AddColourChangeEvent(player); } PlayerTracker.GetInstance().OnPlayerAdded += AddColourChangeEvent; }
private void UpdateScoreboard() { SortedDictionary <int, List <GameObject> > scores = new SortedDictionary <int, List <GameObject> >(new DescendingComparer <int>()); if (scoreboardEntryPrefab == null) { return; } foreach (GameObject player in PlayerTracker.GetInstance().GetPlayers()) { if (player == null || player.GetComponent <PlayerDataForClients>() == null) { continue; } int team = player.GetComponent <PlayerDataForClients>().GetTeam(); if (team == PlayerDataForClients.TEAM_SPECTATOR) { continue; } GameObject entry = Instantiate(scoreboardEntryPrefab); ScoreboardEntryUI ui = entry.GetComponent <ScoreboardEntryUI>(); ui.SetName(player.GetComponent <PlayerDataForClients>().GetName()); int score = player.GetComponent <PlayerDataForClients>().GetScore(); ui.SetScore(score); if (player == PlayerTracker.GetInstance().GetLocalPlayer()) { ui.FlagCurrentPlayer(); } entry.transform.SetParent(scoreboardViewport.transform, false); if (!scores.ContainsKey(score)) { scores.Add(score, new List <GameObject>()); } scores[score].Add(entry); } int counter = 0; foreach (KeyValuePair <int, List <GameObject> > values in scores) { foreach (GameObject player in values.Value) { Vector3 localPos = player.GetComponent <RectTransform>().localPosition; player.GetComponent <RectTransform>().localPosition = new Vector3(localPos.x, -(entryPrefabHeight / 2) + (-(entryPrefabHeight + 2) * counter), localPos.z); counter++; } } RectTransform transform = scoreboardViewport.GetComponent <RectTransform>(); transform.sizeDelta = new Vector2(transform.sizeDelta.x, counter * (entryPrefabHeight + 2)); }
public void SetReadyState(bool isReady) { PlayerTracker.GetInstance().GetLocalPlayer().GetComponent <PlayerDataForClients>().SetIsReadyFlag(isReady); if (readyWaitingButton == null || readyNowButton == null) { return; } readyWaitingButton.SetActive(!isReady); readyNowButton.SetActive(isReady); }
// on start instead of awake to make sure it happens afterwards (check if better way) public void Start() { foreach (GameObject player in PlayerTracker.GetInstance().GetPlayers()) { NewLobbyPlayerAdded(player); } PlayerTracker.GetInstance().OnPlayerAdded += NewLobbyPlayerAdded; PlayerTracker.GetInstance().OnPlayerRemoved += OldLobbyPlayerRemoved; TeamTracker.GetInstance().OnTeamChanged += UpdateVersusText; TeamTracker.GetInstance().ForceRecount(); }
public void Awake() { if (State.GetInstance().Network() == State.NETWORK_SERVER) { SubscribeToServerPlaying(); foreach (GameObject player in PlayerTracker.GetInstance().GetPlayers()) { ResetPlayerScore(player); } PlayerTracker.GetInstance().OnPlayerAdded += ResetPlayerScore; } }
private void NewLobbyPlayerAdded(GameObject player) { if (viewportContent == null) { return; } bool isLocalPlayer = player == PlayerTracker.GetInstance().GetLocalPlayer(); GameObject lobbyEntry = Instantiate(isLocalPlayer ? localPlayerEntryPrefab : otherPlayerEntryPrefab); lobbyEntry.transform.SetParent(viewportContent.transform, false); lobbyEntry.GetComponent <EntryInterface>().SetPlayerObject(player); lobbyEntries.Add(player.GetInstanceID(), lobbyEntry); AlignLobbyEntriesInViewport(); }
private IEnumerator CalculateScore() { while (keepScoring) { GameObject highestXPlayer = null; float highestX = float.MinValue; foreach (GameObject player in PlayerTracker.GetInstance().GetPlayers()) { if (player.transform.position.x > highestX) { highestXPlayer = player; highestX = player.transform.position.x; } } highestXPlayer.GetComponent <PlayerDataForClients>().ServerIncrementScore(); yield return(new WaitForSeconds(0.25f)); } }