/// <summary> /// Updates the cards displayed by each <see cref="CardSlotUI"/> in user's deck. /// </summary> private void RefreshUsedCards(List <Card> deckCards) { for (int i = _deckSize - 1; i >= 0; --i) { CardSlotUI cardDisplay = _deckCardsDisplays[i]; if (i > _deckSize - deckCards.Count - 1) { cardDisplay.SetCard(deckCards[_deckSize - i - 1]); } else { cardDisplay.SetCard(null); } } }
/// <summary> /// Fills the deck panel and unused cards panel with cards retrieved from the server. /// </summary> private async void Init() { NakamaSessionManager.Instance.OnConnectionSuccess -= Init; _deck = await _deckStorage.LoadDataAsync("deck"); if (_deck == null) { _deck = GenerateDefaultDeck(_defaultDeck); await _deckStorage.StoreDataAsync(_deck); } _cardInfoSidePanel.SetDeck(_deck); // Create a number of CardMenuUI equal to _deckSize and initialize them with user cards. for (int i = _deckSize - 1; i >= 0; i--) { CardSlotUI cardDisplay = Instantiate(_slotPrefab, _deckPanel.transform, false); cardDisplay.Init(OnCardSelected); _deckCardsDisplays.Add(cardDisplay); if (i < _deck.usedCards.Count) { cardDisplay.SetCard(_deck.usedCards[i]); } else { cardDisplay.SetCard(null); } } // Update the unused cards panel UI RefreshUnusedCards(_deck.unusedCards); // Refresh gems counter await UpdateFundsCounterAsync(); // Select first slot if no card is selected if (_selectedSlot == null) { OnCardSelected(_deckCardsDisplays[0]); } }