Files
SVSimServer/SVSim.BattleEngine/Engine/Wizard/ChatDeckView.cs
gamer147 824309ec44 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.
2026-06-05 20:30:59 -04:00

166 lines
5.4 KiB
C#

using System;
using System.Collections;
using System.Collections.Generic;
using Cute;
using UnityEngine;
namespace Wizard;
public class ChatDeckView : MonoBehaviour
{
private const int DEPTH_CONFIRM_DIALOG = 100;
[SerializeField]
private GameObject _deckViewPrefab;
[SerializeField]
private GameObject _cardDetailPrefab;
private GameObject _deckViewObj;
private UICardList _uiCardList;
private GameObject _cardDetailObj;
private CardDetailUI _cardDetail;
private List<string> _loadCardAssetList;
private IChatApiSettings _chatApiSettings;
private ChatConnectController _chatConnectCtr;
private Action<int> _actionCloseChatLogContent;
private Action _onOpen;
private Action _onClose;
private Action<Format, Dictionary<Format, List<ChatMessageInfo.DeckLogData>>> _onDeleteDeckSuccess;
public void Init(IChatApiSettings chatApiSettings, ChatConnectController chatConnectCtr, Action<int> actionCloseChatLogContent)
{
_chatApiSettings = chatApiSettings;
_chatConnectCtr = chatConnectCtr;
_actionCloseChatLogContent = actionCloseChatLogContent;
}
public bool IsShowDeckCardView()
{
if (_deckViewObj == null)
{
return false;
}
return _deckViewObj.activeSelf;
}
public void ShowDeckViewByDeckLog(ChatMessageInfo.DeckLogData deckLogData, Action onOpen = null, Action onClose = null, Action<Format, Dictionary<Format, List<ChatMessageInfo.DeckLogData>>> onDeleteDeckSuccess = null)
{
_onDeleteDeckSuccess = onDeleteDeckSuccess;
ShowDeckViewByDeckData(deckLogData.DeckData, onOpen, onClose, deckLogData.IsAbleDeleteDeck);
if (deckLogData.IsAbleDeleteDeck)
{
_uiCardList.SetRedButtonOnClickCallBack(Data.SystemText.Get("Guild_Chat_0034"), delegate
{
GameMgr.GetIns().GetSoundMgr().PlaySe(Se.TYPE.SYS_BTN_DECIDE);
CreateConfirmDialogDeleteDeckLog(deckLogData);
});
}
}
public void ShowDeckViewByDeckData(DeckData deck, Action onOpen, Action onClose, bool isActiveRedButton, bool isActiveDeckIntroductionObj = true)
{
_onOpen = onOpen;
_onClose = onClose;
string text = "Detail";
if (_cardDetailObj == null)
{
_cardDetailObj = NGUITools.AddChild(base.gameObject, _cardDetailPrefab);
_cardDetail = _cardDetailObj.GetComponent<CardDetailUI>();
_cardDetail.Initialize(LayerMask.NameToLayer(text), CardMaster.CardMasterId.Default);
_cardDetailObj.SetActive(value: false);
}
if (_deckViewObj == null)
{
_deckViewObj = UnityEngine.Object.Instantiate(_deckViewPrefab);
_uiCardList = _deckViewObj.GetComponent<UICardList>();
_uiCardList.Init(base.gameObject, _cardDetail, null, CloseDeckView, text, in_DetailCameraUse: true, null, 40);
_deckViewObj.SetActive(value: false);
}
_uiCardList.SetEnableRedButton(isActiveRedButton);
UIManager.GetInstance().createInSceneCenterLoading();
StartCoroutine(CardLoadCoroutine(deck, !isActiveDeckIntroductionObj, isActiveDeckIntroductionObj));
}
public void CloseDeckView()
{
if (IsShowDeckCardView())
{
_deckViewObj.SetActive(value: false);
if (_loadCardAssetList != null)
{
Toolbox.ResourcesManager.RemoveAssetGroup(_loadCardAssetList);
_loadCardAssetList.Clear();
}
_onClose.Call();
_onOpen = null;
_onClose = null;
}
}
private IEnumerator CardLoadCoroutine(DeckData deck, bool showQRCode, bool isActiveDeckIntroductionObj)
{
IList<int> cardIdList = deck.GetCardIdList();
_uiCardList.RemoveData();
_loadCardAssetList = _uiCardList.GetLoadFileList(cardIdList as List<int>);
yield return StartCoroutine(Toolbox.ResourcesManager.LoadAssetGroupAsync(_loadCardAssetList, null));
_uiCardList.SetDeck(deck, null);
_uiCardList.UpdateShortageRedEther();
_uiCardList.SetShortageCardVisible(_uiCardList.IsEnableShortageCardVisible);
if (showQRCode)
{
_uiCardList.SetQRSmallTexture();
}
_uiCardList.SetActiveDeckIntroductionObj(isActiveDeckIntroductionObj);
yield return null;
_deckViewObj.SetActive(value: true);
UIManager.GetInstance().closeInSceneCenterLoading();
_onOpen.Call();
}
private void CreateConfirmDialogDeleteDeckLog(ChatMessageInfo.DeckLogData deckLogData)
{
DialogBase dialogBase = UIManager.GetInstance().CreateDialogClose();
dialogBase.SetButtonLayout(DialogBase.ButtonLayout.RedBtn_CancelBtn);
dialogBase.SetTitleLabel(Data.SystemText.Get("Guild_Chat_0035"));
dialogBase.SetText(Data.SystemText.Get("Guild_Chat_0036"));
dialogBase.SetButtonText(Data.SystemText.Get("Guild_Chat_0037"));
dialogBase.SetPanelDepth(100);
dialogBase.onPushButton1 = delegate
{
DeleteDeckLog(deckLogData.DeckData.Format, deckLogData.MessageId);
};
}
private void DeleteDeckLog(Format format, int messageId)
{
CloseDeckView();
ChatDeleteDeckTask task = new ChatDeleteDeckTask(_chatApiSettings.ApiChatDeleteDeck);
task.SetParameter(Data.FormatConvertApi(format), messageId);
_chatConnectCtr.StartConnectCommon(task, delegate
{
CreateCompleteDialogDeleteDeckLog();
_actionCloseChatLogContent.Call(messageId);
_onDeleteDeckSuccess.Call(format, task.DictDeckLogList);
});
}
private void CreateCompleteDialogDeleteDeckLog()
{
DialogBase dialogBase = UIManager.GetInstance().CreateDialogClose();
dialogBase.SetText(Data.SystemText.Get("Guild_Chat_0038"));
dialogBase.SetPanelDepth(100);
dialogBase.SetButtonLayout(DialogBase.ButtonLayout.OkBtn);
}
}