Advertisement
nepphhh

Untitled

Jan 2nd, 2020
175
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 2.85 KB | None | 0 0
  1. using ContractConfigurator.Parameters;
  2. using Contracts;
  3. using UnityEngine;
  4. using RP0;
  5.  
  6. namespace ContractConfigurator.RP0
  7. {
  8.     public class AvionicsCheckFactory : ParameterFactory
  9.     {
  10.         protected bool continuousControlRequired;
  11.  
  12.         public override bool Load(ConfigNode configNode)
  13.         {
  14.             bool valid = base.Load(configNode);
  15.  
  16.             valid &= ConfigNodeUtil.ParseValue<bool>(configNode, "continuousControlRequired", x => continuousControlRequired = x, this);
  17.  
  18.             return valid;
  19.         }
  20.  
  21.         public override ContractParameter Generate(Contract contract)
  22.         {
  23.             return new AvionicsCheckParameter(title, continuousControlRequired);
  24.         }
  25.     }
  26.     public class AvionicsCheckParameter : VesselParameter
  27.     {
  28.         protected bool controlIsLocked = false;
  29.         protected bool controlHasLapsed = false;
  30.         protected bool continuousControlRequired = false;
  31.  
  32.         private float lastUpdate = -5.0f;
  33.         private const float UPDATE_FREQUENCY = 1f;
  34.  
  35.         public AvionicsCheckParameter() : base(null) { }
  36.  
  37.         public AvionicsCheckParameter(string title, bool continuousControlRequired) : base(title)
  38.         {
  39.             this.continuousControlRequired = continuousControlRequired;
  40.             this.title = GetParameterTitle();
  41.         }
  42.  
  43.         protected override void OnParameterSave(ConfigNode node)
  44.         {
  45.             base.OnParameterSave(node);
  46.         }
  47.  
  48.         protected override void OnParameterLoad(ConfigNode node)
  49.         {
  50.             base.OnParameterLoad(node);
  51.         }
  52.  
  53.         protected override void OnRegister()
  54.         {
  55.             base.OnRegister();
  56.         }
  57.  
  58.         protected override void OnUnregister()
  59.         {
  60.             base.OnUnregister();
  61.         }
  62.  
  63.         protected override string GetParameterTitle()
  64.         {
  65.             return continuousControlRequired ? $"Maintain sufficient avionics (do not lose control)" : $"Have sufficient avionics for control";
  66.         }
  67.  
  68.         protected override void OnUpdate()
  69.         {
  70.             Vessel v = FlightGlobals.ActiveVessel;
  71.  
  72.             if (v == null) return;
  73.  
  74.             base.OnUpdate();
  75.  
  76.  
  77.             if (Time.fixedTime - lastUpdate > UPDATE_FREQUENCY)
  78.             {
  79.                 lastUpdate = Time.fixedTime;
  80.  
  81.                 controlIsLocked = ControlLockerUtils.ShouldLock(v.Parts, false, out _, out _);
  82.  
  83.                 controlHasLapsed = controlIsLocked || controlHasLapsed;
  84.  
  85.                 Debug.Log(controlIsLocked ? "Avionics check: control locked" : "Avionics check: no control locks");
  86.  
  87.                 GetTitle();
  88.             }
  89.         }
  90.         protected override bool VesselMeetsCondition(Vessel vessel)
  91.         {
  92.             return continuousControlRequired ? !controlHasLapsed && !controlIsLocked : !controlIsLocked;
  93.         }
  94.     }
  95. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement