Esempio n. 1
0
            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();
            }
Esempio n. 2
0
        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);
        }
Esempio n. 3
0
 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;
 }
Esempio n. 4
0
 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}");
 }
Esempio n. 5
0
 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}");
 }