public TumblerFindingStage(string label, Toolkit toolkit, Tumbler tgtTumbler, AngleAxisProvider provider) : base(label) { Kit = toolkit; targetTumbler = tgtTumbler; AttitudeProvider = provider; SetUpProvider(AttitudeProvider, allowProviderToPersist: true); LastAngle = Angle = AttitudeProvider.Angle; Log.Debug("TumblerStage|Ctor", $"Initial angle: {Angle}"); TargetAngle = tgtTumbler.Angle; RequiredDirection = tgtTumbler.Direction; // Certain special tumblers - like ResetToZero - have a designated direction of zero, meaning "opposite to current setting." if (tgtTumbler.Direction == 0) { RequiredDirection = -1 * Math.Sign(provider.Angle); } // CurrentDirection is based on AngleTrend. AngleTrend = new RollingAverage <double>(5); InterimInterval = TimeSpan.FromMilliseconds(20); Activate(); }
protected override void BeginFirstTumbler() { RunOnUiThread(() => { FindViewById(Resource.Id.vault_notification).Visibility = ViewStates.Gone; //DialText = FindViewById<TextView>(Resource.Id.vault_dial_text); //DialText.Visibility = ViewStates.Visible; }); var provider = new AngleAxisProvider(UpVector, AxisVector); SensorProvider.EnsureIsReady(provider).Wait(); CurrentStage = new LockTumblerFindingStage("Tumbler 0", ThePlayersToolkit, Current.LockBeingOpened.Tumblers[0], provider); }
public LockTumblerLiftingStage(string label, Toolkit toolkit, Tumbler tgtTumbler, AngleAxisProvider oProvider = null) : base(label, toolkit, Tumbler.PinMoveTarget, oProvider) { Log.Debug("Lockpicking|TumblerLifting", $"Lifting {label}"); AngleRateOfChange = new RollingAverage <float>(5, 0f); tumblerUnderway = tgtTumbler; }
public LockTumblerFindingStage(string label, Toolkit toolkit, Tumbler tgtTumbler, AngleAxisProvider oProvider = null) : base(label, toolkit, tgtTumbler, oProvider) { Log.Debug("Lockpicking|TumblerFinding", $"Starting to search for {label}"); }
public VaultTumblerFindingStage(string label, Toolkit toolkit, Tumbler tgtTumbler, AngleAxisProvider oProvider) : base(label, toolkit, tgtTumbler, oProvider) { DegreesBetweenClicks = Current.LockBeingOpened.DegreesBetweenClicks; TotalClicks = (int)(360 / DegreesBetweenClicks); LastClicks = CurrentClicks = Clicks(oProvider.Angle); TargetClicks = Clicks(tgtTumbler.Angle); Log.Debug("Safecracking|TumblerFinding", $"Starting to search for {label}"); }