protected override async void nextStageAction() { if (Overshot == true) // Need to reset to zero { if (Current.LockBeingOpened.Tumblers.IndexOf(targetTumbler) > 0) { Current.LockBeingOpened.NumberOfAttempts++; } CurrentStage = new VaultTumblerFindingStage("Resetting to zero", Kit, Tumbler.ResetToZero, AttitudeProvider); } else if (object.ReferenceEquals(targetTumbler, Tumbler.ResetToZero)) { CurrentStage = new VaultTumblerFindingStage("Tumbler 0", Kit, Current.LockBeingOpened.Tumblers[0], AttitudeProvider); } else if (targetTumbler.NextTumbler != Tumbler.EndOfLock) { int i = Current.LockBeingOpened.Tumblers.IndexOf(targetTumbler) + 1; CurrentStage = new VaultTumblerFindingStage($"Tumbler {i}", Kit, targetTumbler.NextTumbler, AttitudeProvider); } else { await Current.SuccessFX.PlayToCompletion(useSpeakers : true); Current.LockBeingOpened.AnnounceLockOpened(); await Speech.SayAllOf("Lock is open; well done.", useSpeakerMode : false); Current.Finish(); } }
protected override void BeginFirstTumbler() { RunOnUiThread(() => { FindViewById(Resource.Id.vault_notification).Visibility = ViewStates.Gone; //DialText.Visibility = ViewStates.Visible; DialBody.Rotation = 0; }); var provider = new AngleAxisProvider(UpVector, AxisVector); SensorProvider.EnsureIsReady(provider).Wait(); CurrentStage = new VaultTumblerFindingStage("Tumbler 0", ThePlayersToolkit, Current.LockBeingOpened.Tumblers[0], provider); }