private bool isBanlistOk(DuelLog duelLog)
 {
     return(_duelLogNameAnalyzer.IsAnyBanlist(duelLog.Name) &&
            !_duelLogNameAnalyzer.IsDuelVersusAI(duelLog.Name) &&
            !_duelLogNameAnalyzer.IsNoDeckCheckEnabled(duelLog.Name) &&
            !_duelLogNameAnalyzer.IsNoDeckShuffleEnabled(duelLog.Name));
 }
コード例 #2
0
        /// <inheritdoc />
        public List <DuelLog> Convert(string duelLogJson)
        {
            var duelLogs = JsonConvert
                           .DeserializeObject <JObject>(duelLogJson)
                           .GetValue("duel_log");

            duelLogs = duelLogs ?? throw new Exception("Is something wrong with provided JSON. Debug it if you want get more information.");

            var convertedDuelLogs = new List <DuelLog>();

            foreach (var log in duelLogs.Children <JObject>())
            {
                string beginningOfTheDuelDateAndTime = log.Value <string>("starttime");
                string endOfTheDuelDateAndTime       = log.Value <string>("endtime");
                int    roomId = log.Value <int>("roomid");

                var duelLog = new DuelLog(
                    ConvertDuelLogTimeToDateTime(beginningOfTheDuelDateAndTime),
                    ConvertDuelLogTimeToDateTime(endOfTheDuelDateAndTime),
                    roomId,
                    log.Value <int>("roommode"),
                    log.Value <string>("name"),
                    log.Value <string>("replay_filename")
                    );
                _addDecksFileNamesToProperColleciton(log, duelLog);
                convertedDuelLogs.Add(duelLog);
            }

            return(convertedDuelLogs);
        }
        private void _analyzeBanlist(DuelLog duelLog)
        {
            Banlist banlist           = _duelLogNameAnalyzer.GetBanlist(duelLog.Name, duelLog.DateOfTheBeginningOfTheDuel.Date);
            var     banlistStatistics = banlist.Statistics.FirstOrDefault(x => x.DateWhenBanlistWasUsed == duelLog.DateOfTheBeginningOfTheDuel.Date);

            if (banlistStatistics == null)
            {
                banlistStatistics = BanlistStatistics.Create(duelLog.DateOfTheBeginningOfTheDuel.Date, banlist);
                banlist.Statistics.Add(banlistStatistics);
            }

            banlistStatistics.IncrementHowManyTimesWasUsed();
        }
 private void _handleDuelLogs(
     KeyValuePair <DateTime, List <DecklistWithName> > decklistsAsStringsWithFilenames,
     List <Decklist> allDecksWhichWonFromThePack,
     List <Decklist> allDecksWhichLostFromThePack,
     DuelLog duelLog)
 {
     _analyzeBanlist(duelLog);
     _assignConvertedDecklistToProperCollection(
         decklistsAsStringsWithFilenames,
         allDecksWhichWonFromThePack,
         allDecksWhichLostFromThePack,
         duelLog);
 }
コード例 #5
0
 /// <summary>
 /// If deck won, we want add file name of the deck to <see cref="DuelLog.DecksWhichWonFileNames"/>
 /// <para>If deck lsot, we want add file name of the deck to <see cref="DuelLog.DecksWhichLostFileNames"/></para>
 /// </summary>
 /// <param name="log">Single duel log (not entire file, but just one log).</param>
 ///     If deck won, we want add file name of the deck to <see cref="DuelLog.DecksWhichWonFileNames"/>
 ///     <para>If deck lsot, we want add file name of the deck to <see cref="DuelLog.DecksWhichLostFileNames"/></para>
 /// </param>
 private void _addDecksFileNamesToProperColleciton(JObject log, DuelLog duelLog)
 {
     foreach (var player in log.GetValue("players").Children())
     {
         if (player.Value <bool>("winner"))
         {
             duelLog.DecksWhichWonFileNames.Add(player.Value <string>("deckname").ToString());
         }
         else
         {
             duelLog.DecksWhichLostFileNames.Add(player.Value <string>("deckname").ToString());
         }
     }
 }
コード例 #6
0
        public void Analyze(DuelLog duelLog)
        {
            var banlist           = _duelLogNameAnalyzer.GetBanlist(duelLog.Name, duelLog.DateOfTheEndOfTheDuel);
            var banlistStatistics = _db.BanlistStatistics.Where
                                        (x => x.DateWhenBanlistWasUsed.Date == duelLog.DateOfTheEndOfTheDuel.Date).FirstOrDefault()
                                    ?? BanlistStatistics.Create(duelLog.DateOfTheEndOfTheDuel.Date, banlist);

            banlistStatistics.IncrementHowManyTimesWasUsed();
            if (banlist.Statistics.Where
                    (x => x.DateWhenBanlistWasUsed == banlistStatistics.DateWhenBanlistWasUsed) == null)
            {
                banlist.Statistics.Add(banlistStatistics);
            }
        }
コード例 #7
0
        public void NumberOfGamesFromOneDay_WeGet3DuelLogs_Returned3()
        {
            var duelLog = new DuelLog(
                DateTime.Now,
                DateTime.Now,
                1,
                1,
                "",
                "");

            int result = _analyzer
                         .NumberOfGamesFromOneDay(new List <DuelLog>()
            {
                duelLog, duelLog, duelLog
            });

            Assert.AreEqual(3, result);
        }
        private void _assignConvertedDecklistToProperCollection(
            KeyValuePair <DateTime, List <DecklistWithName> > decklistsAsStringsWithFilenames,
            List <Decklist> allDecksWhichWonFromThePack,
            List <Decklist> allDecksWhichLostFromThePack,
            DuelLog duelLog)
        {
            foreach (var deckWhichWonFileName in duelLog.DecksWhichWonFileNames)
            {
                var decklistWithFileName = decklistsAsStringsWithFilenames.Value.FirstOrDefault(x => x.DecklistFileName == deckWhichWonFileName);
                if (decklistWithFileName == null)
                {
                    continue;
                }

                Decklist decklist = _yDKToDecklistConverter.Convert(decklistWithFileName.DecklistData);
                decklist.WhenDecklistWasFirstPlayed = duelLog.DateOfTheBeginningOfTheDuel.Date;
                allDecksWhichWonFromThePack.Add(
                    decklist
                    );
            }

            foreach (var deckWhichLostFileName in duelLog.DecksWhichLostFileNames)
            {
                var decklistWithFileName = decklistsAsStringsWithFilenames.Value.FirstOrDefault(x => x.DecklistFileName == deckWhichLostFileName);
                if (decklistWithFileName == null)
                {
                    //TODO log if file is missing
                    continue;
                }

                Decklist decklist = _yDKToDecklistConverter.Convert(decklistWithFileName.DecklistData);
                decklist.WhenDecklistWasFirstPlayed = duelLog.DateOfTheBeginningOfTheDuel.Date;
                allDecksWhichLostFromThePack.Add(
                    decklist
                    );
            }
        }