93 lines
2.5 KiB
C#
93 lines
2.5 KiB
C#
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;
|
|
|
|
// Start is called before the first frame update
|
|
void Start()
|
|
{
|
|
player = FindObjectOfType<PlayerManager>();
|
|
if (blockType == BlockType.Door)
|
|
{
|
|
animation = this.GetComponent<Animation>();
|
|
}
|
|
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;
|
|
}
|
|
}
|
|
}
|
|
|
|
public void Action()
|
|
{
|
|
if (blockType == BlockType.Door)
|
|
{
|
|
if (!animation.isPlaying)
|
|
{
|
|
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));
|
|
}
|
|
}
|
|
}
|
|
}
|