using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.Events; public class Player_Manager : Entity_Parent { public UnityEvent DeathEvent; public bool PlayerDead; public Camera Player_Camera; public float RegularZoom_Camera; //Camera zoom before any modifiers. Should not be modified public float ZoomedIn_Camera; //Camera zoom after modifiers or when zoomed in. Can be modified. public float Property_Camera_Zoom { get { return Player_Camera.orthographicSize; } set { ZoomedIn_Camera = value; Player_Camera.orthographicSize = value; } } [HideInInspector] public float current_Camera_Level; [HideInInspector] public float current_Hunger_Level; [HideInInspector] public float current_Water_Level; [HideInInspector] public float current_Health_Level; [HideInInspector] public float current_Speed; //Current speed after debuffs/buffs/etc. Can be changed. //Starting Hunger Level. Do not change or affect during gameplay public float start_Hunger_Level; //Starting Water Level. Do not change or affect during gameplay public float start_Water_Level; //Starting Health Level. Do not change or affect during gameplay. public float start_Health_Level; public float Max_Speed; //How fast does each level go down per second. public float hunger_level_degredation_multi; public float water_level_degredation_multi; //How fast do all the stats go down per second. public float base_degredation_rate; //Tick rate in seconds IE; how long it takes in between stat degredation public float degrade_tick_rate; //Max speed of the player; should not be changed during gameplay. Do not change or affect during gameplay. void Start() { PlayerDead = false; current_Hunger_Level = start_Hunger_Level; current_Water_Level = start_Water_Level; current_Health_Level = start_Health_Level; current_Speed = Max_Speed; StartCoroutine(UpdatePlayer()); } void LateUpdate() { if(current_Health_Level <= 0 && !PlayerDead){ Die(); Debug.Log("Died"); } if(current_Health_Level <= 0){ current_Speed = 0; } } IEnumerator UpdatePlayer(){ for(;;) { current_Water_Level -= base_degredation_rate * water_level_degredation_multi; current_Hunger_Level -= base_degredation_rate * hunger_level_degredation_multi; yield return new WaitForSeconds(degrade_tick_rate); } } ///---Overrided Methods--- //Damage Method for other gameobjects to call public override void LoseHealth(float Dmg) { current_Health_Level -= Dmg; } public override void Die() { PlayerDead = true; DeathEvent.Invoke(); } }