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.
157 lines
4.0 KiB
C#
157 lines
4.0 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
|
|
namespace Game
|
|
{
|
|
public class EcsManager : ManagerBase<EcsManager>
|
|
{
|
|
private GameEntity _master;
|
|
private GameEntity _masterSoul;
|
|
private GameSystems _systems;
|
|
private GameFixedSystems _fixedSystems;
|
|
private GameLateSystems _lateSystems;
|
|
|
|
public override void OnCreate()
|
|
{
|
|
_systems = new GameSystems();
|
|
_systems.Initialize();
|
|
_fixedSystems = new GameFixedSystems();
|
|
_fixedSystems.Initialize();
|
|
_lateSystems = new GameLateSystems();
|
|
_lateSystems.Initialize();
|
|
}
|
|
|
|
public override void Update()
|
|
{
|
|
_systems.Execute();
|
|
}
|
|
|
|
public override void FixedUpdate()
|
|
{
|
|
_fixedSystems.Execute();
|
|
}
|
|
|
|
public override void LateUpdate()
|
|
{
|
|
_lateSystems.Execute();
|
|
}
|
|
|
|
public override void OnDestroy()
|
|
{
|
|
_systems.Cleanup();
|
|
_fixedSystems.Cleanup();
|
|
_lateSystems.Cleanup();
|
|
}
|
|
|
|
public void CreateMaster()
|
|
{
|
|
Util.CreateEntityImmediately(GameConst.MasterId, (entity) => { _master = entity; });
|
|
Util.CreateEntityImmediately(GameConst.MasterSoulId, (entity) => { _masterSoul = entity; });
|
|
}
|
|
|
|
public GameEntity GetMaster()
|
|
{
|
|
return _master;
|
|
}
|
|
|
|
public int GetMasterID()
|
|
{
|
|
return _master?.ID() ?? 0;
|
|
}
|
|
|
|
public GameEntity GetMasterSoul()
|
|
{
|
|
return _masterSoul;
|
|
}
|
|
|
|
public int GetMasterSoulID()
|
|
{
|
|
return _masterSoul?.ID() ?? 0;
|
|
}
|
|
public void GetAllEntities(List<int> allEnemies,ETeam teem)
|
|
{
|
|
var entities = Util.GetGroup(GameMatcher.Hp);
|
|
allEnemies.Clear();
|
|
foreach (var entity in entities)
|
|
{
|
|
if (entity.Team() == teem)
|
|
{
|
|
allEnemies.Add(entity.ID());
|
|
}
|
|
}
|
|
}
|
|
|
|
public void ForeachEnemies(ETeam team, Action<GameEntity> f)
|
|
{
|
|
var entities = Util.GetGroup(GameMatcher.Hp);
|
|
foreach (var entity in entities)
|
|
{
|
|
if (entity.Team() != team)
|
|
{
|
|
f(entity);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
public sealed class GameSystems : Feature
|
|
{
|
|
public GameSystems()
|
|
{
|
|
//实体创建
|
|
Add(new EntityCreateSystem());
|
|
|
|
//玩家操作
|
|
Add(new InputSystem());
|
|
|
|
//非玩家操作
|
|
Add(new AIDirectorSystem());
|
|
Add(new AISystem());
|
|
Add(new MasterSoulSystem());
|
|
Add(new PointSystem());
|
|
Add(new BulletSystem());
|
|
|
|
//技能
|
|
Add(new ComboLockSystem());
|
|
Add(new ComboSystem());
|
|
Add(new TimelineSystem());
|
|
Add(new InteractSystem());
|
|
|
|
//通用
|
|
Add(new MoveSystem());
|
|
Add(new AnimationSystem());
|
|
Add(new BuffSystem());
|
|
Add(new RecoverSystem());
|
|
|
|
//结算
|
|
Add(new SettleSystem());
|
|
|
|
//表现
|
|
Add(new PauseSystem());
|
|
Add(new ShadowSystem());
|
|
Add(new ViewSystem());
|
|
|
|
//死亡
|
|
Add(new DieSystem());
|
|
|
|
//实体删除
|
|
Add(new EntityDestroySystem());
|
|
}
|
|
}
|
|
|
|
public sealed class GameFixedSystems : Feature
|
|
{
|
|
public GameFixedSystems()
|
|
{
|
|
Add(new MoveSystemFixed());
|
|
}
|
|
}
|
|
|
|
public sealed class GameLateSystems : Feature
|
|
{
|
|
public GameLateSystems()
|
|
{
|
|
Add(new ViewLateSystem());
|
|
}
|
|
}
|
|
} |