using UnityEngine;
using System.Collections;
using UnityEngine.UI;
using UnityStandardAssets.Characters.FirstPerson;
public class PlayerVitals : MonoBehaviour
{
[Header("Health Settings")]
public Slider healthSlider;
public int maxHealth;
public int healthFallRate;
[Header("Thirst Settings")]
public Slider thirstSlider;
public int maxThirst;
public int thirstFallRate;
[Header("Hunger Settings")]
public Slider hungerSlider;
public int maxHunger;
public int hungerFallRate;
[Header("Stamina Settings")]
public Slider staminaSlider;
public int maxStamina;
private int staminaFallRate;
public int staminaFallMult;
private int staminaRegainRate;
public int staminaRegainMult;
[Header("Temperature Settings")]
public float freezingTemp;
public float currentTemp;
public float normalTemp;
public float heatTemp;
public Text tempNumber;
public Image tempBG;
private CharacterController charController;
private FirstPersonController playerController;
void Start()
{
charController = GetComponent<CharacterController>();
playerController = GetComponent<FirstPersonController>();
healthSlider.maxValue = maxHealth;
healthSlider.value = maxHealth;
thirstSlider.maxValue = maxThirst;
thirstSlider.value = maxThirst;
hungerSlider.maxValue = maxHunger;
hungerSlider.value = maxHunger;
staminaSlider.maxValue = maxStamina;
staminaSlider.value = maxStamina;
staminaFallRate = 1;
staminaRegainRate = 1;
}
void UpdateTemp()
{
tempNumber.text = currentTemp.ToString("00.0");
}
void Update()
{
//TEMPERATURE CONTROLLER
if (currentTemp <= freezingTemp)
{
tempBG.color = Color.blue;
UpdateTemp();
}
else if (currentTemp >= heatTemp - 0.2)
{
tempBG.color = Color.red;
UpdateTemp();
}
else
{
tempBG.color = Color.green;
UpdateTemp();
}
//HEALTH CONTROLLER
if (hungerSlider.value <= 0 && (thirstSlider.value <= 0))
{
healthSlider.value -= Time.deltaTime / healthFallRate * 2;
}
else if(hungerSlider.value <= 0 || thirstSlider.value <= 0 || currentTemp <= freezingTemp || currentTemp >= heatTemp)
{
healthSlider.value -= Time.deltaTime / healthFallRate;
}
if (healthSlider.value <= 0)
{
CharacterDeath();
}
//HUNGER CONTROLLER
if (hungerSlider.value >= 0)
{
hungerSlider.value -= Time.deltaTime / hungerFallRate;
}
else if (hungerSlider.value <= 0)
{
hungerSlider.value = 0;
}
else if (hungerSlider.value >= maxHunger)
{
hungerSlider.value = maxHunger;
}
//THIRST CONTROLLER
if (thirstSlider.value >= 0)
{
thirstSlider.value -= Time.deltaTime / thirstFallRate;
}
else if (thirstSlider.value <= 0)
{
thirstSlider.value = 0;
}
else if (thirstSlider.value >= maxThirst)
{
thirstSlider.value = maxThirst;
}
//STAMINA CONTROL SECTION
if (charController.velocity.magnitude > 0 && Input.GetKey(KeyCode.LeftShift))
{
staminaSlider.value -= Time.deltaTime / staminaFallRate * staminaFallMult;
if (staminaSlider.value > 0)
{
currentTemp += Time.deltaTime / 5; //TEMPERATURE
}
}
else
{
staminaSlider.value += Time.deltaTime / staminaRegainRate * staminaRegainMult;
if (currentTemp >= normalTemp)
{
currentTemp -= Time.deltaTime / 10; //TEMPERATURE
}
}
if (staminaSlider.value >= maxStamina)
{
staminaSlider.value = maxStamina;
}
else if (staminaSlider.value <= 0)
{
staminaSlider.value = 0;
playerController.m_RunSpeed = playerController.m_WalkSpeed;
}
else if (staminaSlider.value >= 0)
{
playerController.m_RunSpeed = playerController.m_RunSpeedNorm;
}
}
void CharacterDeath()
{
//DO SOMETHING HERE!
}
}