49 lines
1.6 KiB
C#
49 lines
1.6 KiB
C#
using FastEndpoints;
|
|
using FastEndpoints.Swagger;
|
|
using Microsoft.Extensions.Options;
|
|
using SpaceGame.Api.Universe.Bootstrap;
|
|
using SpaceGame.Api.Universe.Simulation;
|
|
|
|
var builder = WebApplication.CreateBuilder(args);
|
|
|
|
builder.Services.AddCors((options) =>
|
|
{
|
|
options.AddDefaultPolicy((policy) =>
|
|
{
|
|
policy
|
|
.AllowAnyHeader()
|
|
.AllowAnyMethod()
|
|
.AllowAnyOrigin();
|
|
});
|
|
});
|
|
builder.Services
|
|
.AddOptions<StaticDataOptions>()
|
|
.Bind(builder.Configuration.GetSection("StaticData"))
|
|
.Validate(options => !string.IsNullOrWhiteSpace(options.DataRoot), "StaticData:DataRoot must be configured.")
|
|
.ValidateOnStart();
|
|
builder.Services.Configure<BalanceOptions>(builder.Configuration.GetSection("Balance"));
|
|
builder.Services.Configure<WorldGenerationOptions>(builder.Configuration.GetSection("WorldGeneration"));
|
|
builder.Services.Configure<OrbitalSimulationOptions>(builder.Configuration.GetSection("OrbitalSimulation"));
|
|
|
|
builder.Services.AddTransient<SystemGenerationService>();
|
|
builder.Services.AddTransient<SpatialBuilder>();
|
|
builder.Services.AddTransient<WorldSeedingService>();
|
|
builder.Services.AddTransient<ScenarioLoader>();
|
|
builder.Services.AddTransient<SystemTemplateLoader>();
|
|
builder.Services.AddTransient<WorldBuilder>();
|
|
builder.Services.AddSingleton<WorldBootstrapper>();
|
|
builder.Services.AddSingleton<WorldService>();
|
|
builder.Services.AddSingleton<TelemetryService>();
|
|
builder.Services.AddHostedService<SimulationHostedService>();
|
|
|
|
builder.Services.AddFastEndpoints();
|
|
builder.Services.SwaggerDocument();
|
|
|
|
var app = builder.Build();
|
|
|
|
app.UseCors();
|
|
app.UseFastEndpoints();
|
|
app.UseSwaggerGen();
|
|
|
|
app.Run();
|