2022-07-20 17:04:21 +08:00
|
|
|
|
/*
|
|
|
|
|
zlib License
|
|
|
|
|
|
|
|
|
|
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (C) 2022 Lucas
|
|
|
|
|
|
|
|
|
|
This software is provided 'as-is', without any express or implied
|
|
|
|
|
warranty. In no event will the authors be held liable for any damages
|
|
|
|
|
arising from the use of this software.
|
|
|
|
|
|
|
|
|
|
Permission is granted to anyone to use this software for any purpose,
|
|
|
|
|
including commercial applications, and to alter it and redistribute it
|
|
|
|
|
freely, subject to the following restrictions:
|
|
|
|
|
|
|
|
|
|
1.The origin of this software must not be misrepresented; you must not
|
|
|
|
|
claim that you wrote the original software. If you use this software
|
|
|
|
|
in a product, an acknowledgment in the product documentation would be
|
|
|
|
|
appreciated but is not required.
|
|
|
|
|
2. Altered source versions must be plainly marked as such, and must not be
|
|
|
|
|
misrepresented as being the original software.
|
|
|
|
|
3. This notice may not be removed or altered from any source distribution.
|
|
|
|
|
*/
|
|
|
|
|
using System.Collections;
|
|
|
|
|
using System.Collections.Generic;
|
|
|
|
|
using UnityEngine;
|
|
|
|
|
using UnityEngine.SceneManagement;
|
|
|
|
|
|
|
|
|
|
public class HealthController : MonoBehaviour
|
|
|
|
|
{
|
|
|
|
|
// Start is called before the first frame update
|
|
|
|
|
private int health;
|
|
|
|
|
public int initialHealth;
|
|
|
|
|
public GameObject healthBarPrefab;
|
|
|
|
|
private GameObject healthBar;
|
|
|
|
|
private HealthBarController controller;
|
|
|
|
|
void Start()
|
|
|
|
|
{
|
|
|
|
|
health = initialHealth;
|
|
|
|
|
healthBar = Instantiate(healthBarPrefab);
|
|
|
|
|
controller = healthBar.GetComponent<HealthBarController>();
|
|
|
|
|
controller.maxHealthValue = initialHealth;
|
|
|
|
|
healthBar.transform.SetParent(GameObject.Find("Canvas").transform, false);
|
|
|
|
|
healthBar.SetActive(true);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// Update is called once per frame
|
|
|
|
|
|
|
|
|
|
public void IncreaseHealth()
|
|
|
|
|
{
|
2022-07-21 12:05:35 +08:00
|
|
|
|
if (health < initialHealth) {
|
2022-07-20 17:04:21 +08:00
|
|
|
|
controller.SetHealth(++health);
|
2022-07-21 12:05:35 +08:00
|
|
|
|
if (health == initialHealth)
|
|
|
|
|
{
|
|
|
|
|
GameObject gameController = GameObject.FindGameObjectWithTag("GameController");
|
|
|
|
|
gameController.GetComponent<HealthPotionGenerator>().DisNotifyGenerate();
|
|
|
|
|
}
|
|
|
|
|
}
|
2022-07-20 17:04:21 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public void DecreaseHealth()
|
|
|
|
|
{
|
|
|
|
|
controller.SetHealth(--health);
|
|
|
|
|
if (health <= 0)
|
|
|
|
|
{
|
|
|
|
|
SceneManager.LoadScene("StartupScene");
|
2022-07-21 12:05:35 +08:00
|
|
|
|
return;
|
2022-07-20 17:04:21 +08:00
|
|
|
|
}
|
2022-07-21 12:05:35 +08:00
|
|
|
|
GameObject gameController = GameObject.FindGameObjectWithTag("GameController");
|
|
|
|
|
gameController.GetComponent<HealthPotionGenerator>().NotifyGenerate(gameObject);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public bool NeedPotion
|
|
|
|
|
{
|
|
|
|
|
get => health < initialHealth;
|
2022-07-20 17:04:21 +08:00
|
|
|
|
}
|
|
|
|
|
}
|