feat(battle-engine): close the AI-simulation subsystem (verbatim)
Copied the 89 uncopied AI*SimulationUtility/extension files defining the AIVirtualCard/AIVirtualField extension methods; the compile loop then auto-closed the revealed type deps (~3049 files total, drift-clean). 10.0k -> 62 errors.
This commit is contained in:
161
SVSim.BattleEngine/Engine/Wizard/RankMatchEnemyAI.cs
Normal file
161
SVSim.BattleEngine/Engine/Wizard/RankMatchEnemyAI.cs
Normal file
@@ -0,0 +1,161 @@
|
||||
using System;
|
||||
using System.Collections;
|
||||
using System.Diagnostics;
|
||||
using UnityEngine;
|
||||
using Wizard.Battle.View.Vfx;
|
||||
|
||||
namespace Wizard;
|
||||
|
||||
public class RankMatchEnemyAI : EnemyAI
|
||||
{
|
||||
private Stopwatch _turnTimeStopWatch = new Stopwatch();
|
||||
|
||||
public override bool IsStackAction => _isStackAction;
|
||||
|
||||
public override bool IsConnectNetwork => _isConnectNetwork;
|
||||
|
||||
public RankMatchEnemyAI()
|
||||
{
|
||||
base.IsRankMatchAI = true;
|
||||
}
|
||||
|
||||
public override VfxBase GetEmote(AIEmoteCmdType cmdType, AISituationInfo situation = null, ClassCharaPrm.EmotionType receivedEmoteType = ClassCharaPrm.EmotionType.NULL, int emoteInput = -1)
|
||||
{
|
||||
return NullVfx.GetInstance();
|
||||
}
|
||||
|
||||
protected override IEnumerator WeakLogicTimerCoroutine()
|
||||
{
|
||||
float currentMilliSec = 0f;
|
||||
float currentTimeOverLogicSec = 0f;
|
||||
_elapsedThinkingTime = 0f;
|
||||
_currentThinkingIntervalTime = 0f;
|
||||
_isRunTurnEndLimitTimer = false;
|
||||
_turnStartVfxFinishTime = 0f;
|
||||
_elapsedTurnTimeAfterTurnStartVfx = 0f;
|
||||
_turnTimeStopWatch.Reset();
|
||||
_turnTimeStopWatch.Start();
|
||||
while (true)
|
||||
{
|
||||
yield return null;
|
||||
if (base.IsBattleEnd)
|
||||
{
|
||||
break;
|
||||
}
|
||||
float num = (float)(_turnTimeStopWatch.Elapsed.TotalMilliseconds - (double)currentMilliSec) / 1000f;
|
||||
currentMilliSec = (float)_turnTimeStopWatch.Elapsed.TotalMilliseconds;
|
||||
float num2 = currentMilliSec / 1000f;
|
||||
if (_isRunTurnEndLimitTimer)
|
||||
{
|
||||
_elapsedTurnTimeAfterTurnStartVfx = num2 - _turnStartVfxFinishTime;
|
||||
}
|
||||
if (battleMgr.VfxMgr.IsEnd)
|
||||
{
|
||||
if (_enabledThinkingCounter)
|
||||
{
|
||||
_elapsedThinkingTime += num;
|
||||
}
|
||||
if (base.IsThinkingInterval)
|
||||
{
|
||||
_currentThinkingIntervalTime -= num;
|
||||
}
|
||||
if (!_isRunTurnEndLimitTimer)
|
||||
{
|
||||
_turnStartVfxFinishTime = num2;
|
||||
_isRunTurnEndLimitTimer = true;
|
||||
}
|
||||
}
|
||||
if (!base.IsRunWeakLogic)
|
||||
{
|
||||
currentTimeOverLogicSec += num;
|
||||
_timeOverLogicSec = (int)currentTimeOverLogicSec;
|
||||
if (_timeOverLogicSec > 7 && battleMgr.VfxMgr.IsEnd && AIOperationQueue.Count <= 0)
|
||||
{
|
||||
ChangeWeakLogic();
|
||||
currentTimeOverLogicSec = 0f;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public override void Retire()
|
||||
{
|
||||
EnemyAICoroutine.GetInstance().StopAllCoroutines();
|
||||
BattleCoroutine instance = BattleCoroutine.GetInstance();
|
||||
if (weakLogicCoroutine != null)
|
||||
{
|
||||
instance.StopCoroutine(weakLogicCoroutine);
|
||||
weakLogicCoroutine = null;
|
||||
}
|
||||
battleMgr.VfxMgr.RegisterImmediateVfx(new CanNotTouchCardVfx());
|
||||
if (!battleMgr.GetBattlePlayer(isPlayer: true).Class.IsDead)
|
||||
{
|
||||
battleMgr.VfxMgr.RegisterSequentialVfx(battleMgr.DeadClass(PlayerDead: false, BattleManagerBase.FINISH_TYPE.RETIRE));
|
||||
battleMgr.VfxMgr.RegisterSequentialVfx(InstantVfx.Create(delegate
|
||||
{
|
||||
battleMgr.InitiateGameEndSequence(hasWon: true);
|
||||
}));
|
||||
}
|
||||
}
|
||||
|
||||
public override void Disconnect()
|
||||
{
|
||||
_isConnectNetwork = false;
|
||||
}
|
||||
|
||||
public override void Reconnect()
|
||||
{
|
||||
_isConnectNetwork = true;
|
||||
}
|
||||
|
||||
public override void CleanupStackedAction()
|
||||
{
|
||||
base.IsStopThinkingLogic = true;
|
||||
ExecuteActionOperationQueue();
|
||||
}
|
||||
|
||||
public override void RegistActionOperationQueue(Action action)
|
||||
{
|
||||
base.RegistActionOperationQueue(action);
|
||||
CheckIsStackAction();
|
||||
}
|
||||
|
||||
public override void ExecuteActionOperationQueue()
|
||||
{
|
||||
base.ExecuteActionOperationQueue();
|
||||
CheckIsStackAction();
|
||||
}
|
||||
|
||||
protected override void OnBeforeTurnEnd()
|
||||
{
|
||||
if (weakLogicCoroutine != null)
|
||||
{
|
||||
BattleCoroutine.GetInstance().StopCoroutine(weakLogicCoroutine);
|
||||
weakLogicCoroutine = null;
|
||||
}
|
||||
}
|
||||
|
||||
protected override void OnFinishOprAttack()
|
||||
{
|
||||
CheckIsStackAction();
|
||||
}
|
||||
|
||||
protected override void OnFinishOprTargetSelect()
|
||||
{
|
||||
SetupThinkingInterval();
|
||||
CheckIsStackAction();
|
||||
}
|
||||
|
||||
protected override void CheckIsStackAction()
|
||||
{
|
||||
_isStackAction = AIOperationQueue.Count > 0;
|
||||
}
|
||||
|
||||
protected override void SetupThinkingInterval()
|
||||
{
|
||||
_enabledThinkingCounter = false;
|
||||
float num = UnityEngine.Random.Range(0f, 3f);
|
||||
num = ((num <= _elapsedThinkingTime) ? 0f : num);
|
||||
_currentThinkingIntervalTime = num;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user