2.1 KiB
2.1 KiB
Application Services
The project relies heavily on dependency injection to provide specialized services. These are split into game-logic services (Immortal) and infrastructure services (Website).
Game Logic Services (Services.Immortal)
- IBuildOrderService (
BuildOrderService): Manages build order creation, editing, and calculations. - IEconomyService (
EconomyService): Handles calculations related to resource generation and expenditure. - IEconomyComparisonService (
EconomyComparisonService): Compares different economic scenarios. - IEntityFilterService (
EntityFilterService): Provides logic for filtering game entities based on various criteria. - IImmortalSelectionService (
ImmortalSelectionService): Manages the current selection of the "Immortal" (faction/hero). - ITimingService (
TimingService): Calculates timings for unit production and upgrades. - IMemoryTesterService (
MemoryTesterService): Supports the memory tester mini-game.
Infrastructure Services (Services.Website)
- IStorageService (
StorageService): Wraps LocalStorage to provide persistent state management for the application. - INavigationService (
NavigationService): Manages application-level navigation and state. - ISearchService (
SearchService): Powers the global search functionality. - IEntityDialogService (
EntityDialogService): Controls the display of unit/building detail dialogs via portals. - IMyDialogService (
MyDialogService): A wrapper around MudBlazor's dialog service for simplified use. - IToastService (
ToastService): Provides a unified way to show notifications (toasts). - IDataCollectionService (
DataCollectionService): Handles anonymous usage analytics. - IPermissionService (
PermissionService): Manages user permissions or experimental feature toggles.
Service Registration
All services are registered in Program.cs. Example:
builder.Services.AddScoped<IBuildOrderService, BuildOrderService>();
builder.Services.AddScoped<IStorageService, StorageService>();
In Blazor WebAssembly, AddScoped effectively acts as a singleton for the session.