using MiniJSON;
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Cut : MonoBehaviour
{
private Item item;
// Start is called before the first frame update
public float MaxHealth = 1;
public float RestorePerSecond = 0.1f;
private float maxSize = 3;
public GameObject Bad;
public GameObject Good;
void Awake()
{
item = GetComponentInChildren<Item>();
item.OnRemoteUpdated = RemoteUpdated;
maxSize = Bad.transform.localScale.y;
health = MaxHealth;
}
private void RemoteUpdated()
{
float newHealth = 0;
if (item == null) return;
if (item.Details.ContainsKey("health"))
{
newHealth = item.Details.Key("health", Convert.ToSingle);
}
else
{
newHealth = MaxHealth;
}
float newMaxHealth = 0;
if (item.Details.ContainsKey("max_health"))
{
newMaxHealth = item.Details.Key("max_health", Convert.ToSingle);
}
else
{
newMaxHealth = MaxHealth;
}
if (newHealth != health || newMaxHealth != MaxHealth)
{
health = newHealth;
MaxHealth = newMaxHealth;
UpdateHealthBar();
}
}
private void UpdateHealthBar()
{
Vector3 s = Bad.transform.localScale;
s.y = (health / MaxHealth) * maxSize;
Bad.transform.localScale = s;
Vector3 p = Bad.transform.localPosition;
p.y = s.y * 0.5f;
Bad.transform.localPosition = p;
s = Good.transform.localScale;
s.y = ((MaxHealth - health) / MaxHealth) * maxSize;
Good.transform.localScale = s;
p = Good.transform.localPosition;
p.y = s.y * 0.5f + (health / MaxHealth) * maxSize;
Good.transform.localPosition = p;
}
void StartLocal()
{
item.Details["health"] = health;
item.Details["max_health"] = MaxHealth;
item.SendUpdate();
}
private float health = 1;
// Update is called once per frame
void Update()
{
if (item != null && item.IsLocal)
{
health = Mathf.Min(MaxHealth, health + RestorePerSecond * Time.deltaTime);
item.Details["health"] = health;
}
}
}