/// <summary> /// Retrieves users deck from Nakama server, shuffles all cards and fills the /// hand with a number of cards equal to <see cref="_handSize"/>. /// Returns a list of all cards in hand. /// </summary> public async Task <List <Card> > InitAsync(string userId) { _ownerId = userId; _deck = await _deckStorage.LoadDataAsync(userId, "deck"); _cards = new Queue <Card>(); _playedCards = new Queue <Card>(_deck.usedCards); _cardsInHand = new List <Card>(); for (int i = 0; i < _handSize; i++) { DrawCard(); } return(_cardsInHand); }
/// <summary> /// Sets fields of this panel to show <see cref="PlayerData"/> gathered from <paramref name="user"/>. /// </summary> /// <param name="user">User to be displayed in this panel.</param> private async Task <bool> PopulateDataAsync(IApiUser user) { Client client = NakamaSessionManager.Instance.Client; ISession session = NakamaSessionManager.Instance.Session; PlayerData data = await _playerDataStorage.LoadDataAsync(user.Id, "player_data"); IUserGroupListUserGroup clan = await ClanManager.GetUserClanAsync(client, session, user.Id); Deck deck = await _deckStorage.LoadDataAsync(user.Id, "deck"); if (data != null && deck != null) { _usernameText.text = user.Username; _statsText.text = GenerateStats(data).TrimEnd(); if (clan != null) { _clanNameText.text = clan.Group.Name; } else { _clanNameText.text = "<i><color=#b0b0b0>[Not a clan member yet]</color></i>"; } for (int i = 0; i < deck.usedCards.Count; i++) { Card card = deck.usedCards[i]; _cardSlots[i].SetCard(card); } return(true); } else { return(false); } }