Files
SVSimServer/SVSim.BattleEngine/Engine/BattleUIContainer.cs
gamer147 0d9d8acae0 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.
2026-06-05 16:57:20 -04:00

221 lines
5.5 KiB
C#

using System;
using UnityEngine;
using Wizard;
public class BattleUIContainer : MonoBehaviour
{
[SerializeField]
public BattleButtonControl ButtonControl;
[SerializeField]
private WizardUIButton BattleMenuBtn;
[SerializeField]
private UIButton TurnEndBtn;
[SerializeField]
public Transform EnemyChoiceBraveBtn;
[SerializeField]
private GameObject _battery;
private const float LONG_PRESS_TIME = 0.2f;
private float? _predictionWaitTime;
public Action<bool> ShowPrediction;
private bool _enableMenuRequest;
private InputMgr _inputMgr;
public bool PlayerCardPlaying;
private bool _forceDisableMenu;
public GameObject Battery => _battery;
private void Start()
{
BattleMenuBtn.onPress.Clear();
BattleMenuBtn.onPress.Add(new EventDelegate(delegate
{
ButtonControl.OnPressMenuBtn();
}));
if (!GameMgr.GetIns().IsWatchBattle)
{
TurnEndBtn.onClick.Clear();
TurnEndBtn.onClick.Add(new EventDelegate(delegate
{
ButtonControl.OnPressTurnEnd();
}));
}
_predictionWaitTime = null;
UIEventListener.Get(TurnEndBtn.gameObject).onPress = delegate(GameObject obj, bool isPress)
{
if (isPress)
{
_predictionWaitTime = Time.realtimeSinceStartup;
}
else
{
_predictionWaitTime = null;
if (ShowPrediction != null)
{
ShowPrediction(obj: false);
}
}
};
UIEventListener.Get(TurnEndBtn.gameObject).onHover = delegate(GameObject obj, bool isHover)
{
if (BattleManagerBase.UseCustomMouse && UIManager.GetInstance().ApplicationHasFocus)
{
if (isHover)
{
_predictionWaitTime = Time.realtimeSinceStartup;
}
else
{
_predictionWaitTime = null;
if (ShowPrediction != null)
{
ShowPrediction(isHover);
}
}
}
};
UIEventListener.Get(TurnEndBtn.gameObject).onDragOut = delegate
{
_predictionWaitTime = null;
if (ShowPrediction != null)
{
ShowPrediction(obj: false);
}
};
_inputMgr = GameMgr.GetIns().GetInputMgr();
}
public void EnableMenu()
{
if (!PlayerCardPlaying && !_forceDisableMenu)
{
BattleMenuBtn.isEnabled = true;
SetEnableReset(isEnable: true);
SetEnableHint(isEnable: true);
}
}
public void RequestEnableMenuWhenTouchable()
{
_enableMenuRequest = true;
}
private void TryEnableMenu()
{
if (BattleManagerBase.GetIns().GetBattlePlayer(isPlayer: true).BattleView.IsTouchable())
{
EnableMenu();
_enableMenuRequest = false;
}
}
public void ForceEnableMenu()
{
_forceDisableMenu = false;
EnableMenu();
}
public void DisableMenu(bool isForceDisable = false)
{
if (isForceDisable || (!BattleManagerBase.GetIns().IsRecovery && !GameMgr.GetIns().IsReplayBattle && !GameMgr.GetIns().IsWatchBattle))
{
BattleMenuBtn.isEnabled = false;
SetEnableReset(isEnable: false);
SetEnableHint(isEnable: false);
}
}
public void ForceDisableMenu()
{
_forceDisableMenu = true;
_enableMenuRequest = false;
DisableMenu();
}
public void SetEnableReset(bool isEnable)
{
BattleManagerBase ins = BattleManagerBase.GetIns();
if (ins is PuzzleBattleManager)
{
(ins as PuzzleBattleManager).ResetButton.SetState((!isEnable) ? UIButtonColor.State.Disabled : UIButtonColor.State.Normal, immediate: false);
}
}
public void SetEnableHint(bool isEnable)
{
BattleManagerBase ins = BattleManagerBase.GetIns();
if (ins is PuzzleBattleManager)
{
(ins as PuzzleBattleManager).HintButton.isEnabled = isEnable;
}
}
public bool IsEnableMenu()
{
return BattleMenuBtn.isEnabled;
}
private void Update()
{
UIManager instance = UIManager.GetInstance();
GameMgr ins = GameMgr.GetIns();
BattleManagerBase ins2 = BattleManagerBase.GetIns();
if (_enableMenuRequest)
{
if (BattleMenuBtn.isEnabled)
{
_enableMenuRequest = false;
}
else
{
TryEnableMenu();
}
}
if (!Input.GetMouseButton(0) && instance != null && instance.IsCurrentScene(UIManager.ViewScene.Battle) && !instance.isOpenLoading() && !instance.isFading() && ins.GetInputMgr().isBackKeyEnable && !BattleManagerBase.IsTutorial)
{
if (BattleMenuBtn.gameObject.activeInHierarchy && BattleMenuBtn.isActiveAndEnabled && !instance.isOpenDialog())
{
if (Input.GetKeyDown(KeyCode.Escape) && IsEnableMenu())
{
ButtonControl.OnPressMenuBtn();
}
if (BattleManagerBase.UseKeyboardTurnEndSpaceShortcut && _inputMgr.IsKeyboardSpace() && ins2.BattlePlayer.PlayerBattleView.TurnEndButtonUI.GameObject.activeInHierarchy && ins2.BattlePlayer.PlayerBattleView.TurnEndButtonUI.GetEnableLabel && ins2.BattlePlayer.IsSelfTurn && _inputMgr.KeyboardEnableControlSpace)
{
ButtonControl.OnPressTurnEnd();
}
}
else if (instance.isOpenDialog() && !ButtonControl.IsSettingMenuOpen && !ButtonControl.IsRetireMenuOpen && !ButtonControl.IsQuestMissionOpen && Input.GetKeyDown(KeyCode.Escape))
{
ins2.BattlePlayer.PlayerBattleView.IsMenuCloseEscape = true;
ButtonControl.HideBattleMenu();
}
}
if (TurnEndBtn.state == UIButtonColor.State.Pressed || BattleManagerBase.UseCustomMouse)
{
if (ShowPrediction != null && _predictionWaitTime.HasValue && _predictionWaitTime.Value + 0.2f < Time.realtimeSinceStartup)
{
ShowPrediction(obj: true);
_predictionWaitTime = null;
}
}
else
{
_predictionWaitTime = null;
}
if (ins.IsWatchBattle && ins2.IsBattleEnd)
{
ButtonControl.HideAllMenu(isWithoutSE: true);
}
}
}