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.
83 lines
2.1 KiB
C#
83 lines
2.1 KiB
C#
using Entitas;
|
|
using UnityEngine;
|
|
using Game;
|
|
public class AIDirectorSystem : IExecuteSystem, IInitializeSystem
|
|
{
|
|
private LevelPoolItem _curLevel;
|
|
private LevelNodeMonsterWave _curWave;
|
|
private float _tickTime;
|
|
private float _attackRoundTime;
|
|
private float _attackWaitTime;
|
|
private int _attackTimes;
|
|
|
|
public void Initialize()
|
|
{
|
|
}
|
|
public void Execute()
|
|
{
|
|
if (Util.IsLevelLoading())
|
|
{
|
|
return;
|
|
}
|
|
var level = Util.GetCurLevel();
|
|
var wave = Util.GetCurWave();
|
|
if (level == null || wave == null)
|
|
{
|
|
return;
|
|
}
|
|
if (level != _curLevel)
|
|
{
|
|
_curLevel = level;
|
|
return;
|
|
}
|
|
if (wave != _curWave)
|
|
{
|
|
_curWave = wave;
|
|
Reset();
|
|
return;
|
|
}
|
|
UpdateAIDirectorBlueprint();
|
|
|
|
}
|
|
|
|
private void Reset()
|
|
{
|
|
_attackRoundTime = 0;
|
|
_attackWaitTime = 0;
|
|
_attackTimes = 0;
|
|
}
|
|
|
|
private void UpdateAIDirectorBlueprint()
|
|
{
|
|
if (!Util.GetAIDirectorInit())
|
|
{
|
|
Util.SetAIDirectorInit();
|
|
Util.RunBp(GameConst.BlueprintAIDirectorCommon, GameConst.BpEntranceEnter);
|
|
}
|
|
_tickTime -= Time.deltaTime;
|
|
if (_tickTime < 0)
|
|
{
|
|
_tickTime = GameConst.AIDirectorTick;
|
|
Util.RunBp(GameConst.BlueprintAIDirectorCommon, GameConst.BpEntranceUpdate);
|
|
}
|
|
if (_attackRoundTime < _curWave.attackRound)
|
|
{
|
|
_attackRoundTime += Time.deltaTime;
|
|
return;
|
|
}
|
|
if (_attackWaitTime < _curWave.attackFrequency)
|
|
{
|
|
_attackWaitTime += Time.deltaTime;
|
|
return;
|
|
}
|
|
if (_attackTimes >= _curWave.attackTimes)
|
|
{
|
|
Reset();
|
|
return;
|
|
}
|
|
_attackTimes++;
|
|
_attackWaitTime = 0;
|
|
Util.RunBp(GameConst.BlueprintAIDirectorCommon, GameConst.BpEntranceExecute);
|
|
}
|
|
|
|
} |