1
This commit is contained in:
61
Unity/Scripts/Entity/Components/Equipment/EntityEquipment.cs
Normal file
61
Unity/Scripts/Entity/Components/Equipment/EntityEquipment.cs
Normal file
@@ -0,0 +1,61 @@
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
using BITKit;
|
||||
using BITKit.Animations;
|
||||
using BITKit.StateMachine;
|
||||
using System.Linq;
|
||||
namespace BITKit.Entities
|
||||
{
|
||||
public interface IEquipBase : IEntryElement, IAwake, IStart, IUpdate
|
||||
{
|
||||
public const string _Equip = "Equip";
|
||||
string AddressablePath { get; }
|
||||
IEntity Entity { get; set; }
|
||||
void PlayAudio(string name);
|
||||
}
|
||||
public abstract class BITEquipBase<T> : MonoBehaviour, IEquipBase where T : IState
|
||||
{
|
||||
[Header(Constant.Header.Components)]
|
||||
public UnityAnimator animator;
|
||||
[Header(Constant.Header.InternalVariables)]
|
||||
protected IEntity entity;
|
||||
public IEntity Entity { get => entity; set => entity = value; }
|
||||
public virtual string AddressablePath => throw new System.NotImplementedException();
|
||||
public virtual void Entry() { }
|
||||
public virtual void Exit() { }
|
||||
public virtual void OnAwake() { }
|
||||
public virtual void OnStart() { }
|
||||
public virtual void OnUpdate(float deltaTime) { }
|
||||
public virtual void PlayAudio(string name) { }
|
||||
}
|
||||
public class EntityEquipment : EntityComponent
|
||||
{
|
||||
public EntryGroup<IEquipBase> equips = new();
|
||||
IEquipBase entrid;
|
||||
public override void OnStart()
|
||||
{
|
||||
base.OnStart();
|
||||
equips.list = GetComponentsInChildren<IEquipBase>(true).ToList();
|
||||
foreach (var x in equips.list)
|
||||
{
|
||||
x.Entity = entity;
|
||||
x.OnAwake();
|
||||
}
|
||||
foreach (var x in equips.list)
|
||||
{
|
||||
x.OnStart();
|
||||
}
|
||||
}
|
||||
public override void OnUpdate(float deltaTime)
|
||||
{
|
||||
if (isLocalPlayer)
|
||||
{
|
||||
if (equips.TryGetEntried(out entrid))
|
||||
{
|
||||
entrid.OnUpdate(deltaTime);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user