Files
SVSimServer/SVSim.BattleEngine/Engine/Wizard/BattleButtonControl.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

331 lines
8.6 KiB
C#

using System;
using UnityEngine;
using Wizard.Battle.View;
using Wizard.Battle.View.Vfx;
namespace Wizard;
public class BattleButtonControl : MonoBehaviour
{
public bool _isBattleMenuOptionsButtonPressable = true;
private bool _isBattleMenuOpen;
private bool _isRetireMenuOpen;
private bool _isSettingMenuOpen;
private bool IsRetire;
private BattleManagerBase _battleMgr;
private IPlayerView _battlePlayerView;
private BattleMenuMgr _battleMenu;
private DialogBase _retireDialog;
private DialogBase _settingDialog;
private DialogBase _keyWordDialog;
private DialogBase _questMissionDialog;
private CanNotTouchCardVfx _canNotTouchCardVfx;
public bool IsBattleMenuOpen => _isBattleMenuOpen;
public bool IsRetireMenuOpen => _isRetireMenuOpen;
public DialogBase RetireMenu => _retireDialog;
public bool IsSettingMenuOpen => _isSettingMenuOpen;
public DialogBase SettingMenu => _settingDialog;
public bool IsQuestMissionOpen { get; private set; }
public void Start()
{
_battleMgr = BattleManagerBase.GetIns();
_battlePlayerView = _battleMgr.BattlePlayer.PlayerBattleView;
}
public void OnPressTurnEnd()
{
if (_battleMgr.BattlePlayer._isPlayerActive)
{
if (_battleMgr.TouchControl.HasTouchProcessor)
{
_battleMgr.Pause();
_battleMgr.Resume();
}
else if (_battlePlayerView.IsShowTurnEndDialogOfNotAttackingOrPlaying || _battlePlayerView.IsShowTurnEndDialogOfNotUsingHeroSkill)
{
_battlePlayerView.ShowTurnEndDialog(base.gameObject);
}
else
{
TurnEndConfirm();
}
}
}
private void TurnEndConfirm()
{
_battleMgr.VfxMgr.RegisterSequentialVfx(_battleMgr.OperateMgr.PlayerTurnEnd());
}
public void OnPressKeyBtn(BattleCardBase card, GameObject labelObject, CardParameter baseParameter)
{
GameMgr.GetIns().GetSoundMgr().PlaySe(Se.TYPE.SYS_BTN_DECIDE);
_keyWordDialog = _battlePlayerView.CreateKeyPanel(card, labelObject.GetComponent<UILabel>(), CardMaster.BatttleCardMasterId, baseParameter);
InitializeKeywordDialog(_keyWordDialog);
}
public void OnPressKeyBtn(string text, GameObject labelObject)
{
GameMgr.GetIns().GetSoundMgr().PlaySe(Se.TYPE.SYS_BTN_DECIDE);
_keyWordDialog = BattlePlayerView.CreateKeyPanel(text, labelObject.GetComponent<UILabel>(), CardMaster.CardMasterId.Default);
InitializeKeywordDialog(_keyWordDialog);
}
public void InitializeKeywordDialog(DialogBase dialog)
{
if (dialog != null)
{
bool isUpdateHandCardsPlayability = true;
if (GameMgr.GetIns().IsWatchBattle)
{
isUpdateHandCardsPlayability = !(BattleManagerBase.GetIns() as NetworkBattleManagerBase).IsSkillSelectTiming;
}
CanNotTouchCardVfx canNotTouchVfx = new CanNotTouchCardVfx(isUpdateHandCardsPlayability);
BattleManagerBase.GetIns().VfxMgr.RegisterImmediateVfx(canNotTouchVfx);
dialog.OnClose = (Action)Delegate.Combine(dialog.OnClose, (Action)delegate
{
canNotTouchVfx.End();
});
}
}
public void OnPressBuffBtn()
{
_battlePlayerView.ShowKeyPanel(2);
}
public void KeyPanelCancel()
{
_battlePlayerView.HideKeyPanel();
}
public void OnPressMenuBtn()
{
if (!_battlePlayerView.IsMenuOpen && !_battleMgr.IsBattleEnd && !IsRetire)
{
GameMgr.GetIns().GetSoundMgr().PlaySe(Se.TYPE.SYS_BTN_DECIDE);
ShowBattleMenu();
}
}
public void ShowBattleMenu()
{
if (_canNotTouchCardVfx == null)
{
bool isUpdateHandCardsPlayability = true;
if (GameMgr.GetIns().IsWatchBattle)
{
isUpdateHandCardsPlayability = !(BattleManagerBase.GetIns() as NetworkBattleManagerBase).IsSkillSelectTiming;
}
_canNotTouchCardVfx = new CanNotTouchCardVfx(isUpdateHandCardsPlayability);
BattleManagerBase.GetIns().VfxMgr.RegisterImmediateVfx(_canNotTouchCardVfx);
}
_battlePlayerView.IsMenuOpen = true;
_battlePlayerView.RearrangeHand();
GameObject gameObject = (GameObject)UnityEngine.Object.Instantiate(Resources.Load("Prefab/UI/Menu/BattleMenu"), base.transform);
gameObject.transform.localScale = Vector3.one;
_battleMenu = gameObject.GetComponent<BattleMenuMgr>();
_battleMenu.DisplayBattleMenu(Retire, Setting, delegate
{
_battlePlayerView.IsMenuOpen = false;
if (_canNotTouchCardVfx != null)
{
_canNotTouchCardVfx.End();
_canNotTouchCardVfx = null;
}
if (!_battlePlayerView.IsMenuCloseEscape)
{
_battlePlayerView.ResetTouchable();
}
_battlePlayerView.IsMenuCloseEscape = false;
_battlePlayerView.RearrangeHand();
if (_battleMgr.BattlePlayer.IsSelfTurn && !_battleMgr.BattlePlayer.IsTurnStartEffectNotFinished)
{
_battlePlayerView.ForceShowTurnEndButton();
}
}, ShowQuestMissionDialog);
if (!_isBattleMenuOptionsButtonPressable)
{
_battleMenu.SetSettingButtonDisable();
}
_battlePlayerView.AddPopUpPanel(_battleMenu, BattlePlayerViewBase.BattleDialogItem.Menu);
}
public void HideBattleMenu(bool isWithoutSE = false)
{
if (_battleMenu != null)
{
if (!isWithoutSE)
{
GameMgr.GetIns().GetSoundMgr().PlaySe(Se.TYPE.SYS_BTN_CANCEL);
}
_battleMenu.Close();
_battleMenu = null;
}
}
public void Retire()
{
if (_isRetireMenuOpen || _isSettingMenuOpen || IsQuestMissionOpen)
{
return;
}
_isRetireMenuOpen = true;
DialogBase dialogBase = _battlePlayerView.ShowRetireConfirmPanel();
dialogBase.OnClose = (Action)Delegate.Combine(dialogBase.OnClose, (Action)delegate
{
if (!_battleMgr.IsBattleEnd && !IsRetire)
{
ShowBattleMenu();
}
_isRetireMenuOpen = false;
});
dialogBase.SetReturnMsg(base.gameObject, "RetireConfirm");
_retireDialog = dialogBase;
}
public void HideRetireMenu(bool isNotCloseEvent)
{
if (_retireDialog != null)
{
if (isNotCloseEvent)
{
_retireDialog.OnClose = null;
}
_retireDialog.Close();
_retireDialog = null;
}
}
public void RetireConfirm()
{
if (!BattleManagerBase.GetIns().BattlePlayer.Class.IsDead && !BattleManagerBase.GetIns().BattleEnemy.Class.IsDead)
{
IsRetire = true;
if (!GameMgr.GetIns().IsWatchBattle)
{
BattleManagerBase.GetIns().MenuButtonObject.SetActive(value: false);
BattleManagerBase.GetIns().PlayRetire();
}
}
}
public void Recording()
{
}
public void Setting()
{
if (_isRetireMenuOpen || _isSettingMenuOpen || IsQuestMissionOpen)
{
return;
}
_isSettingMenuOpen = true;
DialogBase dialogBase = _battlePlayerView.CreateBattleSetting();
dialogBase.OnClose = (Action)Delegate.Combine(dialogBase.OnClose, (Action)delegate
{
if (!_battleMgr.IsBattleEnd && !IsRetire)
{
ShowBattleMenu();
}
_isSettingMenuOpen = false;
});
dialogBase.SetReturnMsg(base.gameObject, "");
_settingDialog = dialogBase;
}
public void HideSettingMenu(bool isNotCloseEvent)
{
if (_settingDialog != null)
{
if (isNotCloseEvent)
{
_settingDialog.OnClose = null;
}
_settingDialog.Close();
_settingDialog = null;
}
}
public void HideKeyWordDialog(bool isNotCloseEvent)
{
if (_keyWordDialog != null)
{
if (isNotCloseEvent)
{
_keyWordDialog.OnClose = null;
}
_keyWordDialog.Close();
}
}
private void ShowQuestMissionDialog()
{
if (_isRetireMenuOpen || _isSettingMenuOpen || IsQuestMissionOpen)
{
return;
}
IsQuestMissionOpen = true;
DialogBase dialogBase = UIManager.GetInstance().CreateDialogClose();
dialogBase.SetSize(DialogBase.Size.M);
dialogBase.SetTitleLabel(Data.SystemText.Get("Quest_0005"));
dialogBase.SetButtonLayout(DialogBase.ButtonLayout.CloseBtn);
dialogBase.OnClose = (Action)Delegate.Combine(dialogBase.OnClose, (Action)delegate
{
if (!_battleMgr.IsBattleEnd && !IsRetire)
{
ShowBattleMenu();
}
IsQuestMissionOpen = false;
});
QuestAllConfirmDialog component = UnityEngine.Object.Instantiate(_battleMenu.QuestMissionDialogPrefab).GetComponent<QuestAllConfirmDialog>();
component.CreateQuestAllConfirmDialog();
dialogBase.SetObj(component.gameObject);
}
private void HideQuestMissionDialog(bool isNotCloseEvent)
{
if (!(_questMissionDialog == null))
{
if (isNotCloseEvent)
{
_questMissionDialog.OnClose = null;
}
_questMissionDialog.Close();
}
}
public void HideAllMenu(bool isWithoutSE = false)
{
HideBattleMenu(isWithoutSE);
HideRetireMenu(isNotCloseEvent: true);
HideSettingMenu(isNotCloseEvent: true);
HideKeyWordDialog(isNotCloseEvent: true);
HideQuestMissionDialog(isNotCloseEvent: true);
}
public void OnPressMulliganSubmit()
{
_battleMgr.MulliganSubmit();
}
}