static void Main(string[] args) { var logger = new ConsoleLogger(); try { var dbCtxProvider = new RavenfallDbContextProvider(new AppSettings { DbConnectionString = "Server=localhost;Database=Ravenfall2;Trusted_Connection=True;Integrated Security=True;" }); IGameData gameData = new GameData( dbCtxProvider, logger, new Kernel(), new QueryBuilder()); ImportGameObjects(logger, gameData); } catch (Exception exc) { logger.LogError(exc.ToString()); while (true) { System.Threading.Thread.Sleep(1000); } } }
// This method gets called by the runtime. Use this method to add services to the container. // For more information on how to configure your application, visit https://go.microsoft.com/fwlink/?LinkID=398940 public void ConfigureServices(IServiceCollection services) { var appSettingsSection = Configuration.GetSection("AppSettings"); var appSettings = appSettingsSection.Get <AppSettings>(); services.Configure <AppSettings>(appSettingsSection); services.Configure <JsonOptions>(options => { options.SerializerOptions.DefaultIgnoreCondition = JsonIgnoreCondition.WhenWritingDefault | JsonIgnoreCondition.WhenWritingNull; }); services.AddLogging(loggingBuilder => { var loggingDbContext = new RavenfallDbContextProvider(Options.Create(appSettings)); loggingBuilder.AddProvider(new RavenfallDbLoggerProvider(loggingDbContext)); }); //services.Configure<CookiePolicyOptions>(options => //{ // options.CheckConsentNeeded = context => true; // options.MinimumSameSitePolicy = SameSiteMode.None; //}); services.AddCors(options => { options.AddPolicy("AllowAllOrigins", builder => builder.AllowAnyOrigin()); options.AddPolicy("AllowAllMethods", builder => builder.AllowAnyMethod()); options.AddPolicy("AllowAllHeaders", builder => builder.AllowAnyHeader()); }); services.AddSession(options => { options.IdleTimeout = TimeSpan.FromHours(24); options.Cookie.SecurePolicy = CookieSecurePolicy.Always; options.Cookie.SameSite = SameSiteMode.Strict; options.Cookie.HttpOnly = true; options.Cookie.IsEssential = true; }); services.AddRazorPages(); services.AddServerSideBlazor(); services.AddHttpContextAccessor(); RegisterServices(services); services.Configure <GzipCompressionProviderOptions>(options => options.Level = System.IO.Compression.CompressionLevel.Optimal); services.AddResponseCompression(options => { options.Providers.Add <GzipCompressionProvider>(); }); services.AddRavenNestHealthChecks(Configuration.GetSection("AppSettings")); }
// This method gets called by the runtime. Use this method to add services to the container. public void ConfigureServices(IServiceCollection services) { var appSettingsSection = Configuration.GetSection("AppSettings"); var appSettings = appSettingsSection.Get<AppSettings>(); services.Configure<AppSettings>(appSettingsSection); services.AddLogging(loggingBuilder => { var loggingDbContext = new RavenfallDbContextProvider(Options.Create(appSettings)); loggingBuilder.AddProvider(new RavenfallDbLoggerProvider(loggingDbContext)); }); //services.AddAuthentication(options => { }) // .AddTwitch(conf => // { // conf.ClientId = appSettings.TwitchClientId; // conf.ClientSecret = appSettings.TwitchClientSecret; // }); services.AddCors(options => { options.AddPolicy("AllowAllOrigins", builder => builder.AllowAnyOrigin()); options.AddPolicy("AllowAllMethods", builder => builder.AllowAnyMethod()); options.AddPolicy("AllowAllHeaders", builder => builder.AllowAnyHeader()); }); services.AddSession(options => { options.IdleTimeout = TimeSpan.FromHours(1); options.Cookie.SecurePolicy = CookieSecurePolicy.Always; options.Cookie.SameSite = SameSiteMode.Strict; options.Cookie.HttpOnly = true; options.Cookie.IsEssential = true; }); RegisterServices(services); services.AddMvc().AddJsonOptions(options => { options.JsonSerializerOptions.PropertyNameCaseInsensitive = true; options.JsonSerializerOptions.IgnoreNullValues = true; }).SetCompatibilityVersion(CompatibilityVersion.Version_3_0); services.Configure<GzipCompressionProviderOptions>(options => options.Level = System.IO.Compression.CompressionLevel.Optimal); services.AddResponseCompression(options => { options.Providers.Add<GzipCompressionProvider>(); }); services.AddRavenNestHealthChecks(Configuration.GetSection("AppSettings")); }
public void Apply() { ToolStatus.Text = "Exp Adjustment has been disabled."; return; ToolStatus.Text = "Loading backup files..."; Task.Run(() => { var backupProvider = new GameDataBackupProvider(); var rpBefore = backupProvider.GetRestorePoint(@"C:\backup\637367260672779696", typeof(Character), typeof(Skills)); var rpAfter = backupProvider.GetRestorePoint(@"C:\backup\637369626496299730", typeof(Character), typeof(Skills)); var skillsIds = Ravenfall.RavenNest.GetAffectedSkillsIds(); var oldSkillsBefore = rpBefore.Get <Skills>(); var oldSkillsAfter = rpAfter.Get <Skills>(); var oldChars = rpBefore.Get <Character>(); var builder = new ConfigurationBuilder() .SetBasePath(Directory.GetCurrentDirectory()) .AddJsonFile("appsettings.json", optional: true, reloadOnChange: true); var configuration = builder.Build(); var appSettingsSection = configuration.GetSection("AppSettings"); var appSettings = appSettingsSection.Get <AppSettings>(); var dbContextProvider = new RavenfallDbContextProvider(Options.Create(appSettings)); ToolStatus.Text = "Processing " + skillsIds.Length + " players..."; var con = dbContextProvider.Get(); { var skillsDoubled = 0; var zeroSkills = 0; var skillDeltaCount = 0; var updated = false; var playersUpdated = 0; var processIndex = 0; foreach (var skillId in skillsIds) { ++processIndex; ToolProgress.Value = (float)Math.Floor((processIndex / (float)skillsIds.Length) * 100d); var skillBefore = oldSkillsBefore.FirstOrDefault(x => x.Id == skillId); var skillAfter = oldSkillsAfter.FirstOrDefault(x => x.Id == skillId); var skillListBefore = skillBefore.GetSkills(); var character = oldChars.FirstOrDefault(x => x.SkillsId == skillId); var skillListAfter = skillAfter.GetSkills(); var curSkills = con.Skills.FirstOrDefault(x => x.Id == skillId); var skillsUpdated = false; for (int i = 0; i < skillListAfter.Count; i++) { var sb = skillListBefore[i]; var sa = skillListAfter[i]; var exp = sb.Experience; var totalExp = exp; var level = sb.Level; if (sb.Level == 0) { ++zeroSkills; level = GameMath.OLD_ExperienceToLevel((decimal)sb.Experience); totalExp = sb.Experience; exp = totalExp - (double)GameMath.OLD_LevelToExperience(level); } if (level == 1 && exp == 0) { continue; } var levelDelta = sa.Level - level; var expDelta = 0d; if (sa.Level > 0 && levelDelta > 0) { expDelta = sa.Experience; var saLevel = sa.Level; for (var j = 1; j <= levelDelta; ++j) { expDelta += GameMath.ExperienceForLevel(level + j); } } if (levelDelta != 0 || expDelta > 0) { if (levelDelta != 0) { ++skillDeltaCount; } if (expDelta >= totalExp * 0.95d) { skillsUpdated = true; Ravenfall.RavenNest.ReduceSkillExp(i, curSkills, totalExp); } } } if (skillsUpdated) { ToolStatus.Text = playersUpdated + " players will be updated. " + processIndex + " players processed."; ++playersUpdated; updated = true; con.Update(curSkills); } } //ToolStatus.Text = playersUpdated + " players will be updated. Are you sure you want to continue?"; confirmDialog.MessageLabel.Text = playersUpdated + " players will be updated. Are you sure you want to continue?"; confirmDialog.Show(result => { if (result.GetValueOrDefault()) { ToolStatus.Text = "Saving players..."; if (updated) { con.SaveChanges(); } ToolStatus.Text = playersUpdated + " players saved."; } else { ToolStatus.Text = "No players was saved. Save cancelled."; ToolProgress.Value = 0; } con.Dispose(); }); } }); }