Пример #1
0
    public async Task <Card[]> GetAllTypeCards(Guid playerId, CardClassType type)
    {
        FilterDefinition <Player> playerFilter = Builders <Player> .Filter.Eq(player => player.Id, playerId);

        Player player = await _playerCollection.Find(playerFilter).FirstAsync();

        if (player == null)
        {
            throw new NotFoundException();
        }

        List <Card> cards = new List <Card>();

        foreach (var deck in player.DecksOwned)
        {
            foreach (var card in deck.Cards_InDeck)
            {
                if (card.Class == type)
                {
                    cards.Add(card);
                }
            }
        }
        return(cards.ToArray());
    }
Пример #2
0
    public async Task <Card> GetRarestTypeCard(Guid playerId, CardClassType type)
    {
        FilterDefinition <Player> playerFilter = Builders <Player> .Filter.Eq(player => player.Id, playerId);

        Player player = await _playerCollection.Find(playerFilter).FirstAsync();

        if (player == null)
        {
            throw new NotFoundException();
        }

        List <Card> cards = new List <Card>();

        foreach (var deck in player.DecksOwned)
        {
            foreach (var card in deck.Cards_InDeck)
            {
                if (card.Class == type)
                {
                    cards.Add(card);
                }
            }
        }
        var sorted = cards.OrderByDescending(c => c.Rarity);

        return(sorted.First());
    }
Пример #3
0
    public async Task <Deck> GetDeckWLeastOfClass(Guid playerId, CardClassType type)
    {
        FilterDefinition <Player> playerFilter = Builders <Player> .Filter.Eq(player => player.Id, playerId);

        Player player = await _playerCollection.Find(playerFilter).FirstAsync();

        if (player == null)
        {
            throw new NotFoundException();
        }

        var decks = player.DecksOwned;

        Deck deck    = null;
        int  current = 0;
        int  result  = 0;

        for (int i = 0; i < player.DecksOwned.Count; i++)
        {
            result = LoopDecksforType(decks[i], type);

            if (current == 0)
            {
                deck    = decks[i];
                current = result;
            }

            if (result < current)
            {
                deck    = decks[i];
                current = result;
            }
        }
        return(deck);
    }
Пример #4
0
    // Loop method used to count the amount of x cards in current deck
    //
    public int LoopDecksforType(Deck deck, CardClassType type)
    {
        int amount = 0;

        for (int i = 0; i < deck.Cards_InDeck.Count; i++)
        {
            if (deck.Cards_InDeck[i].Class == type)
            {
                amount = amount + 1;
            }
        }
        return(amount);
    }
Пример #5
0
 public Task <Deck> GetDeckWMostOfClass(Guid playerId, [FromBody] CardClassType type)
 {
     return(repository.GetDeckWMostOfClass(playerId, type));
 }
Пример #6
0
 public Task <Card> GetRarestTypeCard(Guid playerId, CardClassType type)
 {
     return(repository.GetRarestTypeCard(playerId, type));
 }
Пример #7
0
 public Task <Card[]> GetAllTypeCards(Guid playerId, CardClassType type)
 {
     return(repository.GetAllTypeCards(playerId, type));
 }