示例#1
0
 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();
 }
示例#2
0
    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));
        }
    }
示例#3
0
 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());
     }
 }
示例#4
0
    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;
        }
    }