2025-03-06 01:27:42 -05:00
|
|
|
using System.Collections.Generic;
|
|
|
|
|
using UnityEngine;
|
|
|
|
|
|
|
|
|
|
public class HealthBarManager : MonoBehaviour
|
|
|
|
|
{
|
|
|
|
|
public GameObject healthBarPrefab;
|
|
|
|
|
private Dictionary<GameObject, GameObject> playerHealthBars = new Dictionary<GameObject, GameObject>();
|
|
|
|
|
|
|
|
|
|
void Start()
|
|
|
|
|
{
|
|
|
|
|
GameManager.Instance.StartGameEvent += OnGameStart;
|
|
|
|
|
GameManager.Instance.EndGameEvent += OnGameEnd;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void OnDestroy()
|
|
|
|
|
{
|
|
|
|
|
GameManager.Instance.StartGameEvent -= OnGameStart;
|
|
|
|
|
GameManager.Instance.EndGameEvent -= OnGameEnd;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void Update()
|
|
|
|
|
{
|
|
|
|
|
foreach (var kvp in playerHealthBars)
|
|
|
|
|
{
|
|
|
|
|
GameObject player = kvp.Key;
|
|
|
|
|
GameObject healthBar = kvp.Value;
|
2025-03-07 17:30:04 -05:00
|
|
|
healthBar.GetComponent<TerribleHealthBarScript>().fullHealthColor = GameManager.playerColors[GameManager.players.IndexOf(player)];
|
2025-03-07 10:03:16 -05:00
|
|
|
healthBar.transform.SetPositionAndRotation(new Vector3(player.transform.position.x, player.transform.position.y + 1.5f, player.transform.position.z), Quaternion.identity);
|
2025-03-06 01:27:42 -05:00
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void OnGameStart()
|
|
|
|
|
{
|
|
|
|
|
foreach (GameObject player in GameManager.players)
|
|
|
|
|
{
|
|
|
|
|
if (!playerHealthBars.ContainsKey(player))
|
|
|
|
|
{
|
|
|
|
|
GameObject healthBar = Instantiate(healthBarPrefab);
|
2025-03-07 10:03:16 -05:00
|
|
|
healthBar.transform.localScale *= 1.5f;
|
2025-03-06 01:27:42 -05:00
|
|
|
healthBar.GetComponent<TerribleHealthBarScript>().SetPlayer(player);
|
|
|
|
|
playerHealthBars[player] = healthBar;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void OnGameEnd()
|
|
|
|
|
{
|
|
|
|
|
foreach (var kvp in playerHealthBars)
|
|
|
|
|
{
|
|
|
|
|
Destroy(kvp.Value);
|
|
|
|
|
}
|
|
|
|
|
playerHealthBars.Clear();
|
|
|
|
|
}
|
|
|
|
|
}
|