コード例 #1
0
        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>();
        }
コード例 #2
0
 /// <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));
        }
コード例 #5
0
        /// <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>();
        }
コード例 #6
0
        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}");
            }
        }