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#
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;
|
|
}
|
|
}
|
|
} |