timer and leaderboard logic complete
This commit is contained in:
@@ -168,11 +168,16 @@ public class GameManager : MonoBehaviour
|
||||
return alivePlayers;
|
||||
}
|
||||
|
||||
public void UpdateLeaderboard()
|
||||
public void UpdatePlayerHoldTime(GameObject player, float holdTime)
|
||||
{
|
||||
List<KeyValuePair<GameObject, float>> sortedList =
|
||||
new List<KeyValuePair<GameObject, float>>(playerHoldTimes);
|
||||
sortedList.Sort((pair1, pair2) => pair2.Value.CompareTo(pair1.Value));
|
||||
if (playerHoldTimes.ContainsKey(player))
|
||||
{
|
||||
playerHoldTimes[player] = holdTime;
|
||||
}
|
||||
else
|
||||
{
|
||||
playerHoldTimes.Add(player, holdTime);
|
||||
}
|
||||
LeaderboardManager.Instance.UpdateLeaderboard();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -14,7 +14,7 @@ public class GameTimer : MonoBehaviour
|
||||
private void Start()
|
||||
{
|
||||
timeRemaining = startTime;
|
||||
timer.text = "0:00.00";
|
||||
timer.text = "3:00.00";
|
||||
UpdateTimerDisplay();
|
||||
}
|
||||
|
||||
@@ -48,12 +48,11 @@ public class GameTimer : MonoBehaviour
|
||||
{
|
||||
int minutes = Mathf.FloorToInt(timeRemaining / 60);
|
||||
int seconds = Mathf.FloorToInt(timeRemaining % 60);
|
||||
timerText.text = string.Format("{0:D2}:{1:D2}", minutes, seconds);
|
||||
timer.text = string.Format("{0}:{1:D2}", minutes, seconds);
|
||||
}
|
||||
|
||||
private void OnTimerEnd()
|
||||
{
|
||||
Debug.Log("Timer ended! KeepAway mode has finished.");
|
||||
GameManager.Instance.GameOver();
|
||||
}
|
||||
}
|
||||
|
||||
53
Assets/Scripts/LeaderboardManager.cs
Normal file
53
Assets/Scripts/LeaderboardManager.cs
Normal file
@@ -0,0 +1,53 @@
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
using UnityEngine.UI;
|
||||
|
||||
public class LeaderboardManager : MonoBehaviour
|
||||
{
|
||||
public static LeaderboardManager Instance { get; private set; }
|
||||
|
||||
[SerializeField] private GameObject playersParent; // The parent GameObject that holds the player icons
|
||||
[SerializeField] private GameObject playerPrefab; // The prefab for the player icon
|
||||
|
||||
private Dictionary<GameObject, GameObject> playerIcons = new Dictionary<GameObject, GameObject>();
|
||||
|
||||
private void Awake()
|
||||
{
|
||||
if (Instance == null)
|
||||
{
|
||||
Instance = this;
|
||||
}
|
||||
else
|
||||
{
|
||||
Destroy(gameObject);
|
||||
}
|
||||
}
|
||||
|
||||
private void Start()
|
||||
{
|
||||
InitializeLeaderboard();
|
||||
}
|
||||
|
||||
private void InitializeLeaderboard()
|
||||
{
|
||||
foreach (GameObject player in GameManager.players)
|
||||
{
|
||||
GameObject playerIcon = Instantiate(playerPrefab, playersParent.transform);
|
||||
playerIcon.GetComponentInChildren<Text>().text = player.name;
|
||||
playerIcon.GetComponentInChildren<Image>().color = GameManager.playerColors[GameManager.players.IndexOf(player)];
|
||||
playerIcons[player] = playerIcon;
|
||||
}
|
||||
}
|
||||
|
||||
public void UpdateLeaderboard()
|
||||
{
|
||||
List<KeyValuePair<GameObject, float>> sortedList =
|
||||
new List<KeyValuePair<GameObject, float>>(GameManager.playerHoldTimes);
|
||||
sortedList.Sort((pair1, pair2) => pair2.Value.CompareTo(pair1.Value));
|
||||
|
||||
foreach (var player in sortedList)
|
||||
{
|
||||
playerIcons[player.Key].transform.SetSiblingIndex(sortedList.IndexOf(player));
|
||||
}
|
||||
}
|
||||
}
|
||||
2
Assets/Scripts/LeaderboardManager.cs.meta
Normal file
2
Assets/Scripts/LeaderboardManager.cs.meta
Normal file
@@ -0,0 +1,2 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 94998096868b2f543ae7fcd946cc4f14
|
||||
@@ -14,14 +14,8 @@ public class UseItem : MonoBehaviour
|
||||
heldItem.transform.position = transform.position + Vector3.up;
|
||||
if (GameManager.gameMode == GameManager.GameMode.keepAway)
|
||||
{
|
||||
if (GameManager.playerHoldTimes.ContainsKey(gameObject))
|
||||
{
|
||||
GameManager.playerHoldTimes[gameObject] += Time.deltaTime;
|
||||
}
|
||||
else
|
||||
{
|
||||
GameManager.playerHoldTimes[gameObject] = Time.time - holdStartTime;
|
||||
}
|
||||
float holdTime = Time.time - holdStartTime;
|
||||
GameManager.Instance.UpdatePlayerHoldTime(gameObject, holdTime);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -73,12 +67,12 @@ public class UseItem : MonoBehaviour
|
||||
{
|
||||
//Punch.OnPlayerPunched -= HandlePlayerPunched;
|
||||
}
|
||||
/*
|
||||
private void HandlePlayerPunched(GameObject punchedPlayer)
|
||||
{
|
||||
if (punchedPlayer == gameObject)
|
||||
/*
|
||||
private void HandlePlayerPunched(GameObject punchedPlayer)
|
||||
{
|
||||
DropItem();
|
||||
}
|
||||
}*/
|
||||
if (punchedPlayer == gameObject)
|
||||
{
|
||||
DropItem();
|
||||
}
|
||||
}*/
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user