public void Reload() { this.EconomyData = EconomyRequestFacade.GetInstance(); this.ItemInfoData = ItemInformationFacade.GetInstance(); this.TierListData = TierListFacade.GetInstance(); this.ItemInformationData = new ObservableCollection <ItemTieringData>(); }
public ConcreteEconomyRules() { this.EconomyInformation = EconomyRequestFacade.GetInstance(); this.ItemInformation = ItemInformationFacade.GetInstance(); this.TierListFacade = TierListFacade.GetInstance(); // The list of the suggestion-generating rulesets this.uniqueRules = UniqueRulesFactory.Generate(this); this.divinationRules = DivinationRuleFactory.Generate(this); this.prophecyRules = ProphecyRulesFactory.Generate(this); this.scarabRules = this.GenerateScarabRuleSet(); this.uniquemapsRules = this.GenerateUniqueMapRules(); this.fossilrules = this.GenerateFossilTieringRules(); this.incubatorrules = this.GenerateIncubatorTieringRules(); this.shaperRules = ShaperElderRulesFactory.Generate(this, "rare->shaper"); this.elderRules = ShaperElderRulesFactory.Generate(this, "rare->elder"); this.normalRules = ShaperElderRulesFactory.Generate(this, "rare->normal"); this.Rules.Clear(); this.Rules.Add(this.uniqueRules); this.Rules.Add(this.divinationRules); this.Rules.Add(this.uniquemapsRules); this.Rules.Add(this.fossilrules); this.Rules.Add(this.elderRules); this.Rules.Add(this.shaperRules); this.Rules.Add(this.incubatorrules); this.Rules.Add(this.prophecyRules); this.Rules.Add(this.scarabRules); // this.Rules.Add(this.normalRules); }
public ConcreteEconomyRules() { this.EconomyInformation = EconomyRequestFacade.GetInstance(); this.ItemInformation = ItemInformationFacade.GetInstance(); this.TierListFacade = TierListFacade.GetInstance(); this.Rules.Clear(); // The list of the suggestion-generating rulesets this.Rules.Add(UniqueRulesFactory.Generate(this)); this.Rules.Add(DivinationRuleFactory.Generate(this)); this.Rules.Add(ProphecyRulesFactory.Generate(this)); this.Rules.Add(FragmentsRuleFactory.Generate(this)); this.Rules.Add(CurrencyRuleFactory.Generate(this)); this.Rules.Add(this.GenerateScarabRuleSet()); this.Rules.Add(this.GenerateUniqueMapRules()); this.Rules.Add(this.GenerateFossilTieringRules()); this.Rules.Add(this.GenerateIncubatorTieringRules()); this.Rules.Add(this.GenerateBlightOilRuleSet()); this.Rules.Add(this.GenerateVialRuleSet()); this.Rules.Add(this.GenerateDeliriumorbsRuleSet()); this.Rules.Add(ShaperElderRulesFactory.Generate(this, "rare->shaper")); this.Rules.Add(ShaperElderRulesFactory.Generate(this, "rare->elder")); this.Rules.Add(ShaperElderRulesFactory.Generate(this, "rare->hunter")); this.Rules.Add(ShaperElderRulesFactory.Generate(this, "rare->warlord")); this.Rules.Add(ShaperElderRulesFactory.Generate(this, "rare->crusader")); this.Rules.Add(ShaperElderRulesFactory.Generate(this, "rare->redeemer")); this.Rules.Add(NormalCraftingBasesRuleFactory.Generate(this, "generalcrafting")); }
public RuleSetBuilder SkipInEarlyLeague() { if (EconomyRequestFacade.GetInstance().IsEarlyLeague() == true) { this.RuleSet.Enabled = false; } return(this); }
public override bool IsActive() { if (EconomyRequestFacade.GetInstance().ActiveMetaTags.ContainsKey("MetaBiasAspect")) { if (EconomyRequestFacade.GetInstance().ActiveMetaTags["MetaBiasAspect"] > DateTime.Now) { return(true); } } return(false); }
public override bool IsActive() { if (EconomyRequestFacade.GetInstance().ActiveMetaTags.ContainsKey("EarlyLeagueInterestAspect")) { if (EconomyRequestFacade.GetInstance().ActiveMetaTags["EarlyLeagueInterestAspect"].Item1 <DateTime.Now && EconomyRequestFacade.GetInstance().ActiveMetaTags["EarlyLeagueInterestAspect"].Item2> DateTime.Now) { return(true); } } return(false); }
private void InitializeItems() { if (string.IsNullOrEmpty(Key)) { return; } EconomyRequestFacade.GetInstance().EconomyTierlistOverview[this.BranchKey][Key].ForEach(x => { ItemVariationInformation.Add(x); }); ItemVariationInformationStatic = ItemVariationInformation; AvailableAspects.OrderBy(x => x.Name); this.RefreshAspectColoration(); }
private EconomyRequestFacade LoadEconomyOverviewData() { var result = EconomyRequestFacade.GetInstance(); var seedFolder = Configuration.AppSettings["SeedFile Folder"]; var ninjaUrl = Configuration.AppSettings["Ninja Request URL"]; var variation = Configuration.AppSettings["Ninja League"]; var league = Configuration.AppSettings["betrayal"]; foreach (var tuple in FilterPolishConstants.FileRequestData) { PerformEcoRequest(tuple.Item1, tuple.Item2, tuple.Item3, tuple.Item4); } void PerformEcoRequest(string dictionaryKey, string requestKey, string url, string prefix) => result.AddToDictionary(dictionaryKey, result.PerformRequest(league, variation, requestKey, url, prefix, this.RequestMode, seedFolder, ninjaUrl)); return(result); }
// TODO: Refactor public void Enrich(string baseType, ItemList <NinjaItem> data) { if (baseType == "Exalted Orb") { var cPrice = data.Where(x => x.Name == "Exalted Orb")?.FirstOrDefault()?.CVal; if (EconomyRequestFacade.GetInstance().IsEarlyLeague() && cPrice > 60) { cPrice = 60; } if (cPrice != null && cPrice > 30) { FilterPolishUtil.FilterPolishConfig.ExaltedOrbPrice = cPrice.Value; LoggingFacade.LogInfo($"Exalted Price: {cPrice.Value}"); } } return; }
public FileRequestResult GetAllFiles(string league, string leagueType) { LoggingFacade.LogInfo($"Starting file request"); this.LeagueType = leagueType; // Lade Filter Datei -> NS main github -> selective file(s?) // Lade Style Dateien -> NS main github -> selective files // Lade Aspect Dateien -> https://github.com/NeverSinkDev/Filter-ItemEconomyAspects -> ALL LoggingFacade.LogInfo($"GitHub file download... starting"); this.LoadGitHubFiles(); LoggingFacade.LogInfo($"GitHub file download... done"); // Lade BaseType Datei -> FB LoggingFacade.LogInfo($"BaseType Data Request: done"); this.BaseTypeData = FilterCore.Constants.BaseTypeDataProvider.BaseTypeData; // Lade Economy Dateien -> ninja API var ecoRes = this.LoadEcoData(league, leagueType); LoggingFacade.LogInfo($"Ninja Eco Request Done: done"); if (ecoRes == FileRequestResult.Fail) { LoggingFacade.LogInfo($"Ninja Eco Request Done: failed"); return(ecoRes); } var itemData = ItemInformationFacade.GetInstance(); var economyData = EconomyRequestFacade.GetInstance(); foreach (var branchKey in economyData.EconomyTierlistOverview.Keys) { itemData.Deserialize(branchKey, String.Join(Environment.NewLine, this.ItemAspects[branchKey.Replace("->", "")])); itemData.MigrateAspectDataToEcoData(economyData, branchKey); } return(ecoRes); }
private EconomyRequestFacade LoadEconomyOverviewData() { LoggingFacade.LogDebug("Loading Economy Data..."); var result = EconomyRequestFacade.GetInstance(); var seedFolder = Configuration.AppSettings["EcoFile Folder"]; var variation = Configuration.AppSettings["leagueType"]; var league = Configuration.AppSettings["currentLeague"]; foreach (var tuple in FilterPolishConfig.FileRequestData) { PerformEcoRequest(tuple.Item1, tuple.Item2, tuple.Item3); LoggingFacade.LogDebug($"Loading Economy: {tuple.Item1} + {tuple.Item2} + {tuple.Item3}"); } void PerformEcoRequest(string dictionaryKey, string requestKey, string url) => result.AddToDictionary(dictionaryKey, result.PerformRequest(league, variation, requestKey, url, seedFolder)); LoggingFacade.LogInfo("Economy Data Loaded..."); return(result); }
private void InitializeItems() { if (string.IsNullOrEmpty(Key)) { return; } var requestFacade = EconomyRequestFacade.GetInstance(); // TODO! //if (this.BranchKey.ToLower().Contains("rare")) //{ // this.branchKey = "basetypes"; //} requestFacade.EconomyTierlistOverview[this.BranchKey][Key].ForEach(x => { ItemVariationInformation.Add(x); }); ItemVariationInformationStatic = ItemVariationInformation; AvailableAspects.OrderBy(x => x.Name); this.RefreshAspectColoration(); }
public void GetAllFiles(string ninjaLeague) { FilterPolishUtil.Model.LoggingFacade.GetInstance().CustomLoggingAction = x => Console.WriteLine("err: " + x); // Lade Filter Datei -> NS main github -> selective file(s?) // Lade Style Dateien -> NS main github -> selective files // Lade Aspect Dateien -> https://github.com/NeverSinkDev/Filter-ItemEconomyAspects -> ALL this.LoadGitHubFiles(); // Lade BaseType Datei -> FB this.BaseTypeData = FilterCore.Constants.BaseTypeDataProvider.BaseTypeData; // Lade Economy Dateien -> ninja API this.LoadEcoData(ninjaLeague); var itemData = ItemInformationFacade.GetInstance(); var economyData = EconomyRequestFacade.GetInstance(); foreach (var branchKey in economyData.EconomyTierlistOverview.Keys) { itemData.Deserialize(branchKey, String.Join(Environment.NewLine, this.ItemAspects[branchKey.Replace("->", "")])); itemData.MigrateAspectDataToEcoData(economyData, branchKey); } }
public static void PerformMainRoutine(string req) { // 0) Cleanup EconomyData?.Clean(); ItemInfoData?.Clean(); TierListFacade?.Clean(); FilterAccessFacade?.Clean(); BaseTypeDataProvider.Initialize(); EconomyData = EconomyRequestFacade.GetInstance(); TierListFacade = TierListFacade.GetInstance(); FilterAccessFacade = FilterAccessFacade.GetInstance(); ItemInfoData = ItemInformationFacade.GetInstance(); // 0) Get Current League information etc EconomyData.RequestPoeLeagueInfo(); if (!EconomyData.IsLeagueActive()) { LoggingFacade.LogWarning("No Active League detected!"); } var requestedLeagueName = EconomyData.GetActiveLeagueName(); // 1) Acquire Data var localMode = Environment.GetEnvironmentVariable("localMode", EnvironmentVariableTarget.Process) ?? "true"; // string body = new StreamReader(req.Body).ReadToEnd(); // var repoName = GetReqParams(req, data, "repoName", "NeverSink-EconomyUpdated-Filter"); // var leagueType = GetReqParams(req, data.leagueType, "leagueType", "tmpstandard"); dynamic data = JsonConvert.DeserializeObject(req); string leagueType = data.leagueType ?? "tmpstandard"; string repoName = data.repoName ?? "NeverSink-EconomyUpdated-Filter"; string league = requestedLeagueName; //GetReqParams(req, data, "currentLeague", "Metamorph"); LoggingFacade.LogInfo($"[CONFIG] leagueType: {leagueType}"); LoggingFacade.LogInfo($"[CONFIG] league: {league}"); LoggingFacade.LogInfo($"[CONFIG] repoName: {repoName}"); LoggingFacade.LogInfo($"[CONFIG] localMode: {localMode}"); FilterPolishConfig.ApplicationExecutionMode = ExecutionMode.Function; if (localMode == "true") { FilterPolishConfig.ActiveRequestMode = RequestType.Dynamic; } else { FilterPolishConfig.ActiveRequestMode = RequestType.ForceOnline; } DataFiles = new DataFileRequestFacade(); LoggingFacade.LogInfo($"[CONFIG] FileRequestFacade Created!"); FileRequestResult dataRes = DataFiles.GetAllFiles(league, leagueType); // 3) Parse filter FilterAccessFacade.PrimaryFilter = new Filter(DataFiles.SeedFilter); var newVersion = FilterAccessFacade.PrimaryFilter.GetHeaderMetaData("VERSION") + "." + DateTime.Now.Year + "." + DateTime.Now.DayOfYear + "." + DateTime.Now.Hour; FilterAccessFacade.PrimaryFilter.SetHeaderMetaData("VERSION", newVersion); LoggingFacade.LogInfo($"[CONFIG] version: {newVersion}"); LoggingFacade.LogInfo($"[DEBUG] FileRequestResult: {dataRes.ToString()}"); LoggingFacade.LogInfo($"[DEBUG] League Active: {EconomyData.IsLeagueActive().ToString()}"); // null check the ecoData in case of disabled/early leagues if (dataRes == FileRequestResult.Success) { // 4) Load tier list information and enrichment procedures var tiers = FilterAccessFacade.PrimaryFilter.ExtractTiers(FilterPolishConfig.FilterTierLists); TierListFacade.TierListData = tiers; EconomyData.CreateSubEconomyTiers(); ConcreteEnrichmentProcedures.Initialize(); EconomyData.EnrichAll(EnrichmentProcedureConfiguration.PriorityEnrichmentProcedures); FilterPolishUtil.FilterPolishConfig.AdjustPricingInformation(); EconomyData.EnrichAll(EnrichmentProcedureConfiguration.EnrichmentProcedures); // EconomyData.PerformClassAbstractionProcedures(); TierListFacade.TierListData.Values.ToList().ForEach(x => x.ReEvaluate()); // 5) Generate Suggestions var economyTieringSystem = new ConcreteEconomyRules(); economyTieringSystem.GenerateSuggestions(); // 6) Apply suggestions TierListFacade.ApplyAllSuggestions(); } // 7) Generate changelogs // todo LoggingFacade.LogInfo($"[DEBUG] Seedfiler regeneration done. Starting publishing..."); // 8) Generate and Upload Filters new FilterPublisher(FilterAccessFacade.PrimaryFilter, repoName, leagueType).Run(dataRes); }
public static void PerformMainRoutine() { // 0) Cleanup EconomyData?.Clean(); ItemInfoData?.Clean(); TierListFacade?.Clean(); FilterAccessFacade?.Clean(); EconomyData = EconomyRequestFacade.GetInstance(); TierListFacade = TierListFacade.GetInstance(); FilterAccessFacade = FilterAccessFacade.GetInstance(); ItemInfoData = ItemInformationFacade.GetInstance(); // 0) Get Current League information etc // 1) Acquire Data var league = Environment.GetEnvironmentVariable("ninjaLeague", EnvironmentVariableTarget.Process) ?? "tmpstandard"; var localMode = Environment.GetEnvironmentVariable("localMode", EnvironmentVariableTarget.Process) ?? "true"; if (localMode == "true") { FilterPolishConfig.ActiveRequestMode = RequestType.Dynamic; } else { FilterPolishConfig.ActiveRequestMode = RequestType.ForceOnline; } DataFiles = new DataFileRequestFacade(); DataFiles.GetAllFiles(league); // 2) Test Data // todo // 3) Parse filter FilterAccessFacade.PrimaryFilter = new Filter(DataFiles.SeedFilter); // 4) Load ier list information and enrichment procedures var tiers = FilterAccessFacade.PrimaryFilter.ExtractTiers(FilterPolishConfig.FilterTierLists); TierListFacade.TierListData = tiers; CreateSubEconomyTiers(); ConcreteEnrichmentProcedures.Initialize(); EconomyData.EnrichAll(EnrichmentProcedureConfiguration.PriorityEnrichmentProcedures); FilterPolishUtil.FilterPolishConfig.AdjustPricingInformation(); EconomyData.EnrichAll(EnrichmentProcedureConfiguration.EnrichmentProcedures); TierListFacade.TierListData.Values.ToList().ForEach(x => x.ReEvaluate()); // 5) Generate Suggestions var economyTieringSystem = new ConcreteEconomyRules(); economyTieringSystem.GenerateSuggestions(); // 6) Apply suggestions TierListFacade.ApplyAllSuggestions(); // 7) Generate changelogs // todo // 8) Generate and Upload Filters new FilterPublisher(FilterAccessFacade.PrimaryFilter).Run(); }
public void Execute() { InfluencedItemInformation = null; LoggingFacade.LogInfo($"Performing Influenced Class Abstractions"); List <KeyValuePair <float, string> > sortedConfList = new List <KeyValuePair <float, string> >(); List <KeyValuePair <float, string> > sortedPriceList = new List <KeyValuePair <float, string> >(); List <KeyValuePair <float, string> > sortedFullPriceList = new List <KeyValuePair <float, string> >(); var abstractionList = new InfluenceBTA(); foreach (var section in EconomyRequestFacade.GetInstance().EconomyTierlistOverview) { if (!section.Key.Contains("rare")) { continue; } var currentSection = abstractionList.AddNewSection(section.Key); foreach (var item in section.Value) { if (BaseTypeDataProvider.BaseTypeData.ContainsKey(item.Key)) { var currentBaseType = new BaseBTA(); currentBaseType.Name = item.Key; for (int ilvl = 80; ilvl <= 86; ilvl++) { BaseBTA.ItemLevelContext = ilvl; // Atlas bases falsify the results, so we're skipping them. if (FilterPolishConfig.SpecialBases.Contains(item.Key)) { currentBaseType.SpecialBase = true; } // We need to access the facade to augment eco information with basetypedata var itemInfo = BaseTypeDataProvider.BaseTypeData[item.Key]; var dropLevel = int.Parse(itemInfo["DropLevel"]); var itemClass = itemInfo["Class"].ToLower(); // New section treatment if (!currentSection.Classes.ContainsKey(itemClass)) { currentSection.AddNewClass(itemClass); } currentSection[itemClass][item.Key] = currentBaseType; currentBaseType.EnterPrice(ilvl, item.Value, itemClass); } } } // Sort each list and omit the outliers var filteredValueList = new Dictionary <string, List <float> >(); var filteredFullValueList = new Dictionary <string, List <float> >(); for (int ilvl = 80; ilvl <= 86; ilvl++) { BaseBTA.ItemLevelContext = ilvl; foreach (var item in currentSection.Classes) { item.Value.CreateList(); var confPrice = item.Value.BaseTypesList .Where(x => !x.SpecialBase).Average(x => x.ConfValueList.Count == 0 ? 0 : x.ConfValueList[ilvl]); var fullPrice = item.Value.BaseTypesList .Where(x => !x.SpecialBase).Average(x => x.FullValueList[ilvl]); var validPrices = item.Value.BaseTypesList.Count(x => x.ConfValueList[ilvl] > 0.5f); item.Value.AvgConfidence = item.Value.BaseTypes.Average(x => x.Value.Confidence); item.Value.ConfPrices.Add(ilvl, confPrice); item.Value.FullPrices.Add(ilvl, fullPrice); item.Value.ValidItems.Add(ilvl, validPrices); if (ilvl == 86) { sortedPriceList.Add(new KeyValuePair <float, string>(confPrice, $"[{ilvl}]{section.Key} >> {item.Key} >> { confPrice } { fullPrice } VALID: { validPrices }/{ item.Value.BaseTypes.Count }")); } } } } var sortedValueList1 = sortedPriceList.OrderBy(x => x.Key).ToList(); foreach (var item in sortedValueList1) { LoggingFacade.LogDebug(item.Value); } InfluencedItemInformation = abstractionList; }