示例#1
0
        /// <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);
        }
示例#2
0
        /// <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);
            }
        }