示例#1
0
        public ActionResult Configure()
        {
            GameAdminVM vm         = new GameAdminVM();
            var         globalConf = db.Configurations.Find(ConfigurationKeys.GlobalGameConfiguration.GetName());
            var         planetConf = db.Configurations.Find(ConfigurationKeys.GlobalPlanetConfiguration.GetName());

            return(View(vm));
        }
        public ActionResult Configure(GameAdminVM vm)
        {
            if (ModelState.IsValid)
            {
                Configuration globalConf = new Configuration()
                {
                    Key  = ConfigurationKeys.GlobalGameConfiguration.GetName(),
                    Data = JsonConvert.SerializeObject(vm.GlobalGameConfiguration)
                };
                Configuration planetConf = new Configuration()
                {
                    Key  = ConfigurationKeys.GlobalPlanetConfiguration.GetName(),
                    Data = JsonConvert.SerializeObject(vm.GlobalPlanetConfiguration)
                };

                db.Configurations.Attach(globalConf);
                db.Configurations.Attach(planetConf);

                db.Entry(globalConf).State = EntityState.Modified;
                db.Entry(planetConf).State = EntityState.Modified;

                db.SaveChanges();

                GameBuilder builder  = new GameBuilder();
                Universe    universe = builder.AddGlobalGameConfiguration(vm.GlobalGameConfiguration).AddPlanetsOnSolarSystem(vm.GlobalPlanetConfiguration).BuildUniverse();

                if (ValidationUtil.ValidateObject(universe))
                {
                    try
                    {
                        db.ClearDatabase();
                        db.Universes.Add(universe);
                        db.SaveChanges();
                    }
                    catch (DbEntityValidationException ex)
                    {
                        var error = ex.EntityValidationErrors.First().ValidationErrors.First();
                        Console.WriteLine("error : " + error.PropertyName);
                        Console.WriteLine("message : " + error.ErrorMessage);
                        this.ModelState.AddModelError(error.PropertyName, error.ErrorMessage);

                        return(ReturnView(vm));
                    }
                }

                return(Redirect("/Home"));
            }
            else
            {
                return(ReturnView(vm));
            }
        }
        private ActionResult ReturnView(GameAdminVM vm)
        {
            var globalConf = JsonConvert.DeserializeObject <GlobalGameConfiguration>(db.Configurations.Find(ConfigurationKeys.GlobalGameConfiguration.GetName()).Data);
            var planetConf = JsonConvert.DeserializeObject <GlobalPlanetConfiguration>(db.Configurations.Find(ConfigurationKeys.GlobalPlanetConfiguration.GetName()).Data);

            vm.GlobalGameConfiguration   = globalConf;
            vm.GlobalPlanetConfiguration = planetConf;
            vm.Resources = ConfigurationsUtil.Instance.Configuration.Resources;
            ClassUtil.IdsUpdater(vm.Resources);
            vm.Buildings = ConfigurationsUtil.Instance.Configuration.ResourceGenerators.ToList <Building>();
            ClassUtil.IdsUpdater(vm.Buildings);

            return(View(vm));
        }
        public ActionResult Configure()
        {
            GameAdminVM vm            = new GameAdminVM();
            var         resGlobalConf = db.Configurations.Find(ConfigurationKeys.GlobalGameConfiguration.GetName());
            var         resPlanetConf = db.Configurations.Find(ConfigurationKeys.GlobalPlanetConfiguration.GetName());

            GlobalGameConfiguration   globalConf = new GlobalGameConfiguration();
            GlobalPlanetConfiguration planetConf = new GlobalPlanetConfiguration();

            if (resGlobalConf != null && resPlanetConf != null)
            {
                globalConf = JsonConvert.DeserializeObject <GlobalGameConfiguration>(resGlobalConf.Data);
                planetConf = JsonConvert.DeserializeObject <GlobalPlanetConfiguration>(resPlanetConf.Data);
            }
            else
            {
                resGlobalConf = new Configuration()
                {
                    Key  = ConfigurationKeys.GlobalGameConfiguration.GetName(),
                    Data = JsonConvert.SerializeObject(vm.GlobalGameConfiguration)
                };
                resPlanetConf = new Configuration()
                {
                    Key  = ConfigurationKeys.GlobalPlanetConfiguration.GetName(),
                    Data = JsonConvert.SerializeObject(vm.GlobalPlanetConfiguration)
                };

                db.Configurations.Add(resGlobalConf);
                db.Configurations.Add(resPlanetConf);

                db.SaveChanges();
            }

            vm.GlobalGameConfiguration   = globalConf;
            vm.GlobalPlanetConfiguration = planetConf;
            vm.Resources = ConfigurationsUtil.Instance.Configuration.Resources;
            ClassUtil.IdsUpdater(vm.Resources);
            vm.Buildings = ConfigurationsUtil.Instance.Configuration.ResourceGenerators.ToList <Building>();
            ClassUtil.IdsUpdater(vm.Buildings);

            return(View(vm));
        }