Files
Kayori 755c047693 Platform, plugin & account UX improvements
- Refactor handler dispatch to use a parsed GameModel instead of raw
  model strings (Handler.cs, HandlerService.cs, new GameModel.cs)
- Add a Unity asset-extraction subsystem (Abstractions/Extractors/Unity)
- Add WriteEventLogHandler, XrpcDouble serialization type
- Rename EaCoin*Handler -> *EaCoinHandler for naming consistency
- Add PIN/username update and forgot/reset password flows, with a
  console-logging IEmailSender until real email is wired up
- Add a settings page and a theming pass (theme tokens, tailwind config)
- Add plugin nav/route/UI-manifest frontend types
2026-09-06 15:12:50 +02:00

33 lines
1.2 KiB
C#

using System.Collections.Generic;
using System.Threading;
using System.Threading.Tasks;
using Abstractions.Extractors.Unity.Models;
using Abstractions.Extractors.Unity.Services;
using AssetsTools.NET;
using AssetsTools.NET.Extra;
namespace Abstractions.Extractors.Unity;
/// <summary>Everything a single extractor needs to do its job, gathered up-front by the orchestrator
/// (loader lookups, name resolution, output path) so each extractor only has to deal with its own
/// asset-type-specific fields.</summary>
public sealed record ExtractionContext(
BundleLoader Loader,
AssetsFileInstance FileInstance,
AssetFileInfo Info,
AssetTypeValueField BaseField,
string ObjectType,
long PathId,
string OutputPathNoExtension,
StreamingInfo? StreamingInfo,
BundleDependencyIndex? DependencyIndex = null);
/// <summary>One asset-type-specific extraction strategy.</summary>
public interface IAssetExtractor
{
/// <summary>The AssetClassID type name(s) this extractor handles.</summary>
IReadOnlyCollection<string> HandledTypes { get; }
Task<bool> ExtractAsync(ExtractionContext context, CancellationToken cancellationToken = default);
}