Files
crtr/Assets/Cryville/Crtr/Browsing/Actions/UseSkinAction.cs
2023-12-25 14:26:27 +08:00

34 lines
987 B
C#

using Cryville.Crtr.Browsing.UI;
using System;
namespace Cryville.Crtr.Browsing.Actions {
internal class UseSkinAction : ResourceAction<ISkinDetail> {
readonly RulesetConfigBrowser _destination;
public UseSkinAction() : this(null) { }
public UseSkinAction(RulesetConfigBrowser destination) {
_destination = destination;
}
public override string Name { get { return "Use"; } }
public override int Priority { get { return -100; } }
public override bool CanInvoke(Uri uri, ISkinDetail resource) {
if (_destination == null) {
return !OpenConfigAction.HasTab(resource.RulesetId);
}
return _destination.RulesetName == resource.RulesetId;
}
public override void Invoke(Uri uri, ISkinDetail resource) {
if (_destination == null) {
OpenConfigAction.Invoke(resource.RulesetId, config => config.generic.Skin = resource.Name);
}
else {
_destination.SetSkin(resource.Name);
OpenConfigAction.Invoke(resource.RulesetId, null);
}
}
}
}