feat(battle-engine): M1 auto-copy closure (782 battle-logic files)
Compile-driven bulk-copy loop (tools/engine-port/m1_copy_loop.py) pulled the precise reference closure of the battle-core roots, stopping at the classify god-object/View-VFX-UI boundary. 782 files; no re-explosion (M0 had estimated ~order 1000). Residual frontier = 52 shim-classified + 80 external (Unity/BCL) types to author next.
This commit is contained in:
320
SVSim.BattleEngine/Engine/TurnEndTimeController.cs
Normal file
320
SVSim.BattleEngine/Engine/TurnEndTimeController.cs
Normal file
@@ -0,0 +1,320 @@
|
||||
using System;
|
||||
using Cute;
|
||||
using UnityEngine;
|
||||
using Wizard;
|
||||
using Wizard.Battle.View;
|
||||
using Wizard.Battle.View.Vfx;
|
||||
|
||||
public class TurnEndTimeController
|
||||
{
|
||||
private enum TIMEOUT_TURNEND_SCENE
|
||||
{
|
||||
NONE = 0,
|
||||
TIMEOUT_START = 10,
|
||||
TIMEOUT_START_WAIT = 20,
|
||||
TURNEND_OPERATION = 30,
|
||||
TURNEND_OPERATION_WAIT = 40,
|
||||
EFFECT_STOP = 50,
|
||||
EFFECT_STOP_WAIT = 60,
|
||||
NOT_TOUCH_RELEASE = 70
|
||||
}
|
||||
|
||||
public const float ALERT_TIME = 20f;
|
||||
|
||||
private const float ALERT_SCALE_RATE = 1.3333334f;
|
||||
|
||||
private NetworkBattleManagerBase _networkBattleManager;
|
||||
|
||||
private BattlePlayer _battlePlayer;
|
||||
|
||||
private ITurnEndButtonUI _turnEndUI;
|
||||
|
||||
private long _startTicks;
|
||||
|
||||
private bool _isAlertEffect;
|
||||
|
||||
private float _extendTime;
|
||||
|
||||
private GameObject _alertEffect;
|
||||
|
||||
private bool _isMovingTurnEndTimer;
|
||||
|
||||
private TIMEOUT_TURNEND_SCENE _timeoutTurnEndScene;
|
||||
|
||||
private CanNotTouchCardVfx _canNotTouchVfx;
|
||||
|
||||
private string _opponentTurnTurnEndLogMessage = "";
|
||||
|
||||
private bool _isOpponentTurnTimerUpdateLog;
|
||||
|
||||
private int _logAddNum;
|
||||
|
||||
private bool _isTurnStartTimeCheckLog;
|
||||
|
||||
protected virtual bool IsTurnTimeDecrement { get; set; }
|
||||
|
||||
public bool IsNowTurnTimeDecrement { get; private set; }
|
||||
|
||||
public bool IsNextTurnTimeDecrement { get; private set; }
|
||||
|
||||
public TurnEndTimeController(BattleManagerBase battleMgr, BattlePlayer battlePlayer, ITurnEndButtonUI turnEnd)
|
||||
{
|
||||
LocalLog.AccumulateLastTraceLog("TurnEndTimeController");
|
||||
_networkBattleManager = battleMgr as NetworkBattleManagerBase;
|
||||
_battlePlayer = battlePlayer;
|
||||
_networkBattleManager.OperateMgr.OnTurnEnd_ButtonPush += delegate
|
||||
{
|
||||
IsTurnTimeDecrement = false;
|
||||
SetDecrementFlag(isDecrement: false);
|
||||
LocalLog.AccumulateLastTraceLog("OnTurnEnd_ButtonPush");
|
||||
};
|
||||
_turnEndUI = turnEnd;
|
||||
SetDecrementFlag(isDecrement: true);
|
||||
}
|
||||
|
||||
public void StartCountDown(string log)
|
||||
{
|
||||
LocalLog.AccumulateLastTraceLog("StartCountDown " + log);
|
||||
DateTime absoluteTime = TimeUtil.GetAbsoluteTime();
|
||||
_startTicks = absoluteTime.Ticks;
|
||||
_extendTime = 0f;
|
||||
log = log + absoluteTime.Hour + ":" + absoluteTime.Minute + ":" + absoluteTime.Second + ":" + absoluteTime.Millisecond.ToString("000") + ":";
|
||||
AddTurnEndTimerLog(" StartCountDown " + log);
|
||||
_isTurnStartTimeCheckLog = false;
|
||||
_turnEndUI.SettingTimer(GetMaxSecond(), isRed: false);
|
||||
EndCountDown("startAfter");
|
||||
_isMovingTurnEndTimer = true;
|
||||
}
|
||||
|
||||
public void EndCountDown(string log)
|
||||
{
|
||||
LocalLog.AccumulateLastTraceLog("EndCountDown " + log);
|
||||
AddTurnEndTimerLog(" EndCountDown " + log);
|
||||
_isMovingTurnEndTimer = false;
|
||||
if (_isAlertEffect)
|
||||
{
|
||||
_alertEffect = null;
|
||||
GameMgr.GetIns().GetEffectMgr().Stop(EffectMgr.EffectType.CMN_UI_TURN_5);
|
||||
_isAlertEffect = false;
|
||||
}
|
||||
if (_turnEndUI as UnityEngine.Object != null)
|
||||
{
|
||||
_turnEndUI.SettingTimer(0f, isRed: false);
|
||||
}
|
||||
}
|
||||
|
||||
public void AddTurnEndTimerLog(string text)
|
||||
{
|
||||
_logAddNum++;
|
||||
if (_logAddNum <= 15)
|
||||
{
|
||||
DateTime dateTime = DateTime.Now.ToUniversalTime();
|
||||
string text2 = dateTime.Hour + ":" + dateTime.Minute + ":" + dateTime.Second + ":" + dateTime.Millisecond.ToString("000");
|
||||
_opponentTurnTurnEndLogMessage = _opponentTurnTurnEndLogMessage + text2 + text + " \n";
|
||||
}
|
||||
}
|
||||
|
||||
public void BattleEndToTraceLog()
|
||||
{
|
||||
if (_isOpponentTurnTimerUpdateLog)
|
||||
{
|
||||
LocalLog.AccumulateTraceLog("665987UpdateTimerCountDownBatlteEnd " + _opponentTurnTurnEndLogMessage);
|
||||
}
|
||||
}
|
||||
|
||||
public bool IsCountdownRunning()
|
||||
{
|
||||
return _isMovingTurnEndTimer;
|
||||
}
|
||||
|
||||
public void SetDecrementFlag(bool isDecrement)
|
||||
{
|
||||
IsNextTurnTimeDecrement = isDecrement;
|
||||
LocalLog.AccumulateLastTraceLog("SetDecrementFlag " + isDecrement);
|
||||
}
|
||||
|
||||
public void SetExtendTime(float leftTime)
|
||||
{
|
||||
_extendTime = leftTime;
|
||||
}
|
||||
|
||||
public void UpdateTimerCountDown()
|
||||
{
|
||||
if (!_isMovingTurnEndTimer || _turnEndUI == null || !_turnEndUI.GameObject.activeSelf || _timeoutTurnEndScene >= TIMEOUT_TURNEND_SCENE.TIMEOUT_START)
|
||||
{
|
||||
return;
|
||||
}
|
||||
if (!GameMgr.GetIns().IsWatchBattle && (_battlePlayer.IsTurnStartEffectNotFinished || !_battlePlayer.IsSelfTurn))
|
||||
{
|
||||
if (!_isOpponentTurnTimerUpdateLog)
|
||||
{
|
||||
LocalLog.AccumulateTraceLog("665987ErrorUpdateTimerCountDown ");
|
||||
_isOpponentTurnTimerUpdateLog = true;
|
||||
}
|
||||
return;
|
||||
}
|
||||
DateTime absoluteTime = TimeUtil.GetAbsoluteTime();
|
||||
long ticks = absoluteTime.Ticks - _startTicks;
|
||||
TimeSpan timeSpan = new TimeSpan(ticks);
|
||||
float num = GetMaxSecond() - (float)timeSpan.TotalMilliseconds / 1000f + _extendTime;
|
||||
if (!_isTurnStartTimeCheckLog)
|
||||
{
|
||||
AddTurnEndTimerLog(" UpdateTimerCountDown differenceSecond " + num + " IsTurnTimeDecrement" + IsTurnTimeDecrement + "_startTicks" + _startTicks + "_nowTicks" + absoluteTime.Ticks + "_extendTime" + _extendTime);
|
||||
_isTurnStartTimeCheckLog = true;
|
||||
}
|
||||
if (num <= 0f)
|
||||
{
|
||||
if (CompulsionTurnEnd())
|
||||
{
|
||||
return;
|
||||
}
|
||||
}
|
||||
else if (num < 20f)
|
||||
{
|
||||
UpdateTimerPosition(num, isShowingAlert: true);
|
||||
if (!_isAlertEffect)
|
||||
{
|
||||
_isAlertEffect = true;
|
||||
EmitHandUtility.SendTurnEndReady(_networkBattleManager, IsTurnTimeDecrement);
|
||||
if (!_networkBattleManager.IsRecovery)
|
||||
{
|
||||
_alertEffect = GameMgr.GetIns().GetEffectMgr().Start(EffectMgr.EffectType.CMN_UI_TURN_5, _turnEndUI.GetBtnPosition())
|
||||
.GetGameObjIns();
|
||||
_alertEffect.transform.localScale = ((!GameMgr.GetIns().IsWatchBattle) ? (Vector3.one * 20f) : (Vector3.one * 19f));
|
||||
}
|
||||
}
|
||||
else if (!_networkBattleManager.IsRecovery)
|
||||
{
|
||||
if (_alertEffect == null)
|
||||
{
|
||||
_alertEffect = GameMgr.GetIns().GetEffectMgr().Start(EffectMgr.EffectType.CMN_UI_TURN_5, _turnEndUI.GetBtnPosition())
|
||||
.GetGameObjIns();
|
||||
}
|
||||
else
|
||||
{
|
||||
float x = _alertEffect.transform.localScale.x;
|
||||
x += (GetEffectScaleByTime(num) - x) * 0.5f;
|
||||
_alertEffect.transform.localScale = Vector3.one * x;
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
UpdateTimerPosition(num, isShowingAlert: false);
|
||||
}
|
||||
if (_battlePlayer.IsSelfTurn && IsNextTurnTimeDecrement && (Input.GetMouseButton(0) || Input.GetMouseButton(1) || Input.GetMouseButton(2) || Input.touchCount >= 1))
|
||||
{
|
||||
LocalLog.AccumulateLastTraceLog("IsNextTurnTimeDecrement Off");
|
||||
SetDecrementFlag(isDecrement: false);
|
||||
}
|
||||
}
|
||||
|
||||
protected virtual bool CompulsionTurnEnd()
|
||||
{
|
||||
if (_timeoutTurnEndScene >= TIMEOUT_TURNEND_SCENE.TIMEOUT_START)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
if (_networkBattleManager.TouchControl._touchProcessor != null && _networkBattleManager.TouchControl.IsProcessorStart && _networkBattleManager.TouchControl.IsProcessorUpdate && _networkBattleManager.TouchControl.IsProcessorEnd && !_networkBattleManager.VfxMgr.IsEnd)
|
||||
{
|
||||
_networkBattleManager.TouchControl.IsForceEnd = true;
|
||||
return false;
|
||||
}
|
||||
_battlePlayer.IsTimeOverTurnEndProcessing = true;
|
||||
if (_networkBattleManager.JudgeCurrentFinishStatus() == NetworkBattleReceiver.RESULT_CODE.NotFinish)
|
||||
{
|
||||
VfxBase vfx = NullVfx.GetInstance();
|
||||
GameMgr.GetIns().GetEffectMgr().Start(EffectMgr.EffectType.CMN_UI_TURN_6, _turnEndUI.GetBtnPosition());
|
||||
if (!(_networkBattleManager.OperateMgr is RecoveryOperateMgr))
|
||||
{
|
||||
vfx = _networkBattleManager.OperateMgr.PlayerTurnEnd(isAuto: true);
|
||||
}
|
||||
_networkBattleManager.VfxMgr.RegisterSequentialVfx(vfx);
|
||||
_networkBattleManager.TouchControl.IsForceEnd = false;
|
||||
_timeoutTurnEndScene = TIMEOUT_TURNEND_SCENE.TIMEOUT_START;
|
||||
EndCountDown("TimeOut");
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
protected virtual void UpdateTimerPosition(float timeDifference, bool isShowingAlert)
|
||||
{
|
||||
_turnEndUI.SettingTimer(timeDifference, isShowingAlert);
|
||||
}
|
||||
|
||||
public void UpdateTimeoutTurnEnd()
|
||||
{
|
||||
switch (_timeoutTurnEndScene)
|
||||
{
|
||||
case TIMEOUT_TURNEND_SCENE.TIMEOUT_START:
|
||||
_canNotTouchVfx = new CanNotTouchCardVfx();
|
||||
_networkBattleManager.VfxMgr.RegisterImmediateVfx(_canNotTouchVfx);
|
||||
IsTurnTimeDecrement = IsNextTurnTimeDecrement;
|
||||
AddTurnEndTimerLog("ExecTurnEnd IsTurnTimeDecrement" + IsTurnTimeDecrement);
|
||||
_timeoutTurnEndScene = TIMEOUT_TURNEND_SCENE.TIMEOUT_START_WAIT;
|
||||
_turnEndUI.ChangeButtonView(isMyTurn: false);
|
||||
_turnEndUI.HideBtn();
|
||||
_turnEndUI._isChangeViewLock = true;
|
||||
break;
|
||||
case TIMEOUT_TURNEND_SCENE.TIMEOUT_START_WAIT:
|
||||
_timeoutTurnEndScene = TIMEOUT_TURNEND_SCENE.TURNEND_OPERATION;
|
||||
break;
|
||||
case TIMEOUT_TURNEND_SCENE.TURNEND_OPERATION:
|
||||
if ((!_networkBattleManager.IsRecovery && !_networkBattleManager.IsCardPlayToTurnEndTimeoutStop && !_battlePlayer.PlayerBattleView.IsSelecting) || _networkBattleManager.VfxMgr.IsEnd)
|
||||
{
|
||||
_networkBattleManager.VfxMgr.RegisterSequentialVfx(_networkBattleManager.OperateMgr.TurnEndOperation(isPlayer: true));
|
||||
_timeoutTurnEndScene = TIMEOUT_TURNEND_SCENE.TURNEND_OPERATION_WAIT;
|
||||
_turnEndUI._isChangeViewLock = false;
|
||||
}
|
||||
break;
|
||||
case TIMEOUT_TURNEND_SCENE.TURNEND_OPERATION_WAIT:
|
||||
_timeoutTurnEndScene = TIMEOUT_TURNEND_SCENE.EFFECT_STOP;
|
||||
break;
|
||||
case TIMEOUT_TURNEND_SCENE.EFFECT_STOP:
|
||||
if (_networkBattleManager.VfxMgr.IsEnd)
|
||||
{
|
||||
_battlePlayer.PlayerBattleView.ForceStopShowSelect();
|
||||
EffectMgr effectMgr = GameMgr.GetIns().GetEffectMgr();
|
||||
effectMgr.Stop(EffectMgr.EffectType.CMN_CARD_SET_1);
|
||||
effectMgr.Stop(EffectMgr.EffectType.CMN_CARD_ACCELERATE_1);
|
||||
effectMgr.Stop(EffectMgr.EffectType.CMN_CARD_CRYSTALLIZE_1);
|
||||
effectMgr.Stop(EffectMgr.EffectType.CMN_CARD_SET_2);
|
||||
effectMgr.Stop(EffectMgr.EffectType.CMN_CARD_SET_3);
|
||||
_timeoutTurnEndScene = TIMEOUT_TURNEND_SCENE.EFFECT_STOP_WAIT;
|
||||
}
|
||||
break;
|
||||
case TIMEOUT_TURNEND_SCENE.EFFECT_STOP_WAIT:
|
||||
_timeoutTurnEndScene = TIMEOUT_TURNEND_SCENE.NOT_TOUCH_RELEASE;
|
||||
break;
|
||||
case TIMEOUT_TURNEND_SCENE.NOT_TOUCH_RELEASE:
|
||||
{
|
||||
IPlayerView playerBattleView = _battlePlayer.PlayerBattleView;
|
||||
_canNotTouchVfx.End();
|
||||
playerBattleView.AllClear(popUpClose: false, isRemoveSideLog: false);
|
||||
playerBattleView.HandView.FocusRearrangeHandHand();
|
||||
_timeoutTurnEndScene = TIMEOUT_TURNEND_SCENE.NONE;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public float GetMaxSecond()
|
||||
{
|
||||
float result = 90f;
|
||||
IsNowTurnTimeDecrement = false;
|
||||
if (IsTurnTimeDecrement)
|
||||
{
|
||||
result = 20f;
|
||||
IsNowTurnTimeDecrement = true;
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
private float GetEffectScaleByTime(float time)
|
||||
{
|
||||
float num = 2f;
|
||||
float num2 = ((!(time > num)) ? 0f : Mathf.Min(1.3333334f, (time - num) / (20f - num) * 1.3333334f));
|
||||
return num2 * 2f + 1f;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user