Beispiel #1
0
        void UpdateMorseCode()
        {
            if (morseCodeState == MorseCodeState.Done)
            {
                return;
            }

            if (Time.time > nextStateTime)
            {
                switch (morseCodeState)
                {
                case MorseCodeState.PlayingPulse:
                    audioSource.Stop();
                    telegraph.sprite = openTelegraph;
                    if (++pulseIndex >= MorseCode.Pulses(sentence[charIndex]))
                    {
                        pulseIndex = 0;
                        if (++charIndex >= sentence.Length)
                        {
                            morseCodeState = MorseCodeState.Done;
                        }
                        else
                        {
                            if (sentence[charIndex] == ' ')
                            {
                                morseCodeState = MorseCodeState.LongPause;
                                nextStateTime += pauseBetweenWords;
                            }
                            else
                            {
                                morseCodeState = MorseCodeState.ShortPause;
                                nextStateTime += pauseBetweenLetters;
                            }
                        }
                    }
                    else
                    {
                        morseCodeState = MorseCodeState.ShortPause;
                        nextStateTime += pauseBetweenPulses;
                    }
                    break;

                case MorseCodeState.LongPause:
                    ++charIndex;
                    goto case MorseCodeState.ShortPause;

                case MorseCodeState.ShortPause:
                    morseCodeState   = MorseCodeState.PlayingPulse;
                    nextStateTime   += MorseCode.IsDash(sentence[charIndex], pulseIndex) ? dashLength : dotLength;
                    audioSource.time = 0;
                    audioSource.Play();
                    telegraph.sprite = closedTelegraph;
                    break;
                }
            }
        }
Beispiel #2
0
 void Start()
 {
     Item.IgnoreCollisions(gameObject, spawnedBy);
     electricity         = gameObject.transform.Find("Electricity").GetComponent <SpriteRenderer>();
     electricitySwapTime = Time.time + frameTime;
     audioSource         = GetComponent <AudioSource>();
     telegraph           = GetComponent <SpriteRenderer>();
     charIndex           = 0;
     pulseIndex          = 0;
     morseCodeState      = MorseCodeState.ShortPause;
     nextStateTime       = Time.time;
     UpdateMorseCode();
 }