private bool isBanlistOk(DuelLog duelLog) { return(_duelLogNameAnalyzer.IsAnyBanlist(duelLog.Name) && !_duelLogNameAnalyzer.IsDuelVersusAI(duelLog.Name) && !_duelLogNameAnalyzer.IsNoDeckCheckEnabled(duelLog.Name) && !_duelLogNameAnalyzer.IsNoDeckShuffleEnabled(duelLog.Name)); }
/// <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); }
/// <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()); } } }
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); } }
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 ); } }