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