2
0
Fork 0
You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

64 lines
2.3 KiB
C#

using Entitas;
using UnityEngine;
using Game;
[Game]
public class HpComponent : IComponent
{
public MetaData<float> Hp = new MetaData<float>();
public MetaData<float> HpMax = new MetaData<float>();
public MetaData<float> Shield = new MetaData<float>();
public MetaData<float> ShieldMax = new MetaData<float>();
public MetaData<float> Stun = new MetaData<float>();
public MetaData<float> StunMax = new MetaData<float>();
public MetaData<bool> IsDamaged = new MetaData<bool>();
public Vector3 LastDamageDir = Vector3.zero;
public EHitLevel LastDamageLevel = EHitLevel.None;
public int LastDmg = 0; //伤害显示合并
public float ShieldRecoverTimeMax = 0; //护盾恢复延迟
public float ShieldRecoverTime = 0; //护盾恢复延迟当前值
public float ShieldRecover = 0; //护盾恢复速度(点/秒)
public float StunRecoverTimeMax = 0; //眩晕恢复延迟
public float StunRecoverTime = 0; //眩晕恢复延迟当前值
public float StunRecover = 0; //眩晕恢复速度(点/秒)
public float DmgShowTime = 0;
public bool IsAlive = true;
public bool IsDying = false;
public float DyingTime = 0;
}
namespace Game
{
public abstract partial class Util
{
public static void EntityDie(GameEntity entity)
{
Util.EntityStopMove(entity.ID());
entity.hp.IsAlive = false;
entity.view.Material.SetColor("_FlashColor", new Color(0.5f, 0.5f, 0.5f, 1f));
}
public static void EntityReborn(GameEntity entity)
{
entity.hp.IsAlive = true;
entity.hp.Hp.Value = entity.hp.HpMax.Value;
entity.animation.ResetMsg = true;
entity.view.Material.SetColor("_FlashColor", new Color(1f, 1f, 1f, 1f));
entity.view.GameObjectLogic.SetActive(true);
entity.OnCreate();
}
public static void ClearHp(GameEntity entity)
{
var hp = entity.hp;
hp.LastDmg = 0;
hp.DmgShowTime = 0;
hp.IsAlive = true;
hp.IsDying = false;
hp.DyingTime = 0;
hp.IsDamaged.Value = false;
hp.LastDamageDir = Vector3.zero;
hp.LastDamageLevel = EHitLevel.None;
}
}
}