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.
162 lines
4.0 KiB
C#
162 lines
4.0 KiB
C#
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;
|
|
}
|
|
}
|