using Lumina.Data; namespace Penumbra.Api.Api; /// API methods pertaining to the resolving of paths. public interface IPenumbraApiResolve { /// /// Resolve a given via Penumbra using the Base collection. /// /// The resolved path, or the given path if Penumbra would not manipulate it. public string ResolveDefaultPath(string gamePath); /// /// Resolve a given via Penumbra using the Interface collection. /// /// The resolved path, or the given path if Penumbra would not manipulate it. public string ResolveInterfacePath(string gamePath); /// /// Resolve a given via Penumbra using collection applying to the /// given by its index in the game object table. /// /// If the object does not exist in the table, the default collection is used. /// The resolved path, or the given path if Penumbra would not manipulate it. public string ResolveGameObjectPath(string gamePath, int gameObjectIdx); /// /// Resolve a given via Penumbra using the collection currently applying to the player character. /// /// The resolved path, or the given path if Penumbra would not manipulate it. public string ResolvePlayerPath(string gamePath); /// /// Reverse resolves a given local into its replacement in form of all applicable game paths /// for the collection applying to the th game object in the game object table. /// /// If the object does not exist in the table, the default collection is used. /// A list of game paths resolving to the modded path. public string[] ReverseResolveGameObjectPath(string moddedPath, int gameObjectIdx); /// /// Reverse resolves a given local into its replacement in form of all applicable game paths /// for the collection currently applying to the player character. /// /// A list of game paths resolving to the modded path. public string[] ReverseResolvePlayerPath(string moddedPath); /// /// Resolve all game paths in and reserve all paths in at once. /// /// Paths to forward-resolve. /// Paths to reverse-resolve. /// A pair of an array of forward-resolved single paths of the same length as and an array of arrays of reverse-resolved paths. /// The outer array has the same length as while each inner array can have arbitrary length. public (string[], string[][]) ResolvePlayerPaths(string[] forward, string[] reverse); /// /// Resolve all game paths in and reserve all paths in at once asynchronously. /// /// /// Can be called from outside of framework. Can theoretically produce incoherent state when collections change during evaluation. public Task<(string[], string[][])> ResolvePlayerPathsAsync(string[] forward, string[] reverse); }