This commit is contained in:
CortexCore
2023-10-24 23:37:59 +08:00
parent 325f63d6bc
commit 3e39e627bc
388 changed files with 29043 additions and 889 deletions

View File

@@ -19,11 +19,12 @@ namespace BITKit.Entities
public abstract class BITEquipBase<T> : StateBasedMonoBehaviour<T>, IEquipBase where T : IState
{
[Header(Constant.Header.Settings)]
[SerializeField] protected AssetableEquip item;
[SerializeField] protected AssetableItem item;
[Header(Constant.Header.Components)]
public UnityAnimator animator;
[SerializeField] private Renderer[] renderers;
[SerializeField] protected Transform cameraTransform;
[Header(Constant.Header.Services)]
[SerializeReference,SubclassSelector] protected IMeleeService meleeService;
@@ -39,12 +40,12 @@ namespace BITKit.Entities
public virtual string AddressablePath => item.AddressablePath;
protected virtual Vector3 meleeForce => Transform.forward;
public bool IsEntered { get; set; }
private Quaternion _initialCameraRotation;
public virtual void Entry()
{
AllowRendering.AddElement(this);
animator.animator.enabled = true;
animator.animator.Update(0);
inputActionGroup.allowInput.AddElement(this);
}
public virtual UniTask EntryAsync()
{
@@ -58,18 +59,26 @@ namespace BITKit.Entities
public virtual UniTask ExitAsync()
{
AllowRendering.RemoveElement(this);
if (cameraTransform is not null)
{
cameraTransform.localPosition = default;
cameraTransform.localRotation = _initialCameraRotation;
}
return UniTask.CompletedTask;
}
public virtual void OnAwake()
{
AllowRendering.AddListener(x=>renderers.ForEach(y=>
AllowRendering.AddListener(x => renderers.ForEach(y =>
{
y.enabled = x;
animator.animator.enabled = x;
animator.enabled = x;
}));
AllowRendering.Invoke();
if (cameraTransform is not null)
_initialCameraRotation = cameraTransform.localRotation;
Initialize();
inputActionGroup.allowInput.Invoke();
}
public virtual void OnDestroy()
@@ -86,6 +95,7 @@ namespace BITKit.Entities
public virtual void AnimationEvent(string eventName)
{
if (IsEntered is false) return;
if (item is not AssetableEquip equip) return;
switch (eventName)
{
case "Melee":
@@ -94,9 +104,9 @@ namespace BITKit.Entities
{
PlayerId = Entity.Id,
Position = Transform.position,
Force = meleeForce * item.MeleeForce,
Range = item.MeleeRange,
Damage = item.MeleeDamage
Force = meleeForce * equip.MeleeForce,
Range = equip.MeleeRange,
Damage = equip.MeleeDamage
});
break;
case "HeavyAttack":
@@ -104,9 +114,9 @@ namespace BITKit.Entities
{
PlayerId = Entity.Id,
Position = Transform.position,
Force = meleeForce * item.HeavyMeleeForce,
Range = item.HeavyMeleeRange,
Damage = item.HeavyMeleeDamage,
Force = meleeForce * equip.HeavyMeleeForce,
Range = equip.HeavyMeleeRange,
Damage = equip.HeavyMeleeDamage,
});
break;
}