diff --git a/Assets/TcgEngine/Scenes/Menu/Menu.unity b/Assets/TcgEngine/Scenes/Menu/Menu.unity index 323cc2d..b4116ae 100644 --- a/Assets/TcgEngine/Scenes/Menu/Menu.unity +++ b/Assets/TcgEngine/Scenes/Menu/Menu.unity @@ -3507,7 +3507,7 @@ RectTransform: - {fileID: 129251830} - {fileID: 297486962} m_Father: {fileID: 396921783552706682} - m_RootOrder: 5 + m_RootOrder: 4 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0.5, y: 0.5} m_AnchorMax: {x: 0.5, y: 0.5} @@ -6109,7 +6109,7 @@ PrefabInstance: - target: {fileID: 5462092070690285012, guid: 4c6aae1ce058f1f43b681dfa8551e258, type: 3} propertyPath: m_AnchorMax.y - value: 0 + value: 1 objectReference: {fileID: 0} - target: {fileID: 5462092070690285012, guid: 4c6aae1ce058f1f43b681dfa8551e258, type: 3} @@ -6119,7 +6119,7 @@ PrefabInstance: - target: {fileID: 5462092070690285012, guid: 4c6aae1ce058f1f43b681dfa8551e258, type: 3} propertyPath: m_AnchorMin.y - value: 0 + value: 1 objectReference: {fileID: 0} - target: {fileID: 5462092070690285012, guid: 4c6aae1ce058f1f43b681dfa8551e258, type: 3} @@ -6169,12 +6169,12 @@ PrefabInstance: - target: {fileID: 5462092070690285012, guid: 4c6aae1ce058f1f43b681dfa8551e258, type: 3} propertyPath: m_AnchoredPosition.x - value: 0 + value: 242.26 objectReference: {fileID: 0} - target: {fileID: 5462092070690285012, guid: 4c6aae1ce058f1f43b681dfa8551e258, type: 3} propertyPath: m_AnchoredPosition.y - value: 0 + value: -265 objectReference: {fileID: 0} - target: {fileID: 5462092070690285012, guid: 4c6aae1ce058f1f43b681dfa8551e258, type: 3} @@ -6320,7 +6320,7 @@ RectTransform: m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 1} m_AnchorMax: {x: 1, y: 1} - m_AnchoredPosition: {x: 0.00040302204, y: -0.000011679191} + m_AnchoredPosition: {x: 0, y: 0} m_SizeDelta: {x: 0, y: 1505.8} m_Pivot: {x: 0, y: 1} --- !u!114 &274366308 @@ -18386,10 +18386,14 @@ MonoBehaviour: deck_lines_prefab: {fileID: 5462092070690285035, guid: 4c6aae1ce058f1f43b681dfa8551e258, type: 3} deck_line_content: {fileID: 274366307} + card_lines_prefab: {fileID: 7172856987813669151, guid: 0ae4403cc5a08794e8aaded9a236a0c0, + type: 3} + deck_display_grid: {fileID: 545236223} + deleteDeckButton: {fileID: 122017643} deckSelector: {fileID: 1905130909} dropdownValue: {fileID: 1905130910} - currentSelect: 0 - selectDeckButton: {fileID: 0} + active_lines_size: 12 + card_lines_size: 12 --- !u!1001 &955449648 PrefabInstance: m_ObjectHideFlags: 0 @@ -19889,7 +19893,7 @@ PrefabInstance: - target: {fileID: 5462092070690285012, guid: 4c6aae1ce058f1f43b681dfa8551e258, type: 3} propertyPath: m_AnchorMax.y - value: 0 + value: 1 objectReference: {fileID: 0} - target: {fileID: 5462092070690285012, guid: 4c6aae1ce058f1f43b681dfa8551e258, type: 3} @@ -19899,7 +19903,7 @@ PrefabInstance: - target: {fileID: 5462092070690285012, guid: 4c6aae1ce058f1f43b681dfa8551e258, type: 3} propertyPath: m_AnchorMin.y - value: 0 + value: 1 objectReference: {fileID: 0} - target: {fileID: 5462092070690285012, guid: 4c6aae1ce058f1f43b681dfa8551e258, type: 3} @@ -19949,12 +19953,12 @@ PrefabInstance: - target: {fileID: 5462092070690285012, guid: 4c6aae1ce058f1f43b681dfa8551e258, type: 3} propertyPath: m_AnchoredPosition.x - value: 0 + value: 242.26 objectReference: {fileID: 0} - target: {fileID: 5462092070690285012, guid: 4c6aae1ce058f1f43b681dfa8551e258, type: 3} propertyPath: m_AnchoredPosition.y - value: 0 + value: -80 objectReference: {fileID: 0} - target: {fileID: 5462092070690285012, guid: 4c6aae1ce058f1f43b681dfa8551e258, type: 3} @@ -24942,7 +24946,7 @@ PrefabInstance: - target: {fileID: 5462092070690285012, guid: 4c6aae1ce058f1f43b681dfa8551e258, type: 3} propertyPath: m_AnchorMax.y - value: 0 + value: 1 objectReference: {fileID: 0} - target: {fileID: 5462092070690285012, guid: 4c6aae1ce058f1f43b681dfa8551e258, type: 3} @@ -24952,7 +24956,7 @@ PrefabInstance: - target: {fileID: 5462092070690285012, guid: 4c6aae1ce058f1f43b681dfa8551e258, type: 3} propertyPath: m_AnchorMin.y - value: 0 + value: 1 objectReference: {fileID: 0} - target: {fileID: 5462092070690285012, guid: 4c6aae1ce058f1f43b681dfa8551e258, type: 3} @@ -25002,12 +25006,12 @@ PrefabInstance: - target: {fileID: 5462092070690285012, guid: 4c6aae1ce058f1f43b681dfa8551e258, type: 3} propertyPath: m_AnchoredPosition.x - value: 0 + value: 242.26 objectReference: {fileID: 0} - target: {fileID: 5462092070690285012, guid: 4c6aae1ce058f1f43b681dfa8551e258, type: 3} propertyPath: m_AnchoredPosition.y - value: 0 + value: -450 objectReference: {fileID: 0} - target: {fileID: 5462092070690285012, guid: 4c6aae1ce058f1f43b681dfa8551e258, type: 3} @@ -25805,7 +25809,7 @@ GameObject: - component: {fileID: 1316614043} - component: {fileID: 1316614042} m_Layer: 5 - m_Name: DeckDisplayPanelScrollView + m_Name: DeckDisplayScrollView m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 @@ -26324,7 +26328,7 @@ RectTransform: - {fileID: 104831691} - {fileID: 1415076148} m_Father: {fileID: 396921783552706682} - m_RootOrder: 4 + m_RootOrder: 3 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0.5, y: 0.5} m_AnchorMax: {x: 0.5, y: 0.5} @@ -26939,7 +26943,7 @@ PrefabInstance: - target: {fileID: 5462092070690285012, guid: 4c6aae1ce058f1f43b681dfa8551e258, type: 3} propertyPath: m_AnchorMax.y - value: 0 + value: 1 objectReference: {fileID: 0} - target: {fileID: 5462092070690285012, guid: 4c6aae1ce058f1f43b681dfa8551e258, type: 3} @@ -26949,7 +26953,7 @@ PrefabInstance: - target: {fileID: 5462092070690285012, guid: 4c6aae1ce058f1f43b681dfa8551e258, type: 3} propertyPath: m_AnchorMin.y - value: 0 + value: 1 objectReference: {fileID: 0} - target: {fileID: 5462092070690285012, guid: 4c6aae1ce058f1f43b681dfa8551e258, type: 3} @@ -26999,12 +27003,12 @@ PrefabInstance: - target: {fileID: 5462092070690285012, guid: 4c6aae1ce058f1f43b681dfa8551e258, type: 3} propertyPath: m_AnchoredPosition.x - value: 0 + value: 242.26 objectReference: {fileID: 0} - target: {fileID: 5462092070690285012, guid: 4c6aae1ce058f1f43b681dfa8551e258, type: 3} propertyPath: m_AnchoredPosition.y - value: 0 + value: -820 objectReference: {fileID: 0} - target: {fileID: 5462092070690285012, guid: 4c6aae1ce058f1f43b681dfa8551e258, type: 3} @@ -32921,10 +32925,10 @@ RectTransform: m_Father: {fileID: 947751578} m_RootOrder: 2 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 0} - m_AnchorMax: {x: 1, y: 1} - m_AnchoredPosition: {x: 220.00006, y: 0} - m_SizeDelta: {x: -1386, y: -3.869995} + m_AnchorMin: {x: 1, y: 0.5} + m_AnchorMax: {x: 1, y: 0.5} + m_AnchoredPosition: {x: 268, y: 1.87} + m_SizeDelta: {x: 536, y: 1080.13} m_Pivot: {x: 0.5, y: 0.5} --- !u!225 &1678690565 CanvasGroup: @@ -32934,7 +32938,7 @@ CanvasGroup: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1678690563} m_Enabled: 1 - m_Alpha: 0 + m_Alpha: 1 m_Interactable: 1 m_BlocksRaycasts: 1 m_IgnoreParentGroups: 0 @@ -32951,7 +32955,7 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: m_Material: {fileID: 0} - m_Color: {r: 1, g: 1, b: 1, a: 1} + m_Color: {r: 1, g: 1, b: 1, a: 0} m_RaycastTarget: 1 m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} m_Maskable: 1 @@ -33007,7 +33011,7 @@ RectTransform: - {fileID: 396921783211662064} - {fileID: 234734681} m_Father: {fileID: 396921783552706682} - m_RootOrder: 3 + m_RootOrder: 5 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0.5, y: 1} m_AnchorMax: {x: 0.5, y: 1} @@ -40162,7 +40166,7 @@ PrefabInstance: - target: {fileID: 5462092070690285012, guid: 4c6aae1ce058f1f43b681dfa8551e258, type: 3} propertyPath: m_AnchorMax.y - value: 0 + value: 1 objectReference: {fileID: 0} - target: {fileID: 5462092070690285012, guid: 4c6aae1ce058f1f43b681dfa8551e258, type: 3} @@ -40172,7 +40176,7 @@ PrefabInstance: - target: {fileID: 5462092070690285012, guid: 4c6aae1ce058f1f43b681dfa8551e258, type: 3} propertyPath: m_AnchorMin.y - value: 0 + value: 1 objectReference: {fileID: 0} - target: {fileID: 5462092070690285012, guid: 4c6aae1ce058f1f43b681dfa8551e258, type: 3} @@ -40222,12 +40226,12 @@ PrefabInstance: - target: {fileID: 5462092070690285012, guid: 4c6aae1ce058f1f43b681dfa8551e258, type: 3} propertyPath: m_AnchoredPosition.x - value: 0 + value: 242.26 objectReference: {fileID: 0} - target: {fileID: 5462092070690285012, guid: 4c6aae1ce058f1f43b681dfa8551e258, type: 3} propertyPath: m_AnchoredPosition.y - value: 0 + value: -635 objectReference: {fileID: 0} - target: {fileID: 5462092070690285012, guid: 4c6aae1ce058f1f43b681dfa8551e258, type: 3} @@ -47548,9 +47552,9 @@ RectTransform: - {fileID: 875326975} - {fileID: 396921782284966962} - {fileID: 1417375446} - - {fileID: 1684894604} - {fileID: 1334454749} - {fileID: 149393132} + - {fileID: 1684894604} - {fileID: 644190901} - {fileID: 187141751} - {fileID: 1521067878} diff --git a/Assets/TcgEngine/Scripts/Menu/CollectionPanel.cs b/Assets/TcgEngine/Scripts/Menu/CollectionPanel.cs index 7c75538..bf68907 100644 --- a/Assets/TcgEngine/Scripts/Menu/CollectionPanel.cs +++ b/Assets/TcgEngine/Scripts/Menu/CollectionPanel.cs @@ -594,7 +594,7 @@ namespace TcgEngine.UI } } - private async void DeleteDeck(string deck_tid) + public async void DeleteDeck(string deck_tid) { UserData udata = Authenticator.Get().UserData; UserDeckData udeck = udata.GetDeck(deck_tid); diff --git a/Assets/TcgEngine/Scripts/Menu/DeckLine.cs b/Assets/TcgEngine/Scripts/Menu/DeckLine.cs index 5fc791b..71b4d8e 100644 --- a/Assets/TcgEngine/Scripts/Menu/DeckLine.cs +++ b/Assets/TcgEngine/Scripts/Menu/DeckLine.cs @@ -136,7 +136,6 @@ namespace TcgEngine.UI hidden = false; if(this.title!=null) this.title.text = deck.title; - } public void SetLine(string title) @@ -185,6 +184,47 @@ namespace TcgEngine.UI gameObject.SetActive(false); } + + #region ================== 对象池友好接口 ================== + /// + /// 重置数据并隐藏 + /// + public void ResetLine() + { + card = null; + variant = null; + deck = null; + udeck = null; + hidden = true; + hover = false; + + if (title) title.text = ""; + if (value) { value.text = ""; value.enabled = false; } + if (cost) cost.value = 0; + if (image) image.enabled = false; + if (frame) frame.enabled = false; + if (delete_btn) delete_btn.SetVisible(false); + + gameObject.SetActive(false); + } + + /// + /// 刷新用户自定义牌组 + /// + public void Refresh(UserData udata, UserDeckData udeck) + { + SetLine(udata, udeck); + } + + /// + /// 刷新单卡 + /// + public void Refresh(CardData card, VariantData variant, int quantity, bool invalid = false) + { + SetLine(card, variant, quantity, invalid); + } + + #endregion public CardData GetCard() { return card; diff --git a/Assets/TcgEngine/Scripts/UI/DeckSelector.cs b/Assets/TcgEngine/Scripts/UI/DeckSelector.cs index 51ed54a..7f734cd 100644 --- a/Assets/TcgEngine/Scripts/UI/DeckSelector.cs +++ b/Assets/TcgEngine/Scripts/UI/DeckSelector.cs @@ -35,12 +35,13 @@ namespace TcgEngine.UI deck_dropdown.AddOption("random", "Random"); - //Add standard decks + // 添加标准卡组 foreach (DeckData deck in GameplayData.Get().free_decks) { deck_dropdown.AddOption(deck.id, deck.title); } + // 添加自定义卡组 UserData udata = Authenticator.Get().UserData; if (udata != null) { @@ -98,6 +99,7 @@ namespace TcgEngine.UI public void SelectDeck(string deck) { + Debug.Log($"111{deck}"); //Make sure deck exists, to prevent assigning invalid deck UserData udata = Authenticator.Get().UserData; UserDeckData udeck = udata?.GetDeck(deck); diff --git a/Assets/TcgEngine/Scripts/UI/PresetDeck.cs b/Assets/TcgEngine/Scripts/UI/PresetDeck.cs index e8ae4b4..587ac76 100644 --- a/Assets/TcgEngine/Scripts/UI/PresetDeck.cs +++ b/Assets/TcgEngine/Scripts/UI/PresetDeck.cs @@ -1,3 +1,4 @@ +using System; using System.Collections; using System.Collections.Generic; using UnityEngine; @@ -16,17 +17,30 @@ namespace TcgEngine.UI public GameObject deck_lines_prefab; public RectTransform deck_line_content; - [Header("预设面板")] + [Header("展示卡组")] + public GameObject card_lines_prefab; + public GridLayoutGroup deck_display_grid; + + [Header("预设面板")] + public Button deleteDeckButton; public DeckSelector deckSelector; public DropdownValue dropdownValue; - public int currentSelect; - public Button selectDeckButton; - private Button hide_panel_button; - // 选择卡组面板 - private Dictionary desk_lines = new Dictionary(); + // 卡组管理 + public int active_lines_size = 12; + private List active_pool = new List(); + private List active_lines = new List(); + + // 卡组展示管理 + public int card_lines_size = 12; + private List card_pool = new List(); + private List card_lines = new List(); + private List deck_cards = new List(); + + private UserData lastUserData; + private int currIndex = 0; private static PresetDeck instance; @@ -34,44 +48,132 @@ namespace TcgEngine.UI { base.Awake(); instance = this; + for (int i = 0; i < deck_line_content.transform.childCount; i++) + Destroy(deck_line_content.transform.GetChild(i).gameObject); + for (int i = 0; i < deck_display_grid.transform.childCount; i++) + Destroy(deck_display_grid.transform.GetChild(i).gameObject); + + for (int i = 0; i < active_lines_size; i++) + { + GameObject deckLine = Instantiate(deck_lines_prefab, deck_line_content.transform); + DeckLine line = deckLine.GetComponent(); + line.gameObject.SetActive(false); + line.onClick += OnClickLine; + active_pool.Add(line); + } + + for (int i = 0; i < card_lines_size; i++) + { + GameObject card = Instantiate(card_lines_prefab, deck_display_grid.transform); + DeckLine line = card.GetComponent(); + line.gameObject.SetActive(false); + card_pool.Add(line); + } } protected override void Start() { base.Start(); - for (int i = 0; i < deck_line_content.transform.childCount; i++) - Destroy(deck_line_content.transform.GetChild(i).gameObject); preset_lineup_button.onClick.AddListener(OnPresetLineupPanle); hide_panel_button = hide_panel.GetComponent