public SearchController( IDatabaseItemDao databaseItemDao, IPlayerItemDao playerItemDao, IDatabaseItemStatDao databaseItemStatDao, IItemSkillDao itemSkillDao, IBuddyItemDao buddyItemDao, StashManager stashManager, AugmentationItemRepo augmentationItemRepo ) { this._dbItemDao = databaseItemDao; this._playerItemDao = playerItemDao; this._itemStatService = new ItemStatService(databaseItemStatDao, itemSkillDao); this._itemPaginatorService = new ItemPaginatorService(TakeSize); this._recipeService = new RecipeService(databaseItemDao); this._costCalculationService = new CostCalculationService(playerItemDao, stashManager); this._buddyItemDao = buddyItemDao; this._stashManager = stashManager; this._augmentationItemRepo = augmentationItemRepo; // Just make sure it writes .css/.html files before displaying anything to the browser // ItemHtmlWriter.ToJsonSerializeable(new List <PlayerHeldItem>()); // TODO: is this not a NOOP? JsBind.OnRequestItems += JsBind_OnRequestItems; // Return the ingredients for a given recipe JsBind.OnRequestRecipeIngredients += (sender, args) => { var recipeArgument = args as RequestRecipeArgument; var ingredients = _recipeService.GetRecipeIngredients(recipeArgument?.RecipeRecord); _costCalculationService.Populate(ingredients); _costCalculationService.SetMod(_previousMod); _previousCallback = recipeArgument?.Callback; _previousRecipe = recipeArgument?.RecipeRecord; Browser.SetRecipeIngredients(JsBind.Serialize(ingredients)); }; // Update the recipe when the stash has changed stashManager.StashUpdated += StashManagerOnStashUpdated; // Return the list of recipes JsBind.OnRequestRecipeList += (sender, args) => { var recipes = _recipeService.GetRecipeList(); Browser.SetRecipes(JsBind.Serialize(recipes)); }; }
public MainWindow( CefBrowserHandler browser, IDatabaseItemDao databaseItemDao, IDatabaseItemStatDao databaseItemStatDao, IPlayerItemDao playerItemDao, IAzurePartitionDao azurePartitionDao, IDatabaseSettingDao databaseSettingDao, IBuddyItemDao buddyItemDao, IBuddySubscriptionDao buddySubscriptionDao, IRecipeItemDao recipeItemDao, IItemSkillDao itemSkillDao, IItemTagDao itemTagDao, ParsingService parsingService, AugmentationItemRepo augmentationItemRepo, SettingsService settingsService, GrimDawnDetector grimDawnDetector, IItemCollectionDao itemCollectionRepo ) { _cefBrowserHandler = browser; InitializeComponent(); FormClosing += MainWindow_FormClosing; _automaticUpdateChecker = new AutomaticUpdateChecker(settingsService); _settingsController = new SettingsController(settingsService); _dynamicPacker = new DynamicPacker(databaseItemStatDao); _databaseItemDao = databaseItemDao; _databaseItemStatDao = databaseItemStatDao; _playerItemDao = playerItemDao; _azurePartitionDao = azurePartitionDao; _databaseSettingDao = databaseSettingDao; _buddyItemDao = buddyItemDao; _buddySubscriptionDao = buddySubscriptionDao; _recipeParser = new RecipeParser(recipeItemDao); _itemSkillDao = itemSkillDao; _itemTagDao = itemTagDao; _parsingService = parsingService; _augmentationItemRepo = augmentationItemRepo; _userFeedbackService = new UserFeedbackService(_cefBrowserHandler); _settingsService = settingsService; _grimDawnDetector = grimDawnDetector; _itemCollectionRepo = itemCollectionRepo; }
public MainWindow( CefBrowserHandler browser, IDatabaseItemDao databaseItemDao, IDatabaseItemStatDao databaseItemStatDao, IPlayerItemDao playerItemDao, IAzurePartitionDao azurePartitionDao, IDatabaseSettingDao databaseSettingDao, IBuddyItemDao buddyItemDao, IBuddySubscriptionDao buddySubscriptionDao, ArzParser arzParser, IRecipeItemDao recipeItemDao, IItemSkillDao itemSkillDao, IItemTagDao itemTagDao, ParsingService parsingService, bool requestedDevtools, AugmentationItemRepo augmentationItemRepo ) { _cefBrowserHandler = browser; InitializeComponent(); FormClosing += MainWindow_FormClosing; _reportUsageStatistics = new Stopwatch(); _reportUsageStatistics.Start(); _dynamicPacker = new DynamicPacker(databaseItemStatDao); _databaseItemDao = databaseItemDao; _databaseItemStatDao = databaseItemStatDao; _playerItemDao = playerItemDao; _azurePartitionDao = azurePartitionDao; _databaseSettingDao = databaseSettingDao; _buddyItemDao = buddyItemDao; _buddySubscriptionDao = buddySubscriptionDao; _arzParser = arzParser; _recipeParser = new RecipeParser(recipeItemDao); _itemSkillDao = itemSkillDao; _itemTagDao = itemTagDao; _parsingService = parsingService; this._requestedDevtools = requestedDevtools; _augmentationItemRepo = augmentationItemRepo; }
public SearchController( IDatabaseItemDao databaseItemDao, IPlayerItemDao playerItemDao, IDatabaseItemStatDao databaseItemStatDao, IItemSkillDao itemSkillDao, IBuddyItemDao buddyItemDao, AugmentationItemRepo augmentationItemRepo, SettingsService settings) { _dbItemDao = databaseItemDao; _playerItemDao = playerItemDao; _itemStatService = new ItemStatService(databaseItemStatDao, itemSkillDao, settings); _itemPaginatorService = new ItemPaginatorService(TakeSize); _buddyItemDao = buddyItemDao; _augmentationItemRepo = augmentationItemRepo; _settings = settings; // Just make sure it writes .css/.html files before displaying anything to the browser // ItemHtmlWriter.ToJsonSerializeable(new List <PlayerHeldItem>()); // TODO: is this not a NOOP? JsBind.OnRequestItems += JsBind_OnRequestItems; }
private static void Run(string[] args, ThreadExecuter threadExecuter) { var factory = new SessionFactory(); // Settings should be upgraded early, it contains the language pack etc and some services depends on settings. var settingsService = StartupService.LoadSettingsService(); IPlayerItemDao playerItemDao = new PlayerItemRepo(threadExecuter, factory); IDatabaseItemDao databaseItemDao = new DatabaseItemRepo(threadExecuter, factory); RuntimeSettings.InitializeLanguage(settingsService.GetLocal().LocalizationFile, databaseItemDao.GetTagDictionary()); DumpTranslationTemplate(); threadExecuter.Execute(() => new MigrationHandler(factory).Migrate()); IDatabaseSettingDao databaseSettingDao = new DatabaseSettingRepo(threadExecuter, factory); LoadUuid(databaseSettingDao); var azurePartitionDao = new AzurePartitionRepo(threadExecuter, factory); IDatabaseItemStatDao databaseItemStatDao = new DatabaseItemStatRepo(threadExecuter, factory); IItemTagDao itemTagDao = new ItemTagRepo(threadExecuter, factory); IBuddyItemDao buddyItemDao = new BuddyItemRepo(threadExecuter, factory); IBuddySubscriptionDao buddySubscriptionDao = new BuddySubscriptionRepo(threadExecuter, factory); IRecipeItemDao recipeItemDao = new RecipeItemRepo(threadExecuter, factory); IItemSkillDao itemSkillDao = new ItemSkillRepo(threadExecuter, factory); AugmentationItemRepo augmentationItemRepo = new AugmentationItemRepo(threadExecuter, factory, new DatabaseItemStatDaoImpl(factory)); var grimDawnDetector = new GrimDawnDetector(settingsService); Logger.Debug("Updating augment state.."); augmentationItemRepo.UpdateState(); // TODO: GD Path has to be an input param, as does potentially mods. ParsingService parsingService = new ParsingService(itemTagDao, null, databaseItemDao, databaseItemStatDao, itemSkillDao, settingsService.GetLocal().LocalizationFile); StartupService.PrintStartupInfo(factory, settingsService); if (RuntimeSettings.Language is EnglishLanguage language) { foreach (var tag in itemTagDao.GetClassItemTags()) { language.SetTagIfMissing(tag.Tag, tag.Name); } } if (args != null && args.Any(m => m.Contains("-logout"))) { Logger.Info("Started with -logout specified, logging out of online backups."); settingsService.GetPersistent().AzureAuthToken = null; } using (CefBrowserHandler browser = new CefBrowserHandler()) { _mw = new MainWindow(browser, databaseItemDao, databaseItemStatDao, playerItemDao, azurePartitionDao, databaseSettingDao, buddyItemDao, buddySubscriptionDao, recipeItemDao, itemSkillDao, itemTagDao, parsingService, augmentationItemRepo, settingsService, grimDawnDetector ); Logger.Info("Checking for database updates.."); StartupService.PerformIconCheck(databaseSettingDao, grimDawnDetector); playerItemDao.DeleteDuplidates(); _mw.Visible = false; if (new DonateNagScreen(settingsService).CanNag) { Application.Run(new DonateNagScreen(settingsService)); } Logger.Info("Running the main application.."); StartupService.PerformGrimUpdateCheck(settingsService); Application.Run(_mw); } Logger.Info("Application ended."); }
public static ServiceProvider Initialize(ThreadExecuter threadExecuter, SqlDialect dialect) { Logger.Debug("Creating services"); var factory = new SessionFactory(dialect); // Settings should be upgraded early, it contains the language pack etc and some services depends on settings. var settingsService = StartupService.LoadSettingsService(); var grimDawnDetector = new GrimDawnDetector(settingsService); IPlayerItemDao playerItemDao; IDatabaseItemDao databaseItemDao; IDatabaseSettingDao databaseSettingDao; IDatabaseItemStatDao databaseItemStatDao; IItemTagDao itemTagDao; IBuddyItemDao buddyItemDao; IBuddySubscriptionDao buddySubscriptionDao; IRecipeItemDao recipeItemDao; IItemSkillDao itemSkillDao; IAugmentationItemDao augmentationItemRepo; IItemCollectionDao itemCollectionRepo; if (dialect == SqlDialect.Sqlite) { playerItemDao = new PlayerItemRepo(threadExecuter, factory, dialect); databaseItemDao = new DatabaseItemRepo(threadExecuter, factory, dialect); databaseSettingDao = new DatabaseSettingRepo(threadExecuter, factory, dialect); databaseItemStatDao = new DatabaseItemStatRepo(threadExecuter, factory, dialect); itemTagDao = new ItemTagRepo(threadExecuter, factory, dialect); buddyItemDao = new BuddyItemRepo(threadExecuter, factory, dialect); buddySubscriptionDao = new BuddySubscriptionRepo(threadExecuter, factory, dialect); recipeItemDao = new RecipeItemRepo(threadExecuter, factory, dialect); itemSkillDao = new ItemSkillRepo(threadExecuter, factory); augmentationItemRepo = new AugmentationItemRepo(threadExecuter, factory, new DatabaseItemStatDaoImpl(factory, dialect), dialect); itemCollectionRepo = new ItemCollectionRepo(threadExecuter, factory, dialect); } else { databaseItemStatDao = new DatabaseItemStatDaoImpl(factory, dialect); playerItemDao = new PlayerItemDaoImpl(factory, databaseItemStatDao, dialect); databaseItemDao = new DatabaseItemDaoImpl(factory, dialect); databaseSettingDao = new DatabaseSettingDaoImpl(factory, dialect); itemTagDao = new ItemTagDaoImpl(factory, dialect); buddyItemDao = new BuddyItemDaoImpl(factory, databaseItemStatDao, dialect); buddySubscriptionDao = new BuddySubscriptionDaoImpl(factory, dialect); recipeItemDao = new RecipeItemDaoImpl(factory, dialect); itemSkillDao = new ItemSkillDaoImpl(factory); augmentationItemRepo = new AugmentationItemDaoImpl(factory, databaseItemStatDao, dialect); itemCollectionRepo = new ItemCollectionDaoImpl(factory, dialect); } // Chicken and the egg.. var itemStatService = new ItemStatService(databaseItemStatDao, itemSkillDao, settingsService); SearchController searchController = new SearchController( databaseItemDao, playerItemDao, itemStatService, buddyItemDao, augmentationItemRepo, settingsService, itemCollectionRepo ); List <object> services = new List <object>(); services.Add(itemTagDao); services.Add(databaseItemDao); services.Add(databaseItemStatDao); services.Add(playerItemDao); services.Add(databaseSettingDao); services.Add(buddyItemDao); services.Add(buddySubscriptionDao); services.Add(itemSkillDao); services.Add(augmentationItemRepo); //services.Add(userFeedbackService); services.Add(settingsService); services.Add(grimDawnDetector); services.Add(recipeItemDao); services.Add(itemCollectionRepo); services.Add(searchController); services.Add(itemStatService); var cacher = new TransferStashServiceCache(databaseItemDao); services.Add(cacher); Logger.Debug("All services created"); return(new ServiceProvider(services)); }
private static void Run(string[] args, ThreadExecuter threadExecuter) { var factory = new SessionFactory(); // Settings should be upgraded early, it contains the language pack etc and some services depends on settings. IPlayerItemDao playerItemDao = new PlayerItemRepo(threadExecuter, factory); var statUpgradeNeeded = UpgradeSettings(); // X IDatabaseItemDao databaseItemDao = new DatabaseItemRepo(threadExecuter, factory); GlobalSettings.InitializeLanguage(Properties.Settings.Default.LocalizationFile, databaseItemDao.GetTagDictionary()); DumpTranslationTemplate(); // Prohibited for now Properties.Settings.Default.InstaTransfer = false; Properties.Settings.Default.Save(); threadExecuter.Execute(() => new MigrationHandler(factory).Migrate()); IDatabaseSettingDao databaseSettingDao = new DatabaseSettingRepo(threadExecuter, factory); LoadUuid(databaseSettingDao); var azurePartitionDao = new AzurePartitionRepo(threadExecuter, factory); IDatabaseItemStatDao databaseItemStatDao = new DatabaseItemStatRepo(threadExecuter, factory); IItemTagDao itemTagDao = new ItemTagRepo(threadExecuter, factory); #if !DEBUG if (statUpgradeNeeded) { // If we don't also update item stats, a lot of whining will ensue. // This accounts for most database updates (new fields added that needs to get populated etc) UpdatingPlayerItemsScreen x = new UpdatingPlayerItemsScreen(playerItemDao); x.ShowDialog(); } #endif IBuddyItemDao buddyItemDao = new BuddyItemRepo(threadExecuter, factory); IBuddySubscriptionDao buddySubscriptionDao = new BuddySubscriptionRepo(threadExecuter, factory); IRecipeItemDao recipeItemDao = new RecipeItemRepo(threadExecuter, factory); IItemSkillDao itemSkillDao = new ItemSkillRepo(threadExecuter, factory); ArzParser arzParser = new ArzParser(databaseSettingDao); AugmentationItemRepo augmentationItemRepo = new AugmentationItemRepo(threadExecuter, factory, new DatabaseItemStatDaoImpl(factory)); Logger.Debug("Updating augment state.."); augmentationItemRepo.UpdateState(); // TODO: GD Path has to be an input param, as does potentially mods. ParsingService parsingService = new ParsingService(itemTagDao, null, databaseItemDao, databaseItemStatDao, itemSkillDao, Properties.Settings.Default.LocalizationFile); PrintStartupInfo(factory); if (GlobalSettings.Language is EnglishLanguage language) { foreach (var tag in itemTagDao.GetClassItemTags()) { language.SetTagIfMissing(tag.Tag, tag.Name); } } if (args != null && args.Any(m => m.Contains("-logout"))) { Logger.Info("Started with -logout specified, logging out of online backups."); Settings.Default.AzureAuthToken = null; Settings.Default.Save(); } // TODO: Urgent, introduce DI and have MainWindow receive premade objects, not create them itself. using (CefBrowserHandler browser = new CefBrowserHandler()) { _mw = new MainWindow(browser, databaseItemDao, databaseItemStatDao, playerItemDao, azurePartitionDao, databaseSettingDao, buddyItemDao, buddySubscriptionDao, arzParser, recipeItemDao, itemSkillDao, itemTagDao, parsingService, augmentationItemRepo ); Logger.Info("Checking for database updates.."); // Load the GD database (or mod, if any) string GDPath = databaseSettingDao.GetCurrentDatabasePath(); if (string.IsNullOrEmpty(GDPath) || !Directory.Exists(GDPath)) { GDPath = GrimDawnDetector.GetGrimLocation(); } if (!string.IsNullOrEmpty(GDPath) && Directory.Exists(GDPath)) { var numFiles = Directory.GetFiles(GlobalPaths.StorageFolder).Length; int numFilesExpected = 2100; if (Directory.Exists(Path.Combine(GDPath, "gdx2"))) { numFilesExpected += 580; } if (Directory.Exists(Path.Combine(GDPath, "gdx1"))) { numFilesExpected += 890; } if (numFiles < numFilesExpected) { Logger.Debug($"Only found {numFiles} in storage, expected ~{numFilesExpected}+, parsing item icons."); ThreadPool.QueueUserWorkItem((m) => ArzParser.LoadIconsOnly(GDPath)); } } else { Logger.Warn("Could not find the Grim Dawn install location"); } playerItemDao.UpdateHardcoreSettings(); _mw.Visible = false; if (DonateNagScreen.CanNag) { Application.Run(new DonateNagScreen()); } Logger.Info("Running the main application.."); Application.Run(_mw); } Logger.Info("Application ended."); }
private static void Run(string[] args, ThreadExecuter threadExecuter) { var factory = new SessionFactory(); // Settings should be upgraded early, it contains the language pack etc and some services depends on settings. IPlayerItemDao playerItemDao = new PlayerItemRepo(threadExecuter, factory); UpgradeSettings(playerItemDao); // X IDatabaseItemDao databaseItemDao = new DatabaseItemRepo(threadExecuter, factory); GlobalSettings.InitializeLanguage(Properties.Settings.Default.LocalizationFile, databaseItemDao.GetTagDictionary()); // Prohibited for now Properties.Settings.Default.InstaTransfer = false; Properties.Settings.Default.Save(); threadExecuter.Execute(() => new MigrationHandler(factory).Migrate()); IDatabaseSettingDao databaseSettingDao = new DatabaseSettingRepo(threadExecuter, factory); LoadUuid(databaseSettingDao); var azurePartitionDao = new AzurePartitionRepo(threadExecuter, factory); IDatabaseItemStatDao databaseItemStatDao = new DatabaseItemStatRepo(threadExecuter, factory); IItemTagDao itemTagDao = new ItemTagRepo(threadExecuter, factory); IBuddyItemDao buddyItemDao = new BuddyItemRepo(threadExecuter, factory); IBuddySubscriptionDao buddySubscriptionDao = new BuddySubscriptionRepo(threadExecuter, factory); IRecipeItemDao recipeItemDao = new RecipeItemRepo(threadExecuter, factory); IItemSkillDao itemSkillDao = new ItemSkillRepo(threadExecuter, factory); ArzParser arzParser = new ArzParser(databaseSettingDao); AugmentationItemRepo augmentationItemRepo = new AugmentationItemRepo(threadExecuter, factory, new DatabaseItemStatDaoImpl(factory)); Logger.Debug("Updating augment state.."); augmentationItemRepo.UpdateState(); // TODO: GD Path has to be an input param, as does potentially mods. ParsingService parsingService = new ParsingService(itemTagDao, null, databaseItemDao, databaseItemStatDao, itemSkillDao, Properties.Settings.Default.LocalizationFile); PrintStartupInfo(factory); Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); Logger.Info("Visual styles enabled.."); if (GlobalSettings.Language is EnglishLanguage language) { foreach (var tag in itemTagDao.GetClassItemTags()) { language.SetTagIfMissing(tag.Tag, tag.Name); } } bool showDevtools = args != null && args.Any(m => m.Contains("-devtools")); // TODO: Urgent, introduce DI and have MainWindow receive premade objects, not create them itself. using (CefBrowserHandler browser = new CefBrowserHandler()) { _mw = new MainWindow(browser, databaseItemDao, databaseItemStatDao, playerItemDao, azurePartitionDao, databaseSettingDao, buddyItemDao, buddySubscriptionDao, arzParser, recipeItemDao, itemSkillDao, itemTagDao, parsingService, showDevtools, augmentationItemRepo ); Logger.Info("Checking for database updates.."); // Load the GD database (or mod, if any) string GDPath = databaseSettingDao.GetCurrentDatabasePath(); if (string.IsNullOrEmpty(GDPath) || !Directory.Exists(GDPath)) { GDPath = GrimDawnDetector.GetGrimLocation(); } if (!string.IsNullOrEmpty(GDPath) && Directory.Exists(GDPath)) { var numFiles = Directory.GetFiles(GlobalPaths.StorageFolder).Length; if (numFiles < 2000) { Logger.Debug($"Only found {numFiles} in storage, expected ~3200+, parsing item icons."); ThreadPool.QueueUserWorkItem((m) => ArzParser.LoadIconsOnly(GDPath)); } } else { Logger.Warn("Could not find the Grim Dawn install location"); } playerItemDao.UpdateHardcoreSettings(); _mw.Visible = false; if (DonateNagScreen.CanNag) { Application.Run(new DonateNagScreen()); } Logger.Info("Running the main application.."); Application.Run(_mw); } Logger.Info("Application ended."); }