mirror of
https://gitea.tendokyu.moe/Kayori/Medusa.net.git
synced 2026-09-27 09:23:27 +03:00
- 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
33 lines
1.2 KiB
C#
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);
|
|
}
|