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

720 lines
25 KiB
C#

using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using Cute;
using UnityEngine;
using Wizard.DeckCardEdit;
using Wizard.UI.Dialog.ImageSelection;
namespace Wizard;
public class DeckDetailDialog : MonoBehaviour
{
private enum eTaskType
{
Normal,
Convention,
Gathering
}
private const int CHARACTER_NAME_SMALL_SIZE = 31;
[SerializeField]
private UILabel _deckNameLabel;
[SerializeField]
private UIButton _deckNameEditButton;
[SerializeField]
private UIButton _deckCodeCreateButton;
[SerializeField]
private UITexture _skinTexture;
[SerializeField]
private ClassInfoParts _skinInfo;
[SerializeField]
private UIButton _skinChangeButton;
[SerializeField]
private UISprite _skinRandomIcon;
[SerializeField]
private UITexture[] _sleeveTextureList;
[SerializeField]
private UIButton _sleeveChangeButton;
[SerializeField]
private CostCurveUI _costCurve;
[SerializeField]
private ImageSelection _skinSelectionPrefab;
[SerializeField]
private FilteringSleeveSelection _sleeveSelectionPrefab;
[SerializeField]
private FlexibleGrid _classDisplayGrid;
private const int DECKNAME_EDIT_DIALOG_DEPTH = 400;
private const int DECKCODE_COPY_DIALOG_DEPTH = 400;
private const int SKIN_SELECTION_DIALOG_DEPTH = 400;
private const int SLEEVE_SELECTION_DIALOG_DEPTH = 400;
private const int SKIN_RANDOM_SELECT_DIALOG_DEPTH = 600;
private const long INVALID_SLEEVE_ID = -1L;
private const string SKIN_SELECTED_RANDOM_KEY = "skin_random";
private const int CLASS_DISPLAY_WIDTH_MAX = 375;
private Action _onDeckUpdateSuccess;
private DeckData _deck;
private ImageSelection _skinSelection;
private List<string> _loadSkinPathList = new List<string>();
private int _currentSkinId;
private string _currentSkinPath;
private List<int> _selectRandomSkinIdList;
private List<long> _loadedSleeveId = new List<long>();
private List<string> _loadedSleeveTexturePath = new List<string>();
private ConventionDeckList _conventionDeckList;
private List<ClassCharacterMasterData> _usableSkinList;
private List<string> _loadedVoiceCueSheetList = new List<string>();
private FilteringImageSelection _sleeveSelection;
private bool _isChangingSleeve;
private long _oldSleeveId = -1L;
private Action<string> _startConnectDeckNameUpdateTask;
private Action<int> _startConnectDeckSkinUpdateTask;
private Action<List<int>> _startConnectDeckRandomSkinUpdateTask;
private Action<long> _startConnectDeckSleeveUpdateTask;
public DeckData Deck => _deck;
public void Initialize(DeckData deck, Action onDeckUpdateSuccess, List<string> loadedVoiceList, ConventionDeckList conventionDeckList)
{
eTaskType taskType = ((conventionDeckList != null) ? eTaskType.Convention : eTaskType.Normal);
InitializeCommon(deck, taskType, onDeckUpdateSuccess, loadedVoiceList, conventionDeckList);
}
public void InitializeForGathering(DeckData deck, bool IsEntryDeckOnly, Action onDeckUpdateSuccess, List<string> loadedVoiceList)
{
eTaskType taskType = (IsEntryDeckOnly ? eTaskType.Gathering : eTaskType.Normal);
InitializeCommon(deck, taskType, onDeckUpdateSuccess, loadedVoiceList, null);
}
private void InitializeCommon(DeckData deck, eTaskType taskType, Action onDeckUpdateSuccess, List<string> loadedVoiceList, ConventionDeckList conventionDeckList)
{
_deck = deck;
_onDeckUpdateSuccess = onDeckUpdateSuccess;
_loadedVoiceCueSheetList = loadedVoiceList;
_conventionDeckList = conventionDeckList;
CardMaster.CardMasterId cardMasterId = FormatBehaviorManager.Create(deck.Format, conventionDeckList).CardMasterId;
UpdateDeckName();
UpdateSkin();
_costCurve.Initialize(cardMasterId);
_costCurve.Refresh(_deck.GetCardIdList().ToArray());
UIManager.SetObjectToGrey(_deckCodeCreateButton.gameObject, !_deck.GetDeckIsComplete());
if (_deck.Format == Format.Avatar)
{
DisableEditDeck();
}
SetActionDeckUpdateTasks(taskType);
UIEventListener.Get(_deckNameEditButton.gameObject).onClick = OnClickDeckNameEditButton;
UIEventListener.Get(_deckCodeCreateButton.gameObject).onClick = OnClickDeckCodeCreateButton;
UIEventListener.Get(_skinChangeButton.gameObject).onClick = OnClickSkinChangeButton;
UIEventListener.Get(_sleeveChangeButton.gameObject).onClick = OnClickSleeveChangeButton;
if (CustomPreference.GetTextLanguage() == Global.LANG_TYPE.Kor.ToString() || CustomPreference.GetTextLanguage() == Global.LANG_TYPE.Cht.ToString())
{
_skinInfo.SetCharacterNameHeight(31);
}
LoadSleeve(_deck.GetDeckSleeveID(), delegate
{
StartCoroutine(UpdateSleeveTexture());
});
InitSleeveSelection();
}
private void SetActionDeckUpdateTasks(eTaskType type)
{
switch (type)
{
case eTaskType.Normal:
_startConnectDeckNameUpdateTask = delegate(string newDeckName)
{
DeckNameUpdateTask deckNameUpdateTask = new DeckNameUpdateTask();
deckNameUpdateTask.SetParameter(_deck.GetDeckID(), newDeckName, _deck.Format);
StartCoroutine(Toolbox.NetworkManager.Connect(deckNameUpdateTask, delegate
{
OnSuccessDeckNameUpdate(newDeckName);
}));
};
_startConnectDeckSkinUpdateTask = delegate(int skinId)
{
DeckLeaderSkinUpdateTask deckLeaderSkinUpdateTask = new DeckLeaderSkinUpdateTask();
deckLeaderSkinUpdateTask.SetParameter(_deck.GetDeckID(), skinId, _deck.Format);
StartCoroutine(Toolbox.NetworkManager.Connect(deckLeaderSkinUpdateTask, delegate
{
OnSuccessChangeSkin(skinId);
}));
};
_startConnectDeckRandomSkinUpdateTask = delegate(List<int> skinIdList)
{
DeckRandomLeaderSkinUpdateTask task = new DeckRandomLeaderSkinUpdateTask();
task.SetParameter(_deck.Format, _deck.GetDeckID(), skinIdList.ToArray());
StartCoroutine(Toolbox.NetworkManager.Connect(task, delegate
{
OnSuccessChangeRandomSkin(task.SelectedSkinId, skinIdList);
}));
};
_startConnectDeckSleeveUpdateTask = delegate(long sleeveId)
{
DeckUpdateSleeveTask deckUpdateSleeveTask = new DeckUpdateSleeveTask();
deckUpdateSleeveTask.SetParameter(_deck.GetDeckID(), sleeveId, _deck.Format);
StartCoroutine(Toolbox.NetworkManager.Connect(deckUpdateSleeveTask, delegate
{
OnSuccessChangeSleeve(sleeveId);
}));
};
break;
case eTaskType.Convention:
_startConnectDeckNameUpdateTask = delegate(string newDeckName)
{
DeckConventionNameUpdateTask deckConventionNameUpdateTask = new DeckConventionNameUpdateTask();
deckConventionNameUpdateTask.SetParameter(_deck.GetDeckID(), newDeckName, _conventionDeckList);
StartCoroutine(Toolbox.NetworkManager.Connect(deckConventionNameUpdateTask, delegate
{
OnSuccessDeckNameUpdate(newDeckName);
}));
};
_startConnectDeckSkinUpdateTask = delegate(int skinId)
{
DeckConventionLeaderSkinUpdateTask deckConventionLeaderSkinUpdateTask = new DeckConventionLeaderSkinUpdateTask();
deckConventionLeaderSkinUpdateTask.SetParameter(_deck.GetDeckID(), skinId, _conventionDeckList);
StartCoroutine(Toolbox.NetworkManager.Connect(deckConventionLeaderSkinUpdateTask, delegate
{
OnSuccessChangeSkin(skinId);
}));
};
_startConnectDeckRandomSkinUpdateTask = delegate(List<int> skinIdList)
{
DeckConventionRandomLeaderSkinUpdateTask task = new DeckConventionRandomLeaderSkinUpdateTask();
task.SetParameter(_deck.GetDeckID(), skinIdList.ToArray(), _conventionDeckList);
StartCoroutine(Toolbox.NetworkManager.Connect(task, delegate
{
OnSuccessChangeRandomSkin(task.SelectedSkinId, skinIdList);
}));
};
_startConnectDeckSleeveUpdateTask = delegate(long sleeveId)
{
DeckConventionUpdateSleeveTask deckConventionUpdateSleeveTask = new DeckConventionUpdateSleeveTask();
deckConventionUpdateSleeveTask.SetParameter(_deck.GetDeckID(), sleeveId, _conventionDeckList);
StartCoroutine(Toolbox.NetworkManager.Connect(deckConventionUpdateSleeveTask, delegate
{
OnSuccessChangeSleeve(sleeveId);
}));
};
break;
case eTaskType.Gathering:
_startConnectDeckNameUpdateTask = delegate(string newDeckName)
{
GatheringUpdateDeckName gatheringUpdateDeckName = new GatheringUpdateDeckName();
gatheringUpdateDeckName.SetParameter(_deck.GetDeckID(), newDeckName);
StartCoroutine(Toolbox.NetworkManager.Connect(gatheringUpdateDeckName, delegate
{
OnSuccessDeckNameUpdate(newDeckName);
}));
};
_startConnectDeckSkinUpdateTask = delegate(int skinId)
{
GatheringUpdateDeckLeaderSkin gatheringUpdateDeckLeaderSkin = new GatheringUpdateDeckLeaderSkin();
gatheringUpdateDeckLeaderSkin.SetParameter(_deck.GetDeckID(), skinId);
StartCoroutine(Toolbox.NetworkManager.Connect(gatheringUpdateDeckLeaderSkin, delegate
{
OnSuccessChangeSkin(skinId);
}));
};
_startConnectDeckRandomSkinUpdateTask = delegate(List<int> skinIdList)
{
GatheringUpdateDeckRandomLeaderSkinTask task = new GatheringUpdateDeckRandomLeaderSkinTask();
task.SetParameter(_deck.GetDeckID(), skinIdList.ToArray());
StartCoroutine(Toolbox.NetworkManager.Connect(task, delegate
{
OnSuccessChangeRandomSkin(task.SelectedSkinId, skinIdList);
}));
};
_startConnectDeckSleeveUpdateTask = delegate(long sleeveId)
{
GatheringUpdateDeckSleeve gatheringUpdateDeckSleeve = new GatheringUpdateDeckSleeve();
gatheringUpdateDeckSleeve.SetParameter(_deck.GetDeckID(), sleeveId);
StartCoroutine(Toolbox.NetworkManager.Connect(gatheringUpdateDeckSleeve, delegate
{
OnSuccessChangeSleeve(sleeveId);
}));
};
break;
}
}
public void SetDeck(DeckData deck)
{
_deck = deck;
}
public int GetDeckId()
{
return _deck.GetDeckID();
}
public void Final()
{
if (_currentSkinPath != null)
{
Toolbox.ResourcesManager.RemoveAsset(_currentSkinPath);
_currentSkinPath = null;
}
Toolbox.ResourcesManager.RemoveAssetGroup(_loadSkinPathList);
_loadSkinPathList.Clear();
UnloadAllSleeves();
}
private void OnClickDeckNameEditButton(GameObject g)
{
GameMgr.GetIns().GetSoundMgr().PlaySe(Se.TYPE.SYS_BTN_DECIDE);
string oldDeckName = _deck.GetDeckName();
SystemText systemText = Data.SystemText;
DialogBase dialogBase = InputDialog.Create(30, 24);
dialogBase.SetTitleLabel(systemText.Get("Card_0011"));
UILabel[] labels = dialogBase.InputAreaObjs.labels;
dialogBase.onPushButton1 = delegate
{
string text = labels[0].text;
if (string.IsNullOrEmpty(text))
{
text = oldDeckName;
}
if (oldDeckName != text)
{
_startConnectDeckNameUpdateTask.Call(text);
}
};
dialogBase.SetPanelDepth(400);
labels[0].text = oldDeckName;
labels[2].text = systemText.Get("Card_0012");
labels[3].text = systemText.Get("Common_0401", 24.ToString());
}
private void OnSuccessDeckNameUpdate(string deckName)
{
_deck.SetDeckName(deckName);
SystemText systemText = Data.SystemText;
DialogBase dialogBase = UIManager.GetInstance().CreateDialogClose();
dialogBase.SetTitleLabel(systemText.Get("Dia_DeckEdit_003_Title"));
dialogBase.SetText(systemText.Get("Card_0014"));
dialogBase.SetButtonLayout(DialogBase.ButtonLayout.OkBtn);
dialogBase.SetPanelDepth(400);
SaveLastEditDeck();
_onDeckUpdateSuccess.Call();
DeckCardEditUI.CurrentDeckName = _deck.GetDeckName();
UpdateDeckName();
}
public void UpdateDeckName()
{
_deckNameLabel.text = _deck.GetDeckName();
}
private void OnClickDeckCodeCreateButton(GameObject g)
{
GameMgr.GetIns().GetSoundMgr().PlaySe(Se.TYPE.SYS_BTN_DECIDE);
GenerateDeckCodeTask generateDeckCodeTask = new GenerateDeckCodeTask();
SetGenerateDeckCodeTask(generateDeckCodeTask);
StartCoroutine(Toolbox.NetworkManager.Connect(generateDeckCodeTask, OnSuccessCreateDeckCode, null, null, encrypt: false));
}
private void SetGenerateDeckCodeTask(GenerateDeckCodeTask task)
{
IFormatBehavior defaultBehaviour = FormatBehaviorManager.GetDefaultBehaviour(_deck.Format);
if (defaultBehaviour.UseSubClass)
{
task.SetParameter(_deck.GetDeckClassID(), _deck.GetDeckSubClassID(), defaultBehaviour.DeckCodeType, _deck.GetCardIdList().ToArray());
}
else if (_deck.Format == Format.MyRotation)
{
task.SetParameterMyRotation(_deck, defaultBehaviour.DeckCodeType);
}
else
{
task.SetParameter(_deck.GetDeckClassID(), GenerateDeckCodeTask.SubmitDeckType.NORMAL, _deck.GetCardIdList().ToArray());
}
}
private void OnSuccessCreateDeckCode(NetworkTask.ResultCode code)
{
string deckCode = Data.GenerateDeckCode.deck_code;
SystemText text = Data.SystemText;
DialogBase dialogBase = UIManager.GetInstance().CreateDialogClose();
dialogBase.SetPanelDepth(400);
dialogBase.SetTitleLabel(text.Get("Card_0120"));
dialogBase.SetText(text.Get("Card_0128", deckCode));
dialogBase.SetButtonLayout(DialogBase.ButtonLayout.BlueBtn_GrayBtn);
dialogBase.SetButtonText(text.Get("Card_0133"), text.Get("Common_0008"));
dialogBase.onPushButton1 = delegate
{
NativePluginWrapper.SetStringToClipboard(deckCode);
UIManager.GetInstance().CreateConfirmationDialog(text.Get("Card_0132", deckCode)).SetPanelDepth(400);
};
}
private void OnClickSkinChangeButton(GameObject g)
{
GameMgr.GetIns().GetSoundMgr().PlaySe(Se.TYPE.SYS_BTN_DECIDE);
StartCoroutine(OpenSkinSelectionDialog());
}
private IEnumerator OpenSkinSelectionDialog()
{
yield return StartCoroutine(CreateSkinSelection());
string key = (_deck.IsSkinRandom ? "skin_random" : _deck.GetRawSkinId().ToString());
int displayPage = _skinSelection.SelectItemWithKey(key);
_skinSelection.SetDisplayPage(displayPage);
DialogBase dialogBase = DialogBase.CreateImageSelectionDialog(_skinSelection, "Profile_0029", DialogBase.Size.L);
dialogBase.SetPanelDepth(400);
dialogBase.onPushButton1 = (Action)Delegate.Combine(dialogBase.onPushButton1, (Action)delegate
{
string selectedItemKey = _skinSelection.GetSelectedItemKey();
if (selectedItemKey == "skin_random")
{
if (!_deck.IsSkinRandom || !_deck.SelectRandomSkinIdList.SequenceEqual(_selectRandomSkinIdList))
{
_startConnectDeckRandomSkinUpdateTask.Call(_selectRandomSkinIdList);
}
}
else
{
int num = int.Parse(selectedItemKey);
if (_deck.IsSkinRandom || (!string.IsNullOrEmpty(selectedItemKey) && _deck.GetRawSkinId() != num))
{
_startConnectDeckSkinUpdateTask.Call(num);
}
}
});
List<int> initSelectRandomSkinIdList = new List<int>(_selectRandomSkinIdList);
dialogBase.onCloseWithoutSelect = (Action)Delegate.Combine(dialogBase.onCloseWithoutSelect, (Action)delegate
{
_selectRandomSkinIdList = initSelectRandomSkinIdList;
});
}
private IEnumerator CreateSkinSelection()
{
if (!(_skinSelection != null))
{
CreateSkinSelectionMain();
UIManager uiMgr = UIManager.GetInstance();
uiMgr.createInSceneCenterLoading();
yield return StartCoroutine(Toolbox.ResourcesManager.LoadAssetGroupAsync(_loadSkinPathList, null));
uiMgr.closeInSceneCenterLoading();
}
}
private void CreateSkinSelectionMain()
{
ResourcesManager resourcesManager = Toolbox.ResourcesManager;
ResourcesManager.AssetLoadPathType type = ResourcesManager.AssetLoadPathType.ClassCharaSkinThumbnail;
SystemText systemText = Data.SystemText;
_skinSelection = NGUITools.AddChild(base.gameObject, _skinSelectionPrefab.gameObject).GetComponent<ImageSelection>();
_skinSelection.gameObject.SetActive(value: false);
_skinSelection.Create(400);
_skinSelection.AddItem(0.ToString(), null, isSelectable: true, null, null, null, isDisplaySprite: true, string.Empty, new string[2]
{
systemText.Get("Profile_0017"),
systemText.Get("Card_0182")
}, null);
_selectRandomSkinIdList = new List<int>(_deck.SelectRandomSkinIdList);
if (_selectRandomSkinIdList.Contains(0))
{
_selectRandomSkinIdList.Remove(0);
_selectRandomSkinIdList.Add(GameMgr.GetIns().GetDataMgr().GetCharaPrmByClassId(_deck.GetDeckClassID())
.skin_id);
_selectRandomSkinIdList.Sort();
}
_skinSelection.AddItem("skin_random", null, isSelectable: true, null, null, null, isDisplaySprite: true, string.Empty, new string[2]
{
systemText.Get("Card_0256"),
systemText.Get("Card_0257")
}, null, delegate
{
CreateRandomSkinSelectDialog();
});
int classId = _deck.GetDeckClassID();
_usableSkinList = Data.Master.ClassCharacterList.Where((ClassCharacterMasterData x) => x.is_usable && x.IsAcquired && x.class_id == classId).ToList();
for (int num = 0; num < _usableSkinList.Count; num++)
{
ClassCharacterMasterData charaPrm = _usableSkinList[num];
string text = charaPrm.skin_id.ToString();
_skinSelection.AddItem(text, null, isSelectable: true, () => charaPrm.IsNew, null, resourcesManager.GetAssetTypePath(text, type, isfetch: true), isDisplaySprite: false, charaPrm.chara_name, null, delegate
{
charaPrm.UnsetNew();
});
_loadSkinPathList.Add(resourcesManager.GetAssetTypePath(text, type));
}
}
private void CreateRandomSkinSelectDialog()
{
SelectRandomSkinDialog.Create(_usableSkinList.Select((ClassCharacterMasterData x) => x.skin_id).ToList(), _selectRandomSkinIdList, delegate(List<int> idList)
{
_selectRandomSkinIdList = idList;
}).SetPanelDepth(600);
}
private void OnSuccessChangeSkin(int skinId)
{
_deck.SetSkinId(skinId);
_deck.IsSkinRandom = false;
SuccessChangeSkin();
}
private void OnSuccessChangeRandomSkin(int skinId, List<int> skinRandomIdList)
{
_deck.SetSkinId(skinId);
_deck.IsSkinRandom = true;
_deck.SelectRandomSkinIdList = skinRandomIdList;
SuccessChangeSkin();
}
private void SuccessChangeSkin()
{
SaveLastEditDeck();
_onDeckUpdateSuccess.Call();
UpdateSkin();
DeckCardEditUI.CurrentDeckData = _deck;
StopVoice();
GameMgr.GetIns().GetSoundMgr().PlayVoice(ClassCharaPrm.EmotionType.LEADER_SELECT, _deck.GetSkinId(), _loadedVoiceCueSheetList);
}
private void StopVoice()
{
SoundMgr soundMgr = GameMgr.GetIns().GetSoundMgr();
if (soundMgr.IsVoicePlaying())
{
soundMgr.StopVoiceAll(0f);
}
}
private void UpdateSkin()
{
int currentSkinId = _currentSkinId;
int newSkinId = _deck.GetSkinId();
GameMgr.GetIns().GetDataMgr().GetClassPrm(_deck.GetDeckClassID());
_skinRandomIcon.gameObject.SetActive(_deck.IsVisibleRandomIcon());
if (newSkinId != currentSkinId)
{
ResourcesManager resMgr = Toolbox.ResourcesManager;
if (_currentSkinPath != null)
{
resMgr.RemoveAsset(_currentSkinPath);
}
ResourcesManager.AssetLoadPathType skinLoadType = ResourcesManager.AssetLoadPathType.ClassCharaSkinThumbnail;
_currentSkinId = newSkinId;
_currentSkinPath = resMgr.GetAssetTypePath(newSkinId.ToString(), skinLoadType);
_skinInfo.InitClassByDeckData(_deck);
if (FormatBehaviorManager.GetDefaultBehaviour(_deck.Format).UseSubClass)
{
_skinInfo.SetSubClass((CardBasePrm.ClanType)_deck.GetDeckSubClassID());
}
UIUtil.AdjustClassInfoPartsSize(_skinInfo, _classDisplayGrid, 375);
UIManager uiMgr = UIManager.GetInstance();
uiMgr.createInSceneCenterLoading();
_skinTexture.mainTexture = null;
StartCoroutine(resMgr.LoadAssetGroupAsync(new List<string> { _currentSkinPath }, delegate
{
uiMgr.closeInSceneCenterLoading();
_skinTexture.mainTexture = resMgr.LoadObject(resMgr.GetAssetTypePath(newSkinId.ToString(), skinLoadType, isfetch: true)) as Texture;
}));
}
}
private void OnClickSleeveChangeButton(GameObject g)
{
GameMgr.GetIns().GetSoundMgr().PlaySe(Se.TYPE.SYS_BTN_DECIDE);
UIManager.GetInstance().createInSceneCenterLoading();
OpenSleeveSelectionDialog();
}
private void LoadSleeve(long sleeveId, Action onFinish = null)
{
List<string> first = CollectSleeveResourcePaths(sleeveId);
List<string> loadPathList = first.Except(_loadedSleeveTexturePath).ToList();
if (loadPathList.Count == 0)
{
onFinish.Call();
return;
}
StartCoroutine(Toolbox.ResourcesManager.LoadAssetGroupAsync(loadPathList, delegate
{
_loadedSleeveId.Add(sleeveId);
_loadedSleeveTexturePath.AddRange(loadPathList);
onFinish.Call();
}));
}
private void UnloadSleeve(long sleeveId)
{
List<string> list = CollectSleeveResourcePaths(sleeveId);
_loadedSleeveId.Remove(sleeveId);
_loadedSleeveTexturePath = _loadedSleeveTexturePath.Except(list).ToList();
Toolbox.ResourcesManager.RemoveAssetGroup(list);
}
private void UnloadAllSleeves()
{
Toolbox.ResourcesManager.RemoveAssetGroup(_loadedSleeveTexturePath);
_loadedSleeveId.Clear();
_loadedSleeveTexturePath.Clear();
}
private List<string> CollectSleeveResourcePaths(long sleeveId)
{
sleeveId = Toolbox.ResourcesManager.GetExistingSleeveId(sleeveId);
string path = sleeveId.ToString();
List<string> loadPath = new List<string>();
loadPath.Add(Toolbox.ResourcesManager.GetAssetTypePath(path, ResourcesManager.AssetLoadPathType.SleeveTexture));
Sleeve sleeve = Data.Master.SleeveMgr.Get(sleeveId);
if (sleeve.IsPremiumSleeve)
{
UIManager.GetInstance().getUIBase_CardManager().AddPremireSleevePath(ref loadPath, sleeve);
}
return loadPath;
}
private void InitSleeveSelection()
{
_sleeveSelection = NGUITools.AddChild(base.gameObject, _sleeveSelectionPrefab.gameObject).GetComponent<FilteringImageSelection>();
_sleeveSelection.gameObject.SetActive(value: false);
ResourcesManager resourcesManager = Toolbox.ResourcesManager;
List<Sleeve> acquiredList = Data.Master.SleeveMgr.GetAcquiredList();
List<SleeveCategory> list = Data.Master.SleeveCategoryIdDic.Values.OrderBy((SleeveCategory category) => category.Id).ToList();
_sleeveSelection.Initialize(acquiredList.Count, list.Count);
foreach (SleeveCategory item in list)
{
_sleeveSelection.AddSeries(item.Id, item.Name);
}
foreach (Sleeve sleeve in acquiredList)
{
string key = sleeve.sleeve_id.ToString();
long existingSleeveId = Toolbox.ResourcesManager.GetExistingSleeveId(sleeve.sleeve_id);
Sleeve sleeve2 = Data.Master.SleeveMgr.Get(existingSleeveId);
List<string> loadPath = new List<string>();
loadPath.Add(resourcesManager.GetAssetTypePath(existingSleeveId.ToString(), ResourcesManager.AssetLoadPathType.SleeveTexture));
if (sleeve2.IsPremiumSleeve)
{
UIManager.GetInstance().getUIBase_CardManager().AddPremireSleevePath(ref loadPath, sleeve2);
}
_sleeveSelection.AddItem(key, sleeve._categoryId, isSelectable: true, loadPath, null, isDisplaySprite: false, sleeve.sleeve_name, null, () => sleeve.IsNew, delegate
{
Data.Master.SleeveMgr.UnsetNew(sleeve.sleeve_id);
}, null, null, sleeve.IsFavorite);
}
_sleeveSelection.SelectItemWithKey(_deck.GetDeckSleeveID().ToString());
}
private void OpenSleeveSelectionDialog()
{
_isChangingSleeve = false;
DialogBase dialogBase = DialogBase.CreateFilteringImageSelectionDialog(_sleeveSelection, "Card_0146");
dialogBase.SetPanelDepth(400);
dialogBase.onPushButton1 = (Action)Delegate.Combine(dialogBase.onPushButton1, (Action)delegate
{
if (long.TryParse(_sleeveSelection.GetSelectedItemKey(), out var result))
{
_oldSleeveId = _deck.GetDeckSleeveID();
if (result != _oldSleeveId)
{
LoadSleeve(result);
_startConnectDeckSleeveUpdateTask.Call(result);
_isChangingSleeve = true;
}
}
});
dialogBase.OnClose = (Action)Delegate.Combine(dialogBase.OnClose, (Action)delegate
{
if (!_isChangingSleeve)
{
OnCloseSleeveSelection();
}
});
}
private void OnSuccessChangeSleeve(long sleeveId)
{
_deck.SetDeckSleeveID(sleeveId);
_isChangingSleeve = false;
MyPageMenu.SetEnableReloadCard();
SaveLastEditDeck();
_onDeckUpdateSuccess.Call();
StartCoroutine(UpdateSleeveTexture());
DeckCardEditUI.CurrentDeckData = _deck;
}
private void OnCloseSleeveSelection()
{
_sleeveSelection.SelectItemWithKey(_deck.GetDeckSleeveID().ToString());
}
private IEnumerator UpdateSleeveTexture()
{
long sleeveId = _deck.GetDeckSleeveID();
while (!_loadedSleeveId.Contains(sleeveId))
{
yield return null;
}
for (int i = 0; i < _sleeveTextureList.Length; i++)
{
UIManager.GetInstance().getUIBase_CardManager().SetSleeveTexture(_sleeveTextureList[i], sleeveId);
}
if (_oldSleeveId != sleeveId && _oldSleeveId != -1)
{
UnloadSleeve(_oldSleeveId);
}
}
private void SaveLastEditDeck()
{
DeckListUtility.SaveLastSelectDeck(_deck.GetDeckID(), isDefaultDeck: false, isTrialDeck: false, _deck.Format);
}
private void DisableEditDeck()
{
UIManager.SetObjectToGrey(_deckCodeCreateButton.gameObject, b: true);
UIManager.SetObjectToGrey(_deckNameEditButton.gameObject, b: true);
UIManager.SetObjectToGrey(_sleeveChangeButton.gameObject, b: true);
UIManager.SetObjectToGrey(_skinChangeButton.gameObject, b: true);
}
}