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 ;
2025-03-08 13:33:19 -05:00
if ( player = = null ) continue ;
2025-03-06 01:27:42 -05:00
GameObject healthBar = kvp . Value ;
2025-03-07 17:35:14 -05:00
//healthBar.GetComponent<TerribleHealthBarScript>().fullHealthColor = GameManager.playerColors[GameManager.players.IndexOf(player)]; // Color health bars
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 ( ) ;
}
}