Ejemplo n.º 1
0
        public DestinyDeck Build(DeckList deckList, List <Card> destinyCards)
        {
            var cards = destinyCards.ToDictionary(m => m.code, m => _cardDefinitionService.Convert(m));
            Func <string, CardDefinition> cardLookup = code => cards[code];

            var characters  = BuildCharacters(deckList, cardLookup);
            var drawDeck    = BuildDrawDeck(deckList, cardLookup);
            var battleField = BuildBattlefield(deckList, cardLookup);

            return(new DestinyDeck(characters, drawDeck, battleField));
        }
Ejemplo n.º 2
0
        private List <Character> BuildCharacters(DeckList deckList, Func <string, CardDefinition> fnFindCard)
        {
            var characters = new List <Character>();

            foreach (var character in deckList.characters)
            {
                var characterCard = fnFindCard(character.Key);
                for (int i = 1; i <= character.Value.quantity; i++)
                {
                    characters.Add(_characterBuilder.Build(characterCard, character.Value.dice));
                }
            }
            return(characters);
        }
Ejemplo n.º 3
0
        private List <PlayableCard> BuildDrawDeck(DeckList deckList, Func <string, CardDefinition> fnFindCard)
        {
            var drawDeck = new List <PlayableCard>();

            foreach (var slot in deckList.slots)
            {
                var card = fnFindCard(slot.Key);
                if (!_playableCardBuilder.CanBuildCard(card))
                {
                    continue;
                }
                for (int i = 1; i <= slot.Value.quantity; i++)
                {
                    drawDeck.Add(_playableCardBuilder.Build(card));
                }
            }
            return(drawDeck);
        }
Ejemplo n.º 4
0
        private Battlefield BuildBattlefield(DeckList deckList, Func <string, CardDefinition> fnFindCard)
        {
            var battleFields = new List <Battlefield>();

            foreach (var slot in deckList.slots)
            {
                var card = fnFindCard(slot.Key);
                if (card.CardType != CardType.Battlefield)
                {
                    continue;
                }
                battleFields.Add(_battleFieldBuilder.Build(card));
            }
            if (battleFields.Count == 0)
            {
                throw new Exception("No battlefields found.");
            }
            if (battleFields.Count > 1)
            {
                throw new Exception("More than one battlefield found.");
            }
            return(battleFields.First());
        }