using System.Collections; using System.Collections.Generic; using UnityEngine; public class BlockManager : MonoBehaviour { public enum BlockType {None, Barricade, Door, Wood, Ammo, FireCamp}; public BlockType blockType = BlockType.None; public float health = 100; public float healthRate = 5; private float healthTime = 5; private Animation animation; private PlayerManager player; private bool action = false; public List amountModels = new List(); public AudioSource audioSource = new AudioSource(); public AudioClip doorSound; // Start is called before the first frame update void Start() { player = FindObjectOfType(); if (blockType == BlockType.Door) { animation = this.GetComponent(); } else if (blockType == BlockType.Wood) { healthTime = healthRate; } else if (blockType == BlockType.Ammo) { healthTime = healthRate; } } // Update is called once per frame void Update() { if (blockType == BlockType.Wood) { if (health < 100 && healthTime < Time.time) { health += 10; healthTime = healthRate + Time.time; } } else if (blockType == BlockType.Ammo) { if (health < 100 && healthTime < Time.time) { health += 10; healthTime = healthRate + Time.time; } } viewHealthAs(); } void viewHealthAs() { if (blockType == BlockType.Wood) { if (amountModels.Count > 0) { for (int i = 0; i < amountModels.Count; i++) { if (i < ((100 - health) / 3.7f)) { amountModels[i].SetActive(false); } else { amountModels[i].SetActive(true); } } } } else if (blockType == BlockType.Ammo) { if (amountModels.Count > 0) { for (int i = 0; i < amountModels.Count; i++) { if (i < ((100 - health) / 4.5f)) { amountModels[i].SetActive(false); } else { amountModels[i].SetActive(true); } } } } } public void Action() { if (blockType == BlockType.Door) { if (!animation.isPlaying) { audioSource.PlayOneShot(doorSound); if (!action) { animation["Door"].speed = 1; animation["Door"].time = 0; action = true; } else { animation["Door"].speed = -1; animation["Door"].time = animation["Door"].length; action = false; } animation.Play("Door"); } } else if (blockType == BlockType.Wood) { if (health > 0 && player.barricadeMaterials < 50) { health -= 10; player.barricadeMaterials += (player.barricadeMaterials <= 40 ? 10 : (50 - player.barricadeMaterials)); } } else if (blockType == BlockType.Ammo) { if (health > 0 && player.ammo < 50) { health -= 10; player.ammo += (player.ammo <= 40 ? 10 : (50 - player.ammo)); } } } }