remove layer validator

This commit is contained in:
Noah Bazer 2024-08-18 11:14:02 -04:00
parent 271367eaf2
commit b56b23f2a6

View file

@ -13,31 +13,31 @@ namespace Penumbra.Interop.PathResolving;
public class PathResolver : IDisposable, IService public class PathResolver : IDisposable, IService
{ {
private readonly PerformanceTracker _performance; private readonly PerformanceTracker _performance;
private readonly Configuration _config; private readonly Configuration _config;
private readonly CollectionManager _collectionManager; private readonly CollectionManager _collectionManager;
private readonly ResourceLoader _loader; private readonly ResourceLoader _loader;
private readonly SubfileHelper _subfileHelper; private readonly SubfileHelper _subfileHelper;
private readonly PathState _pathState; private readonly PathState _pathState;
private readonly MetaState _metaState; private readonly MetaState _metaState;
private readonly GameState _gameState; private readonly GameState _gameState;
private readonly CollectionResolver _collectionResolver; private readonly CollectionResolver _collectionResolver;
private readonly GamePathPreProcessService _preprocessor; private readonly GamePathPreProcessService _preprocessor;
public PathResolver(PerformanceTracker performance, Configuration config, CollectionManager collectionManager, ResourceLoader loader, public PathResolver(PerformanceTracker performance, Configuration config, CollectionManager collectionManager, ResourceLoader loader,
SubfileHelper subfileHelper, PathState pathState, MetaState metaState, CollectionResolver collectionResolver, GameState gameState, SubfileHelper subfileHelper, PathState pathState, MetaState metaState, CollectionResolver collectionResolver, GameState gameState,
GamePathPreProcessService preprocessor) GamePathPreProcessService preprocessor)
{ {
_performance = performance; _performance = performance;
_config = config; _config = config;
_collectionManager = collectionManager; _collectionManager = collectionManager;
_subfileHelper = subfileHelper; _subfileHelper = subfileHelper;
_pathState = pathState; _pathState = pathState;
_metaState = metaState; _metaState = metaState;
_gameState = gameState; _gameState = gameState;
_preprocessor = preprocessor; _preprocessor = preprocessor;
_collectionResolver = collectionResolver; _collectionResolver = collectionResolver;
_loader = loader; _loader = loader;
_loader.ResolvePath = ResolvePath; _loader.ResolvePath = ResolvePath;
} }
@ -48,22 +48,24 @@ public class PathResolver : IDisposable, IService
if (!_config.EnableMods) if (!_config.EnableMods)
return (null, ResolveData.Invalid); return (null, ResolveData.Invalid);
//TODO @Star - check for state validater where applicable, otherwise will break executions
// Do not allow manipulating layers to prevent very obvious cheating and softlocks. // Do not allow manipulating layers to prevent very obvious cheating and softlocks.
if (resourceType is ResourceType.Lvb or ResourceType.Lgb or ResourceType.Sgb) //if (resourceType is ResourceType.Lvb or ResourceType.Lgb or ResourceType.Sgb)
return (null, ResolveData.Invalid); //return (null, ResolveData.Invalid);
return category switch return category switch
{ {
// Only Interface collection. // Only Interface collection.
ResourceCategory.Ui => ResolveUi(path), ResourceCategory.Ui => ResolveUi(path),
// Never allow changing scripts. // Never allow changing scripts.
ResourceCategory.UiScript => (null, ResolveData.Invalid), ResourceCategory.UiScript => (null, ResolveData.Invalid),
ResourceCategory.GameScript => (null, ResolveData.Invalid), ResourceCategory.GameScript => (null, ResolveData.Invalid),
// Use actual resolving. // Use actual resolving.
ResourceCategory.Chara => Resolve(path, resourceType), ResourceCategory.Chara => Resolve(path, resourceType),
ResourceCategory.Shader => ResolveShader(path, resourceType), ResourceCategory.Shader => ResolveShader(path, resourceType),
ResourceCategory.Vfx => Resolve(path, resourceType), ResourceCategory.Vfx => Resolve(path, resourceType),
ResourceCategory.Sound => Resolve(path, resourceType), ResourceCategory.Sound => Resolve(path, resourceType),
// EXD Modding in general should probably be prohibited but is currently used for fan translations. // EXD Modding in general should probably be prohibited but is currently used for fan translations.
// We prevent WebURL specifically because it technically allows launching arbitrary programs / to execute arbitrary code. // We prevent WebURL specifically because it technically allows launching arbitrary programs / to execute arbitrary code.
ResourceCategory.Exd => path.Path.StartsWith("exd/weburl"u8) ResourceCategory.Exd => path.Path.StartsWith("exd/weburl"u8)
@ -76,10 +78,10 @@ public class PathResolver : IDisposable, IService
? ResolveUi(path) ? ResolveUi(path)
: DefaultResolver(path), : DefaultResolver(path),
ResourceCategory.BgCommon => DefaultResolver(path), ResourceCategory.BgCommon => DefaultResolver(path),
ResourceCategory.Bg => DefaultResolver(path), ResourceCategory.Bg => DefaultResolver(path),
ResourceCategory.Cut => DefaultResolver(path), ResourceCategory.Cut => DefaultResolver(path),
ResourceCategory.Music => DefaultResolver(path), ResourceCategory.Music => DefaultResolver(path),
_ => DefaultResolver(path), _ => DefaultResolver(path),
}; };
} }