Files
IGP-Fan-Reference/docs/AI Gen Docs/services.md
T
2026-05-31 14:33:58 -04:00

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.