示例#1
0
        /// <summary>
        /// Used to process a battle.
        /// </summary>
        /// <param name="playerA"></param>
        /// <param name="playerB"></param>
        private void Process(IPlayer playerA, IPlayer playerB)
        {
            // Get loggers
            IBattleLog battleLog = new BattleLog();

            var(playerLogA, playerLogB) = battleLog.GetPlayerLogs(playerA.Username, playerB.Username);
            // Get cards
            var rawDeckA = db.GetUserDeck(playerA.Username);
            var rawDeckB = db.GetUserDeck(playerB.Username);
            // Convert card data schema to functional card
            var deckA = rawDeckA.Select(
                rawCard => CardFactory.Print(rawCard.Name, rawCard.Damage, playerLogA)).
                        Where(card => card != null).ToList() !;
            var deckB = rawDeckB.Select(
                rawCard => CardFactory.Print(rawCard.Name, rawCard.Damage, playerLogB)).
                        Where(card => card != null).ToList() !;

            playerA.AddDeck(deckA !);
            playerB.AddDeck(deckB !);
            // Let's get ready to rumble
            var battle = new Battle(playerA, playerB, battleLog);
            var result = battle.ProcessBattle();
            var log    = (JsonConvert.SerializeObject(result.Log) is var json && json is {}) ? json : "";