|
| 1 | + |
| 2 | +namespace B9PartSwitch.PartSwitch.PartModifiers |
| 3 | +{ |
| 4 | + public class ModuleFuelTanksHandler : PartModifierBase, IPartAspectLock |
| 5 | + { |
| 6 | + public const string PART_ASPECT_LOCK = "ModuleFuelTanks"; |
| 7 | + |
| 8 | + private readonly PartModule module; |
| 9 | + private readonly ConfigNode originalNode; |
| 10 | + private readonly ConfigNode dataNode; |
| 11 | + private readonly BaseEventDetails moduleDataChangedEventDetails; |
| 12 | + public ModuleFuelTanksHandler(PartModule module, ConfigNode originalNode, ConfigNode dataNode, BaseEventDetails moduleDataChangedEventDetails) |
| 13 | + { |
| 14 | + this.module = module; |
| 15 | + this.originalNode = originalNode; |
| 16 | + this.dataNode = dataNode; |
| 17 | + this.moduleDataChangedEventDetails = moduleDataChangedEventDetails; |
| 18 | + } |
| 19 | + |
| 20 | + public object PartAspectLock => PART_ASPECT_LOCK; |
| 21 | + public override string Description => "a part's ModuleFuelTanks"; |
| 22 | + public override void DeactivateOnStartEditor() => Deactivate(); |
| 23 | + public override void ActivateOnStartEditor() => Activate(); |
| 24 | + public override void DeactivateOnSwitchEditor() => Deactivate(); |
| 25 | + public override void ActivateOnSwitchEditor() => Activate(); |
| 26 | + |
| 27 | + private void Activate() => ApplyNode(dataNode); |
| 28 | + private void Deactivate() => ApplyNode(originalNode); |
| 29 | + |
| 30 | + private void ApplyNode(ConfigNode sourceNode) |
| 31 | + { |
| 32 | + var evtDetails = new BaseEventDetails(BaseEventDetails.Sender.USER); |
| 33 | + evtDetails.Set<ConfigNode>("MFTNode", sourceNode); |
| 34 | + module.Events.Send("LoadMFTModuleFromConfigNode", evtDetails); |
| 35 | + module.Events.Send("ModuleDataChanged", moduleDataChangedEventDetails); |
| 36 | + } |
| 37 | + } |
| 38 | +} |
0 commit comments