Stash work
This commit is contained in:
@@ -44,7 +44,9 @@ namespace UI.CardSystem
|
||||
private Input.InputMode _previousInputMode;
|
||||
private List<StateMachine.Card> _activeCards = new List<StateMachine.Card>();
|
||||
private const int MAX_VISIBLE_CARDS = 3;
|
||||
|
||||
private List<StateMachine.Card> _pendingCornerCards = new List<StateMachine.Card>();
|
||||
private const int MAX_PENDING_CORNER = 3;
|
||||
|
||||
internal override void OnManagedStart()
|
||||
{
|
||||
// Discover zone tabs from container
|
||||
@@ -679,5 +681,87 @@ namespace UI.CardSystem
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
public void SpawnPendingCornerCards()
|
||||
{
|
||||
if (cardPrefab == null || bottomRightSlots == null) return;
|
||||
CleanupPendingCornerCards();
|
||||
for (int i = 0; i < MAX_PENDING_CORNER; i++)
|
||||
{
|
||||
var slot = FindSlotByIndex(i);
|
||||
if (slot == null) break;
|
||||
GameObject cardObj = Instantiate(cardPrefab, bottomRightSlots.transform);
|
||||
var card = cardObj.GetComponent<StateMachine.Card>();
|
||||
if (card != null)
|
||||
{
|
||||
card.SetupForAlbumPending();
|
||||
card.AssignToSlot(slot, true);
|
||||
_pendingCornerCards.Add(card);
|
||||
}
|
||||
else
|
||||
{
|
||||
Destroy(cardObj);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void CleanupPendingCornerCards()
|
||||
{
|
||||
foreach (var c in _pendingCornerCards)
|
||||
{
|
||||
if (c != null) Destroy(c.gameObject);
|
||||
}
|
||||
_pendingCornerCards.Clear();
|
||||
}
|
||||
|
||||
public void HandlePendingCardDragStart(StateMachine.Card cornerCard)
|
||||
{
|
||||
// Select smart pending card data
|
||||
var selected = SelectSmartPendingCard();
|
||||
if (selected == null)
|
||||
{
|
||||
return; // no pending data
|
||||
}
|
||||
cornerCard.Context.SetupCard(selected);
|
||||
// Navigate album to page
|
||||
int targetPage = FindPageForCard(selected);
|
||||
if (targetPage >= 0)
|
||||
{
|
||||
NavigateToAlbumPage(targetPage);
|
||||
}
|
||||
// Begin flip state
|
||||
cornerCard.ChangeState("FlippingPendingState");
|
||||
}
|
||||
|
||||
private CardData SelectSmartPendingCard()
|
||||
{
|
||||
if (CardSystemManager.Instance == null) return null;
|
||||
var pending = CardSystemManager.Instance.GetPendingRevealCards();
|
||||
if (pending.Count == 0) return null;
|
||||
// Try current page match
|
||||
var pageDefs = GetDefinitionsOnCurrentPage();
|
||||
var match = pending.Find(c => pageDefs.Contains(c.DefinitionId));
|
||||
if (match != null) return match;
|
||||
// Fallback random
|
||||
int idx = Random.Range(0, pending.Count);
|
||||
return pending[idx];
|
||||
}
|
||||
|
||||
private List<string> GetDefinitionsOnCurrentPage()
|
||||
{
|
||||
// Placeholder: gather from slots on current page
|
||||
return new List<string>();
|
||||
}
|
||||
|
||||
private int FindPageForCard(CardData data)
|
||||
{
|
||||
// Placeholder: map definition to page index
|
||||
return -1;
|
||||
}
|
||||
|
||||
private void NavigateToAlbumPage(int pageIndex)
|
||||
{
|
||||
// Placeholder: call book/page flip controller
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user