Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using ContractConfigurator.Parameters;
- using Contracts;
- using UnityEngine;
- using RP0;
- namespace ContractConfigurator.RP0
- {
- public class AvionicsCheckFactory : ParameterFactory
- {
- protected bool continuousControlRequired;
- public override bool Load(ConfigNode configNode)
- {
- bool valid = base.Load(configNode);
- valid &= ConfigNodeUtil.ParseValue<bool>(configNode, "continuousControlRequired", x => continuousControlRequired = x, this);
- return valid;
- }
- public override ContractParameter Generate(Contract contract)
- {
- return new AvionicsCheckParameter(title, continuousControlRequired);
- }
- }
- public class AvionicsCheckParameter : VesselParameter
- {
- protected bool controlIsLocked = false;
- protected bool controlHasLapsed = false;
- protected bool continuousControlRequired = false;
- private float lastUpdate = -5.0f;
- private const float UPDATE_FREQUENCY = 1f;
- public AvionicsCheckParameter() : base(null) { }
- public AvionicsCheckParameter(string title, bool continuousControlRequired) : base(title)
- {
- this.continuousControlRequired = continuousControlRequired;
- this.title = GetParameterTitle();
- }
- protected override void OnParameterSave(ConfigNode node)
- {
- base.OnParameterSave(node);
- }
- protected override void OnParameterLoad(ConfigNode node)
- {
- base.OnParameterLoad(node);
- }
- protected override void OnRegister()
- {
- base.OnRegister();
- }
- protected override void OnUnregister()
- {
- base.OnUnregister();
- }
- protected override string GetParameterTitle()
- {
- return continuousControlRequired ? $"Maintain sufficient avionics (do not lose control)" : $"Have sufficient avionics for control";
- }
- protected override void OnUpdate()
- {
- Vessel v = FlightGlobals.ActiveVessel;
- if (v == null) return;
- base.OnUpdate();
- if (Time.fixedTime - lastUpdate > UPDATE_FREQUENCY)
- {
- lastUpdate = Time.fixedTime;
- controlIsLocked = ControlLockerUtils.ShouldLock(v.Parts, false, out _, out _);
- controlHasLapsed = controlIsLocked || controlHasLapsed;
- Debug.Log(controlIsLocked ? "Avionics check: control locked" : "Avionics check: no control locks");
- GetTitle();
- }
- }
- protected override bool VesselMeetsCondition(Vessel vessel)
- {
- return continuousControlRequired ? !controlHasLapsed && !controlIsLocked : !controlIsLocked;
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement