128 lines
4.9 KiB
C#
128 lines
4.9 KiB
C#
using NeonSprawl.Server.Game.AbilityInput;
|
|
using NeonSprawl.Server.Game.Combat;
|
|
using NeonSprawl.Server.Game.Contracts;
|
|
using NeonSprawl.Server.Game.Crafting;
|
|
using NeonSprawl.Server.Game.Encounters;
|
|
using NeonSprawl.Server.Game.Factions;
|
|
using NeonSprawl.Server.Game.Gathering;
|
|
using NeonSprawl.Server.Game.Gigs;
|
|
using NeonSprawl.Server.Game.Interaction;
|
|
using NeonSprawl.Server.Game.Items;
|
|
using NeonSprawl.Server.Game.Mastery;
|
|
using NeonSprawl.Server.Game.Npc;
|
|
using NeonSprawl.Server.Game.PositionState;
|
|
using NeonSprawl.Server.Game.Quests;
|
|
using NeonSprawl.Server.Game.Rewards;
|
|
using NeonSprawl.Server.Game.Skills;
|
|
using NeonSprawl.Server.Game.Targeting;
|
|
|
|
var builder = WebApplication.CreateBuilder(args);
|
|
builder.Services.AddPositionStateStore(builder.Configuration);
|
|
builder.Services.AddHotbarLoadoutStore(builder.Configuration);
|
|
builder.Services.AddSkillProgressionStore(builder.Configuration);
|
|
builder.Services.AddGigProgressionStore(builder.Configuration);
|
|
builder.Services.AddPerkStateStore(builder.Configuration);
|
|
builder.Services.AddAbilityCooldownStore();
|
|
builder.Services.AddSingleton<IPlayerTargetLockStore, InMemoryPlayerTargetLockStore>();
|
|
builder.Services.AddSkillDefinitionCatalog(builder.Configuration);
|
|
builder.Services.AddFactionDefinitionCatalog(builder.Configuration);
|
|
builder.Services.AddItemDefinitionCatalog(builder.Configuration);
|
|
builder.Services.AddResourceNodeCatalog(builder.Configuration);
|
|
builder.Services.AddRecipeDefinitionCatalog(builder.Configuration);
|
|
builder.Services.AddAbilityDefinitionCatalog(builder.Configuration);
|
|
builder.Services.AddNpcBehaviorDefinitionCatalog(builder.Configuration);
|
|
builder.Services.AddEncounterAndRewardCatalogs(builder.Configuration);
|
|
builder.Services.AddQuestDefinitionCatalog(builder.Configuration);
|
|
builder.Services.AddContractTemplateCatalog(builder.Configuration);
|
|
builder.Services.AddContractInstanceStores(builder.Configuration);
|
|
builder.Services.AddPlayerQuestStateStore(builder.Configuration);
|
|
builder.Services.AddRewardDeliveryStore();
|
|
builder.Services.AddFactionStandingStores(builder.Configuration);
|
|
builder.Services.AddThreatStateStore();
|
|
builder.Services.AddNpcRuntimeStateStore();
|
|
builder.Services.AddPlayerCombatHealthStore();
|
|
builder.Services.AddMasteryCatalog(builder.Configuration);
|
|
|
|
var app = builder.Build();
|
|
_ = app.Services.GetRequiredService<SkillDefinitionCatalog>();
|
|
_ = app.Services.GetRequiredService<FactionDefinitionCatalog>();
|
|
_ = app.Services.GetRequiredService<ItemDefinitionCatalog>();
|
|
_ = app.Services.GetRequiredService<ResourceNodeCatalog>();
|
|
_ = app.Services.GetRequiredService<RecipeDefinitionCatalog>();
|
|
_ = app.Services.GetRequiredService<AbilityDefinitionCatalog>();
|
|
_ = app.Services.GetRequiredService<NpcBehaviorDefinitionCatalog>();
|
|
_ = app.Services.GetRequiredService<RewardTableDefinitionCatalog>();
|
|
_ = app.Services.GetRequiredService<EncounterDefinitionCatalog>();
|
|
_ = app.Services.GetRequiredService<QuestDefinitionCatalog>();
|
|
_ = app.Services.GetRequiredService<ContractTemplateCatalog>();
|
|
_ = app.Services.GetRequiredService<MasteryCatalog>();
|
|
_ = app.Services.GetRequiredService<ISkillLevelCurve>();
|
|
|
|
app.MapGet("/", () => Results.Text(
|
|
"Neon Sprawl game server — GET /health for JSON status.",
|
|
"text/plain"));
|
|
|
|
app.MapGet("/health", () => Results.Json(new
|
|
{
|
|
status = "ok",
|
|
service = "NeonSprawl.Server",
|
|
}));
|
|
|
|
app.MapPositionStateApi();
|
|
app.MapInteractionApi();
|
|
app.MapInteractablesWorldApi();
|
|
app.MapSkillDefinitionsWorldApi();
|
|
app.MapItemDefinitionsWorldApi();
|
|
app.MapRecipeDefinitionsWorldApi();
|
|
app.MapAbilityDefinitionsWorldApi();
|
|
app.MapNpcBehaviorDefinitionsWorldApi();
|
|
app.MapCombatTargetsWorldApi();
|
|
app.MapNpcRuntimeSnapshotWorldApi();
|
|
app.MapPlayerCombatHealthApi();
|
|
app.MapResourceNodeDefinitionsWorldApi();
|
|
app.MapEncounterDefinitionsWorldApi();
|
|
app.MapQuestDefinitionsWorldApi();
|
|
app.MapPlayerInventoryApi();
|
|
app.MapPlayerCraftApi();
|
|
app.MapSkillProgressionSnapshotApi();
|
|
app.MapGigProgressionSnapshotApi();
|
|
app.MapFactionStandingApi();
|
|
app.MapEncounterProgressApi();
|
|
app.MapQuestProgressApi();
|
|
app.MapQuestAcceptApi();
|
|
app.MapPerkStateApi();
|
|
if (app.Environment.IsDevelopment() ||
|
|
app.Environment.IsEnvironment("Testing") ||
|
|
app.Configuration.GetValue<bool>("Game:EnableMasteryFixtureApi"))
|
|
{
|
|
app.MapMasteryFixtureApi();
|
|
}
|
|
|
|
if (app.Environment.IsDevelopment() ||
|
|
app.Environment.IsEnvironment("Testing") ||
|
|
app.Configuration.GetValue<bool>("Game:EnableCombatTargetFixtureApi"))
|
|
{
|
|
app.MapCombatTargetFixtureApi();
|
|
}
|
|
|
|
if (app.Environment.IsDevelopment() ||
|
|
app.Environment.IsEnvironment("Testing") ||
|
|
app.Configuration.GetValue<bool>("Game:EnableQuestFixtureApi"))
|
|
{
|
|
app.MapQuestFixtureApi();
|
|
}
|
|
|
|
if (app.Environment.IsDevelopment() ||
|
|
app.Environment.IsEnvironment("Testing") ||
|
|
app.Configuration.GetValue<bool>("Game:EnableResourceNodeFixtureApi"))
|
|
{
|
|
app.MapResourceNodeFixtureApi();
|
|
}
|
|
|
|
app.MapTargetingApi();
|
|
app.MapHotbarLoadoutApi();
|
|
app.MapCooldownSnapshotApi();
|
|
app.MapAbilityCastApi();
|
|
|
|
app.Run();
|