public static void RegisterWebPlatformCommonTypes(ConfigsBase configs, IAppBuilder appBuilder, Container container, IEnumerable <Assembly> assemblies) { // Get publicly available types from the domain. var exportedTypes = assemblies.SelectMany(a => a.GetExportedTypes()); // Web.config connection string aware IDbConnection profactory. container.Register <IDbConnectionFactory, WebConnectionFactory>(); // Register all fluent validation validators. container.Register(typeof(IValidator <>), assemblies); // Register all value injecter class mappers. container.RegisterCollection <IClassMapper>(assemblies); // Register logger items RegisterLoggerItems(configs, container, assemblies, exportedTypes); // Provider interfaces RegisterProviders(configs, container, assemblies, exportedTypes); // BG.Core.Repositories interfaces RegisterRepositories(configs, container, assemblies, exportedTypes); // BG.Services interfaces RegisterServices(configs, container, assemblies, exportedTypes); // IDataProtectionProvider container.Register(() => appBuilder.GetDataProtectionProvider()); // Register common OAuth container.Register <DotUserStore>(); container.Register <DotUserManager>(); }
/// <summary> /// Register all logger related types. /// </summary> /// private static void RegisterLoggerItems(ConfigsBase configs, Container container, IEnumerable <Assembly> assemblies, IEnumerable <Type> exportedTypes) { container.RegisterConditional( typeof(ILoggerFactory), context => typeof(LoggerFactory <>).MakeGenericType(context.Consumer.ImplementationType), Lifestyle.Singleton, context => true ); }
/// <summary> /// Register all types that implement repository interfaces from the 'BG.Core.Repositories' namespace. /// </summary> private static void RegisterRepositories(ConfigsBase configs, Container container, IEnumerable <Assembly> assemblies, IEnumerable <Type> exportedTypes) { var items = exportedTypes.Where(type => type.IsClass && type.GetInterfaces().Any(@interface => @interface.Namespace != null && @interface.Namespace.StartsWith("BG.Core.Repositories") && @interface != typeof(IDbConnectionFactory) ) ) .Select(type => new { service = type.GetInterfaces().First(), implementation = type }).ToList(); items.ForEach(item => container.Register(item.service, item.implementation)); }
/// <summary> /// Register all types that implement interfaces from the 'BG.Services' namespace. /// </summary> private static void RegisterServices(ConfigsBase configs, Container container, IEnumerable <Assembly> assemblies, IEnumerable <Type> exportedTypes) { container.RegisterSingleton(() => new EmailServiceSettings( configs.EmailService.SenderDisplayName, configs.EmailService.SenderEmailAddress) ); var items = exportedTypes.Where(type => type.GetInterfaces().Any(@interface => @interface.Namespace != null && @interface.Namespace.StartsWith("BG.Services") ) ).Select(type => new { service = type.GetInterfaces().First(), implementation = type }).ToList(); items.ForEach(item => container.Register(item.service, item.implementation)); }
/// <summary> /// Register all infrastructure service providers. /// </summary> private static void RegisterProviders(ConfigsBase configs, Container container, IEnumerable <Assembly> assemblies, IEnumerable <Type> exportedTypes) { /* * Email provider and parameters */ var activeEmailProvider = configs.EmailService.GetActiveProvider(); var exportedEmailProviderType = exportedTypes.Where(t => t.FullName.Equals(activeEmailProvider.Type)).SingleOrDefault(); if (exportedEmailProviderType == null) { throw new ActivationException(nameof(DependencyInjectionInitializer), new ArgumentNullException(nameof(activeEmailProvider))); } container.RegisterSingleton(() => new EmailProviderParameters( activeEmailProvider.Parameters.Cast <ParameterCollectionItem>().ToDictionary(p => p.Key, p => (object)p.Value) )); container.RegisterSingleton(typeof(IEmailProvider), exportedEmailProviderType); /* * Image provider and parameters */ var activeStorageProvider = configs.ImageService.GetActiveStorageProvider(); var exportedImageStorageProviderType = exportedTypes.Where(t => t.FullName.Equals(activeStorageProvider.Type)).SingleOrDefault(); if (exportedImageStorageProviderType == null) { throw new ActivationException(nameof(DependencyInjectionInitializer), new ArgumentNullException(nameof(activeStorageProvider))); } container.RegisterSingleton(() => new ImageStorageProviderParameters( activeStorageProvider.ImageUploadMaxLengthInBytes, activeStorageProvider.Parameters.Cast <ParameterCollectionItem>().ToDictionary(p => p.Key, p => (object)p.Value) )); container.RegisterSingleton(typeof(IImageStorageProvider), exportedImageStorageProviderType); container.Register <VirtualFileProviderPlugin>(); }
public static void SetEquipment(Player player) { try { var lf3Damage = 150; var lf4Damage = 200; var bo2Shield = 15000; var g3nSpeed = 10; var hitpoints = new int[] { player.Ship.BaseHitpoints + 60000, player.Ship.BaseHitpoints + 60000 }; var speed = new int[] { player.Ship.BaseSpeed, player.Ship.BaseSpeed }; var damage = new int[] { 0, 0 }; var shield = new int[] { 0, 0 }; using (var mySqlClient = SqlDatabaseManager.GetClient()) { var equipment = mySqlClient.ExecuteQueryTable($"SELECT * FROM player_equipment WHERE userId = {player.Id}"); foreach (DataRow row in equipment.Rows) { dynamic items = JsonConvert.DeserializeObject(row["items"].ToString()); for (var i = 1; i <= 2; i++) { foreach (int itemId in (dynamic)JsonConvert.DeserializeObject(row[$"config{i}_lasers"].ToString())) { if (itemId >= 0 && itemId < 40) { damage[i - 1] += lf3Damage; } else if (itemId >= 140) { damage[i - 1] += lf4Damage; } } foreach (int itemId in (dynamic)JsonConvert.DeserializeObject(row[$"config{i}_generators"].ToString())) { if (itemId >= 40 && itemId < 100) { shield[i - 1] += bo2Shield; } else if (itemId >= 100 && itemId < 120) { speed[i - 1] += g3nSpeed; } } var havocCount = 0; var herculesCount = 0; var drones = (dynamic)JsonConvert.DeserializeObject(row[$"config{i}_drones"].ToString()); foreach (var drone in drones) { var herculesEquipped = false; foreach (int design in drone["designs"]) { if (design >= 120 && design < 130) { havocCount++; } else if (design >= 130 && design < 140) { herculesEquipped = true; herculesCount++; } } var droneShield = bo2Shield + 2000; foreach (int item in drone["items"]) { if (item >= 0 && item < 40) { damage[i - 1] += lf3Damage + 15; } else if (item >= 140) { damage[i - 1] += lf4Damage + 20; } else if (item >= 40 && item < 100) { shield[i - 1] += droneShield + (herculesEquipped ? +Maths.GetPercentage(droneShield, 15) : 0); } } } if (havocCount == drones.Count) { damage[i - 1] += Maths.GetPercentage(damage[i - 1], 10); } else if (herculesCount == 10) { hitpoints[i - 1] += Maths.GetPercentage(hitpoints[i - 1], 20); } } speed[0] += Maths.GetPercentage(speed[0], 20); speed[1] += Maths.GetPercentage(speed[1], 20); var configsBase = new ConfigsBase(hitpoints[0], damage[0], shield[0], speed[0], hitpoints[1], damage[1], shield[1], speed[1]); var itemsBase = new ItemsBase(0);//TODO = new ItemsBase((int)items["bootyKeys"]); player.Equipment = new EquipmentBase(configsBase, itemsBase); } } } catch (Exception e) { Logger.Log("error_log", $"- [QueryManager.cs] SetEquipment({player.Id}) exception: {e}"); } }