private IEnumerator Solve(TheTwinScript module) { module.Audio.PlayGameSoundAtTransform(KMSoundOverride.SoundEffect.CorrectChime, transform); _allowTPInteraction = false; module._moduleSolved = true; module.FakeStatusLight.HandlePass(StatusLightState.Green); if (_autoSolved) { Module.HandlePass(); _autoSolved = false; yield break; } while (!_moduleSolved) { yield return(new WaitForSeconds(.1f)); } if (_modulePair != null && Settings.SecondDelay > 0) { if (this._moduleId > _modulePair._moduleId) { yield return(new WaitForSeconds(Settings.SecondDelay)); } } Module.HandlePass(); }
private void UpdateSubmissionDisplay(TheTwinScript module) { int currentDigit; if (_modulePair != null && _moduleId == module._moduleId) { currentDigit = module._currentDigit - 1; } else { currentDigit = module._currentDigit; } if (currentDigit >= module._finalSequence.Length) { return; } if (currentDigit == 0) { module.UpdateStageScreen("-" + module._finalSequence[0].ToString()); } else if (currentDigit < 0) { module.UpdateStageScreen("--"); } else { module.UpdateStageScreen(module._finalSequence.Substring(currentDigit - 1, 2)); } }
private void Strike(TheTwinScript module) { module.FakeStatusLight.FlashStrike(); Module.HandleStrike(); if (!_isReady) { return; } _activeCoroutines.Add(CycleColorOnStrike()); StartCoroutine(_activeCoroutines.Last()); if (_modulePair != null) { _modulePair._activeCoroutines.Add(_modulePair.CycleColorOnStrike()); _modulePair.StartCoroutine(_modulePair._activeCoroutines.Last()); } }
private IEnumerator TradeInfo(IEnumerable <TheTwinScript> module) { _modulePair = module.ElementAt(0); if (_moduleId < _modulePair._moduleId) { _swapCase = TwitchPlaysActive ? Rnd.Range(1, 4) : Rnd.Range(0, 4); } else { while (!_modulePair._assignedRNG) { yield return(new WaitForSeconds(.1f)); } _swapCase = module.ElementAt(0)._swapCase; } _assignedRNG = true; while (!_modulePair._isInitialized) { yield return(new WaitForSeconds(.1f)); } switch (_swapCase) { case 0: //Manipulating digits in final sequences ModulePairIdDisplay.color = Color.red; ColorblindTexts[1].text = "R"; Debug.LogFormat("[The Twin #{0}] The ID display is red. Manipulating digits in final sequences.", _moduleId); yield return(StartCoroutine(GenerateFinalString())); while (!_modulePair._isGenerated) { yield return(new WaitForSeconds(.1f)); } int finalSequenceLength = 1; if (_finalSequence.Length < _modulePair._finalSequence.Length) { finalSequenceLength = _finalSequence.Length; } else { finalSequenceLength = _modulePair._finalSequence.Length; } StringBuilder finalSequence = new StringBuilder(_finalSequence.Substring(0, finalSequenceLength)); StringBuilder otherFinalSequence = new StringBuilder(_modulePair._finalSequence.Substring(0, finalSequenceLength)); _finishedTrading = true; while (!_modulePair._finishedTrading) { yield return(new WaitForSeconds(.1f)); } if (_moduleId < _modulePair._moduleId) { for (int index = 0; index < finalSequenceLength; index++) { if (finalSequence[index] > otherFinalSequence[index]) { finalSequence[index] = otherFinalSequence[index]; } } } else { for (int index = 0; index < finalSequenceLength; index++) { if (finalSequence[index] < otherFinalSequence[index]) { finalSequence[index] = otherFinalSequence[index]; } } } _finalSequence = finalSequence.ToString(); Debug.LogFormat("[The Twin #{0}] The final sequence is now {1}.", _moduleId, _finalSequence); break; case 1: //Trading the initial number ModulePairIdDisplay.color = Color.green; ColorblindTexts[1].text = "G"; Debug.LogFormat("[The Twin #{0}] The ID display is green. Trading the starting number.", _moduleId); var startingNumber = _modulePair._startingNumber; _finishedTrading = true; while (!_modulePair._finishedTrading) { yield return(new WaitForSeconds(.1f)); } _startingNumber = startingNumber; Debug.LogFormat("[The Twin #{0}] The starting number is now {1}.", _moduleId, _startingNumber); yield return(StartCoroutine(GenerateFinalString())); break; case 2: //Trading background colors ModulePairIdDisplay.color = Color.blue; ColorblindTexts[1].text = "B"; Debug.LogFormat("[The Twin #{0}] The ID display is blue. Trading the background colors after stage 0.", _moduleId); yield return(StartCoroutine(GenerateFinalString())); var colorList = _modulePair._stageColor; _finishedTrading = true; while (!_modulePair._finishedTrading) { yield return(new WaitForSeconds(.1f)); } _stageColor = new List <int>(colorList); Debug.LogFormat("[The Twin #{0}] The list of background colors in the sequence phase is now [{1}]", _moduleId, string.Join(", ", _stageColor.Select(color => _colorNames[color - 1]).ToArray())); break; case 3: //Trading the remove set ModulePairIdDisplay.color = Color.yellow; ColorblindTexts[1].text = "Y"; Debug.LogFormat("[The Twin #{0}] The ID display is yellow. Trading the remove sets.", _moduleId); var removeList = _modulePair._removeSetList; var changeRemoveSet = _modulePair._changeRemoveSet; _finishedTrading = true; while (!_modulePair._finishedTrading) { yield return(new WaitForSeconds(.1f)); } _removeSetList = new List <string>(removeList); _changeRemoveSet = new List <bool>(changeRemoveSet); _removeSet = _removeSetList[0]; Debug.LogFormat("[The Twin #{0}] The new initial remove set is {1}.", _moduleId, _removeSet); yield return(StartCoroutine(GenerateFinalString())); break; } }