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.

96 lines
2.3 KiB
C#

using Entitas;
using System.Collections.Generic;
using Game;
public class EntityDestroySystem : IExecuteSystem, IInitializeSystem
{
private IGroup<GameEntity> _entities;
private List<GameEntity> _deleteEntities;
public void Initialize()
{
_entities = Util.GetGroup(GameMatcher.ID);
_deleteEntities = new List<GameEntity>();
}
public void Execute()
{
foreach (var entity in _entities)
{
if (entity.iD.Data.IsDestroy)
{
_deleteEntities.Add(entity);
}
}
foreach (var deleteEntity in _deleteEntities)
{
ResetComponent(deleteEntity);
deleteEntity.Destroy();
}
_deleteEntities.Clear();
}
public void ResetComponent(GameEntity entity)
{
var master = Util.GetMaster();
var entityId = entity.ID();
if (entity.hasID)
{
Util.ClearId(entity);
}
if (entity.hasView)
{
Util.ClearView(entity);
}
if (entity.hasMove)
{
Util.ClearMove(entity);
}
if (entity.hasTimeline)
{
Util.EndSkillTimeline(entity);
}
if (entity.hasCombo)
{
Util.ClearCombo(entity);
}
if (entity.hasSkill)
{
Util.ClearSkill(entity);
}
if (entity.hasHp)
{
Util.ClearHp(entity);
}
if (entity.hasAI)
{
Util.ClearAI(entity);
}
if (entity.hasBuff)
{
Util.ClearBuff(entity);
}
if (entity.hasBullet)
{
Util.ClearBullet(entity);
}
if (entity.hasPoint)
{
Util.ClearPoint(entity);
}
if (entity.hasMasterSoul)
{
Util.ClearMasterSoul(entity);
}
if (entity.hasInteract)
{
Util.ClearInteract(entity);
}
if (master.combo.TargetLock == entityId)
{
master.combo.TargetLock = 0;
}
if (master.combo.TargetLastLockTime.ContainsKey(entityId))
{
master.combo.TargetLastLockTime.Remove(entityId);
}
}
}