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);
 | |
|     }
 | |
| 
 | |
| } |