public IEnumerator PlaySolveSound(KMAudio moduleAudio, Transform transform) { var randomStartingNote = Random.Range(0, soundListArray.Count() - 12); yield return(new WaitForSeconds(1f)); moduleAudio.PlaySoundAtTransform(soundListArray[randomStartingNote], transform); yield return(new WaitForSeconds(.2f)); moduleAudio.PlaySoundAtTransform(soundListArray[randomStartingNote + 4], transform); yield return(new WaitForSeconds(.2f)); moduleAudio.PlaySoundAtTransform(soundListArray[randomStartingNote + 7], transform); yield return(new WaitForSeconds(.2f)); moduleAudio.PlaySoundAtTransform(soundListArray[randomStartingNote + 12], transform); yield return(new WaitForSeconds(.2f)); moduleAudio.PlaySoundAtTransform(soundListArray[randomStartingNote + 7], transform); yield return(new WaitForSeconds(.2f)); moduleAudio.PlaySoundAtTransform(soundListArray[randomStartingNote + 4], transform); yield return(new WaitForSeconds(.2f)); moduleAudio.PlaySoundAtTransform(soundListArray[randomStartingNote], transform); moduleAudio.PlaySoundAtTransform(soundListArray[randomStartingNote + 4], transform); moduleAudio.PlaySoundAtTransform(soundListArray[randomStartingNote + 7], transform); moduleAudio.PlaySoundAtTransform(soundListArray[randomStartingNote + 12], transform); }
private IEnumerator DelayKeyTurn(bool restoreBombTimer, bool causeStrikeIfWrongTime = true, bool bypassSettings = false) { Animator keyAnimator = (Animator)KeyAnimatorField.GetValue(Module.BombComponent.GetComponent(ComponentType)); KMAudio keyAudio = (KMAudio)KeyAudioField.GetValue(Module.BombComponent.GetComponent(ComponentType)); int time = (int)TargetTimeField.GetValue(Module.BombComponent.GetComponent(ComponentType)); if (!restoreBombTimer) { Module.Bomb.CurrentTimer = time + 0.5f + Time.deltaTime; yield return(null); } else if (causeStrikeIfWrongTime && time != (int)Mathf.Floor(Module.Bomb.CurrentTimer)) { Module.BombComponent.GetComponent <KMBombModule>().HandleStrike(); keyAnimator.SetTrigger("WrongTurn"); keyAudio.PlaySoundAtTransform("WrongKeyTurnFK", Module.transform); yield return(null); if (!(TwitchPlaySettings.data.AllowTurnTheKeyEarlyLate || bypassSettings) || (bool)SolvedField.GetValue(Module.BombComponent.GetComponent(ComponentType))) { yield break; } } Module.BombComponent.GetComponent <KMBombModule>().HandlePass(); KeyUnlockedField.SetValue(Module.BombComponent.GetComponent(ComponentType), true); SolvedField.SetValue(Module.BombComponent.GetComponent(ComponentType), true); keyAnimator.SetBool("IsUnlocked", true); keyAudio.PlaySoundAtTransform("TurnTheKeyFX", Module.transform); yield return(null); }
private void Awake() { for (int i = 0; i < 31; i++) { days[i] = i + 1; } //Days' setup for (int i = 0; i < 100; i++) { years[i] = i; } //Years' setup for (int i = 0; i < 29; i++) { centuries[i] = i; } //Centuries' setup yearCenturyResult = 0; _moduleId = _moduleIdCounter++; GenerateDate(); audio = GetComponent <KMAudio>(); bombModule = GetComponent <KMBombModule>(); buttonText.text = weekDays[x]; }
public void SetAudio(KMAudio a) { for (int i = 0; i < 7; i++) { this.matches[i].SetAudio(a); } }
private IEnumerator DelayKeyTurn(bool restoreBombTimer, bool causeStrikeIfWrongTime = true, bool bypassSettings = false) { Animator keyAnimator = (Animator)_keyAnimatorField.GetValue(module.GetComponent(_componentType)); KMAudio keyAudio = (KMAudio)_keyAudioField.GetValue(module.GetComponent(_componentType)); int time = (int)_targetTimeField.GetValue(module.GetComponent(_componentType)); if (!restoreBombTimer) { currentBomb.GetTimer().TimeRemaining = time + 0.5f + Time.deltaTime; yield return(null); } else if (causeStrikeIfWrongTime && time != (int)Mathf.Floor(currentBomb.GetTimer().TimeRemaining)) { module.GetComponent <KMBombModule>().HandleStrike(); keyAnimator.SetTrigger("WrongTurn"); keyAudio.PlaySoundAtTransform("WrongKeyTurnFK", module.transform); yield return(null); if (!(bool)_solvedField.GetValue(module.GetComponent(_componentType))) { yield break; } } module.GetComponent <KMBombModule>().HandlePass(); _keyUnlockedField.SetValue(module.GetComponent(_componentType), true); _solvedField.SetValue(module.GetComponent(_componentType), true); keyAnimator.SetBool("IsUnlocked", true); keyAudio.PlaySoundAtTransform("TurnTheKeyFX", module.transform); yield return(null); }
public void Start() { bombInfo = GetComponent <KMBombInfo>(); needyModule = GetComponent <KMNeedyModule>(); bombAudio = GetComponent <KMAudio>(); data = GetComponent <TechSupportData>(); interruptableModules = new List <InterruptableModule>(); options = new List <Tuple <string, int> >(); allErrors = new List <ErrorData>(); needyModule.OnActivate += OnActivate; needyModule.OnNeedyActivation += Interrupt; needyModule.OnTimerExpired += OnTimerExpired; screenOverlay.Toggle(false); // TODO: do something with KMSeedable here. monoRandom = new MonoRandom(0); data.Generate(monoRandom, 16, 12, 9, 9, 9); // Adds methods to buttons. okButton.AddListener(OnOKClicked); upButton.AddListener(OnUpClicked); downButton.AddListener(OnDownClicked); StartCoroutine(DelayedStart()); }
//Initial actions void Start() { ModuleNum = ModuleCount++; subButton.OnInteract += () => { return(ButtonPressed('u')); }; supButton.OnInteract += () => { return(ButtonPressed('s')); }; module.OnActivate += OnActivate; audio = GetComponent <KMAudio>(); }
private void Awake() { _audio = GetComponent <KMAudio>(); _light = GetComponent <Light>(); _camera = Camera.main; _cameraTransform = _camera.transform; }
private void Awake() { moduleId = moduleIdCounter++; module = this.GetComponent <KMBombModule>(); audio = this.GetComponent <KMAudio>(); for (int i = 0; i < 3; i++) { this.digits[i].SetAudio(this.audio); } }
public override void Start() { base.Start(); this.KMAudio = this.GetComponent <KMAudio>(); #if (!DEBUG) this.needyComponent = this.GetComponent <NeedyComponent>(); this.toneGenerator = this.gameObject.AddComponent <ToneGenerator>(); this.baseGain = this.toneGenerator.gain; #endif }
public Cell(MSGrid game, int x, int y, GameObject Object, KMAudio Audio, List <Sprite> Sprites) { _game = game; _x = x; _y = y; _object = Object; _audio = Audio; _selectable = Object.GetComponent <KMSelectable>(); _renderer = Object.transform.Find("Sprite").GetComponent <SpriteRenderer>(); _sprites = Sprites; }
public RedHexabuttons(ColorfulButtonSeries m, KMAudio aud, int MI, KMSelectable[] HB, MeshRenderer[] BM, Material[] LC, MeshRenderer[] LM, Transform T) { coloredHexabuttons = m; Audio = aud; moduleId = MI; hexButtons = HB; buttonMesh = BM; ledColors = LC; ledMesh = LM; transform = T; }
/// <summary> /// Unity event. /// </summary> private void Awake() { _data = GetComponent <FactoryRoomData>(); _conveyorBeltAnimator = GetComponent <Animator>(); _room = GetComponent <KMGameplayRoom>(); _audio = GetComponent <KMAudio>(); _gameCommands = GetComponent <KMGameCommands>(); _room.OnLightChange += OnLightChange; }
public void PlaySubmitSound(KMAudio moduleAudio, Transform transform) { var randomStartingNote = Random.Range(8, soundListArray.Count() - 8); var offset = 0; for (int i = 0; i < 3; i++) { moduleAudio.PlaySoundAtTransform(soundListArray[randomStartingNote + offset], transform); offset += Random.Range(0, 2) == 0 ? 3 : 4; } }
/// <summary> /// Plays an in-game sound and/or custom sound. /// </summary> /// <param name="audio">The instance of audio, so that the sound can be played.</param> /// <param name="transform">The location of the sound.</param> /// <param name="customSound">The custom sound effect, which is ignored if null.</param> /// <param name="gameSound">The in-game sound effect, which is ignored if null.</param> internal static void Play(this KMAudio audio, Transform transform, string customSound = null, KMSoundOverride.SoundEffect?gameSound = null) { if (customSound != null) { audio.PlaySoundAtTransform(customSound, transform); } if (gameSound != null) { audio.PlayGameSoundAtTransform((KMSoundOverride.SoundEffect)gameSound, transform); } }
public OrangeHexabuttons(ColorfulButtonSeries m, KMAudio a, int mi, KMSelectable[] hb, MeshRenderer[] bm, TextMesh[] bt, Material[] lc, MeshRenderer[] lm, Transform t) { coloredHexabuttons = m; Audio = a; moduleId = mi; hexButtons = hb; buttonMesh = bm; buttonText = bt; ledColors = lc; ledMesh = lm; transform = t; }
public IEnumerator PlayCycleSound(KMAudio moduleAudio, Transform transform, int comboNum) { var randomStartingNote = Random.Range(8, soundListArray.Count() - 8); var offset = 0; for (int i = 0; i < 3; i++) { moduleAudio.PlaySoundAtTransform(soundListArray[randomStartingNote + offset], transform); offset += (comboNum == 0 ? 1 : -1) * (Random.Range(0, 4) + 1); yield return(new WaitForSeconds(.1f)); } }
private void SetupPrompt(string title, string defaultValue, KMAudio audio, Action <string> confirm) { Title.text = title; Input.text = defaultValue; Confirm.onClick.AddListener(() => closePrompt(true)); Confirm.GetComponent <KMSelectable>().OnInteract += () => { closePrompt(true); return(false); }; Cancel.onClick.AddListener(() => closePrompt(false)); OnConfirm = confirm; Cancel.GetComponent <KMSelectable>().OnInteract += () => { closePrompt(false); return(false); }; // Pass KMAudio from the main pages Audio = audio; }
public BlackHexabuttons(ColorfulButtonSeries m, KMAudio aud, AudioClip[] MS, int MI, KMSelectable[] HB, MeshRenderer[] BM, Material[] LC, MeshRenderer[] LM, Light[] L, Transform T) { coloredHexabuttons = m; Audio = aud; morseSounds = MS; moduleId = MI; hexButtons = HB; buttonMesh = BM; ledColors = LC; ledMesh = LM; lights = L; transform = T; }
public GrayHexabuttons(ColorfulButtonSeries m, KMAudio aud, int MI, KMSelectable[] HB, MeshRenderer[] BM, TextMesh[] BT, Material[] LC, MeshRenderer[] LM, Light[] L, Transform T) { coloredHexabuttons = m; Audio = aud; moduleId = MI; hexButtons = HB; buttonMesh = BM; buttonText = BT; ledColors = LC; ledMesh = LM; lights = L; transform = T; }
private void Awake() { _bombModule = GetComponent <KMBombModule>(); _audio = GetComponent <KMAudio>(); _selectable = GetComponent <KMSelectable>(); _displayBar = GetComponentInChildren <TangramDisplayBar>(true); _smoke = GetComponentInChildren <ParticleSystem>(true); _bombModule.GenerateLogFriendlyName(); RandomizePuzzle(); }
public YellowHexabuttons(ColorfulButtonSeries m, KMAudio aud, int MI, KMSelectable[] HB, MeshRenderer[] BM, MeshFilter[] BMF, MeshFilter[] HMF, Transform[] HTF, MeshRenderer[] LM, Transform T, MeshFilter[] S) { coloredHexabuttons = m; Audio = aud; moduleId = MI; hexButtons = HB; buttonMesh = BM; buttonMF = BMF; highlightMF = HMF; highlightTF = HTF; ledMesh = LM; transform = T; shapes = S; }
private void Awake() { _moduleId = _moduleIdCounter++; _module = GetComponent <KMBombModule>(); _audio = GetComponent <KMAudio>(); _keys = GetComponent <KMSelectable>().Children; _screenText = transform.Find("Rotate and Scale/Display/ScreenText").GetComponent <TextMesh>(); Init(); for (var i = 0; i < _keys.Length; i++) { int j = i; _keys[j].OnInteract += delegate { ButtonPressed(j); return(false); }; } }
private IEnumerator DelayKeyTurn(bool restoreBombTimer, bool causeStrikeIfWrongTime = true) { var passCheck = false; Animator keyAnimator = (Animator)_keyAnimatorField.GetValue(module.GetComponent(_componentType)); KMAudio keyAudio = (KMAudio)_keyAudioField.GetValue(module.GetComponent(_componentType)); int time = (int)_targetTimeField.GetValue(module.GetComponent(_componentType)); var solvedModules = currentBomb.BombComponents.Where(component => component.IsSolvable); var remaining = currentBomb.BombComponents.Where(component => component.IsSolvable && !solvedModules.Contains(component)) .Select(component => component.GetModuleDisplayName()) .ToList(); if (!remaining.Exists(x => !x.Equals("Turn The Key")) && remaining.Contains("Turn The Key")) { passCheck = true; } if (!restoreBombTimer) { currentBomb.GetTimer().TimeRemaining = time + 0.5f + Time.deltaTime; yield return(null); } else if (causeStrikeIfWrongTime && time != (int)Mathf.Floor(currentBomb.GetTimer().TimeRemaining)) { module.HandleStrike(); keyAnimator.SetTrigger("WrongTurn"); keyAudio.PlaySoundAtTransform("WrongKeyTurnFK", module.transform); yield return(null); if (passCheck) { goto skip; } if (!(bool)_solvedField.GetValue(module.GetComponent(_componentType))) { yield break; } } skip: module.HandlePass(); _keyUnlockedField.SetValue(module.GetComponent(_componentType), true); _solvedField.SetValue(module.GetComponent(_componentType), true); keyAnimator.SetBool("IsUnlocked", true); keyAudio.PlaySoundAtTransform("TurnTheKeyFX", module.transform); yield return(null); }
private void OnActivate() { string serial = Module.Bomb.QueryWidgets <string>(KMBombInfo.QUERYKEY_GET_SERIAL_NUMBER).First()["serial"]; TextMesh textMesh = (TextMesh)DisplayField.GetValue(Module.BombComponent.GetComponent(ComponentType)); ActivatedField.SetValue(Module.BombComponent.GetComponent(ComponentType), true); if (string.IsNullOrEmpty(_previousSerialNumber) || !_previousSerialNumber.Equals(serial) || _keyTurnTimes.Count == 0) { if (!string.IsNullOrEmpty(_previousSerialNumber) && _previousSerialNumber.Equals(serial)) { Animator keyAnimator = (Animator)KeyAnimatorField.GetValue(Module.BombComponent.GetComponent(ComponentType)); KMAudio keyAudio = (KMAudio)KeyAudioField.GetValue(Module.BombComponent.GetComponent(ComponentType)); AttemptedForcedSolve = true; PrepareSilentSolve(); Module.BombComponent.GetComponent <KMBombModule>().HandlePass(); KeyUnlockedField.SetValue(Module.BombComponent.GetComponent(ComponentType), true); SolvedField.SetValue(Module.BombComponent.GetComponent(ComponentType), true); keyAnimator.SetBool("IsUnlocked", true); keyAudio.PlaySoundAtTransform("TurnTheKeyFX", Module.transform); textMesh.text = "88:88"; return; } _keyTurnTimes.Clear(); for (int i = OtherModes.Unexplodable ? 45 : 3; i < (OtherModes.Unexplodable ? 3600 : Module.Bomb.CurrentTimer - 45); i += 3) { _keyTurnTimes.Add(i); } if (_keyTurnTimes.Count == 0) { _keyTurnTimes.Add((int)(Module.Bomb.CurrentTimer / 2f)); } _keyTurnTimes = _keyTurnTimes.Shuffle().ToList(); _previousSerialNumber = serial; } TargetTimeField.SetValue(Module.BombComponent.GetComponent(ComponentType), _keyTurnTimes[0]); string display = $"{_keyTurnTimes[0] / 60:00}:{_keyTurnTimes[0] % 60:00}"; _keyTurnTimes.RemoveAt(0); textMesh.text = display; }
private void OnActivate() { string serial = QueryWidgets <string>(KMBombInfo.QUERYKEY_GET_SERIAL_NUMBER).First()["serial"]; TextMesh textMesh = (TextMesh)_displayField.GetValue(module.GetComponent(_componentType)); _activatedField.SetValue(module.GetComponent(_componentType), true); if (string.IsNullOrEmpty(_previousSerialNumber) || !_previousSerialNumber.Equals(serial) || _keyTurnTimes.Count == 0) { if (!string.IsNullOrEmpty(_previousSerialNumber) && _previousSerialNumber.Equals(serial)) { Animator keyAnimator = (Animator)_keyAnimatorField.GetValue(module.GetComponent(_componentType)); KMAudio keyAudio = (KMAudio)_keyAudioField.GetValue(module.GetComponent(_componentType)); module.HandlePass(); _keyUnlockedField.SetValue(module.GetComponent(_componentType), true); _solvedField.SetValue(module.GetComponent(_componentType), true); keyAnimator.SetBool("IsUnlocked", true); keyAudio.PlaySoundAtTransform("TurnTheKeyFX", module.transform); textMesh.text = "88:88"; return; } _keyTurnTimes.Clear(); for (int i = (Tweaks.CurrentMode.Equals(Mode.Zen) ? 45 : 3); i < (Tweaks.CurrentMode.Equals(Mode.Zen) ? initialTime : (currentBomb.GetTimer().TimeRemaining - 45)); i += 3) { _keyTurnTimes.Add(i); } if (_keyTurnTimes.Count == 0) { _keyTurnTimes.Add((int)(currentBomb.GetTimer().TimeRemaining / 2f)); } _keyTurnTimes = _keyTurnTimes.Shuffle().ToList(); _previousSerialNumber = serial; } _targetTimeField.SetValue(module.GetComponent(_componentType), _keyTurnTimes[0]); string display = $"{_keyTurnTimes[0] / 60:00}:{_keyTurnTimes[0] % 60:00}"; _keyTurnTimes.RemoveAt(0); textMesh.text = display; //Doesn't work active = true; }
private bool HandleKey(string[] modulesBefore, IEnumerable <string> modulesAfter, FieldInfo keyTurned, FieldInfo otherKeyTurned, FieldInfo beforeKeyField, MethodInfo onKeyTurn, FieldInfo animatorField) { if (!GetValue(ActivatedField) || GetValue(keyTurned)) { return(false); } KMBombInfo bombInfo = Module.BombComponent.GetComponent <KMBombInfo>(); KMBombModule bombModule = Module.BombComponent.GetComponent <KMBombModule>(); KMAudio bombAudio = Module.BombComponent.GetComponent <KMAudio>(); Animator keyAnimator = (Animator)animatorField.GetValue(Module.BombComponent.GetComponent(ComponentType)); if (TwitchPlaySettings.data.EnforceSolveAllBeforeTurningKeys && modulesAfter.Any(x => bombInfo.GetSolvedModuleNames().Count(x.Equals) != bombInfo.GetSolvableModuleNames().Count(x.Equals))) { keyAnimator.SetTrigger("WrongTurn"); bombAudio.PlaySoundAtTransform("WrongKeyTurnFK", Module.transform); bombModule.HandleStrike(); return(false); } beforeKeyField.SetValue(null, TwitchPlaySettings.data.DisableTurnTheKeysSoftLock ? new string[0] : modulesBefore); onKeyTurn.Invoke(Module.BombComponent.GetComponent(ComponentType), null); if (GetValue(keyTurned)) { //Check to see if any forbidden modules for this key were solved. if (TwitchPlaySettings.data.DisableTurnTheKeysSoftLock && bombInfo.GetSolvedModuleNames().Any(modulesBefore.Contains)) { bombModule.HandleStrike(); //If so, Award a strike for it. } if (!GetValue(otherKeyTurned)) { return(false); } int modules = bombInfo.GetSolvedModuleNames().Count(x => RightAfterA.Contains(x) || LeftAfterA.Contains(x)); TwitchPlaySettings.AddRewardBonus((2 * modules * OtherModes.ScoreMultiplier).RoundToInt()); IRCConnection.SendMessage($"Reward increased by {modules * 2} for defusing module !{Code} ({bombModule.ModuleDisplayName})."); } else { keyAnimator.SetTrigger("WrongTurn"); bombAudio.PlaySoundAtTransform("WrongKeyTurnFK", Module.transform); } return(false); }
public IEnumerator PlayIntervalRandomNote(int intervalInSemitones, KMAudio moduleAudio, Transform transform, string type) { var randomStartingNote = Random.Range(0, soundListArray.Count() - intervalInSemitones); switch (type) { case "Harmonically": moduleAudio.PlaySoundAtTransform(soundListArray[randomStartingNote], transform); moduleAudio.PlaySoundAtTransform(soundListArray[randomStartingNote + intervalInSemitones], transform); break; default: moduleAudio.PlaySoundAtTransform(soundListArray[randomStartingNote + (type == "Ascending" ? 0 : intervalInSemitones)], transform); yield return(new WaitForSeconds(1)); moduleAudio.PlaySoundAtTransform(soundListArray[randomStartingNote + (type == "Descending" ? 0 : intervalInSemitones)], transform); break; } yield return(null); }
private void Start() { Audio = GetComponent <KMAudio>(); Bomb = GetComponent <KMBombInfo>(); Module = GetComponent <KMBombModule>(); Selectable = GetComponent <KMSelectable>(); buttons = Selectable.Children; foreach (KMSelectable button in buttons) { button.OnInteract += () => { button.AddInteractionPunch(); ButtonPressed(button.GetComponent <BurgerButton>()); return(false); }; } GenerateOrder(); }
private void OnActivate() { string serial = QueryWidgets <string>(KMBombInfo.QUERYKEY_GET_SERIAL_NUMBER).First()["serial"]; TextMesh textMesh = component.GetValue <TextMesh>("Display"); component.SetValue("bActivated", true); if (string.IsNullOrEmpty(_previousSerialNumber) || !_previousSerialNumber.Equals(serial) || _keyTurnTimes.Count == 0) { if (!string.IsNullOrEmpty(_previousSerialNumber) && _previousSerialNumber.Equals(serial)) { Animator keyAnimator = component.GetValue <Animator>("KeyAnimator"); KMAudio keyAudio = component.GetValue <KMAudio>("mAudio"); module.HandlePass(); component.SetValue("bUnlocked", true); keyAnimator.SetBool("IsUnlocked", true); keyAudio.PlaySoundAtTransform("TurnTheKeyFX", module.transform); textMesh.text = "88:88"; return; } _keyTurnTimes.Clear(); for (int i = zenMode ? 45 : 3; i < (zenMode ? initialTime : (currentBomb.GetTimer().TimeRemaining - 45)); i += 3) { _keyTurnTimes.Add(i); } if (_keyTurnTimes.Count == 0) { _keyTurnTimes.Add((int)(currentBomb.GetTimer().TimeRemaining / 2f)); } _keyTurnTimes = _keyTurnTimes.Shuffle().ToList(); _previousSerialNumber = serial; } component.SetValue("mTargetSecond", _keyTurnTimes[0]); string display = $"{_keyTurnTimes[0] / 60:00}:{_keyTurnTimes[0] % 60:00}"; _keyTurnTimes.RemoveAt(0); textMesh.text = display; }