Пример #1
0
 /// <summary>
 /// Метод для удаления первой буквы в очереди
 /// (в случае, если нужная клавиша была верно нажата)
 /// </summary>
 public void DropFirstLetter()
 {
     lock (UpdatingStateLock)
     {
         TextToTypeQueue.Dequeue();
     }
 }
Пример #2
0
        /// <summary>
        /// Добавление букв в очередь
        /// </summary>
        /// <param name="characters">Символы добавляемых букв</param>
        public void AddLettersOnControl(char[] characters)
        {
            int curLetterX = Width;

            foreach (var character in characters)
            {
                char   letter    = char.ToUpper(character);
                float  xPos      = curLetterX;
                float  yPos      = this.Height / 2 - 30;
                Color  color     = KeyboardHelper.GetKeyColorForChar(letter);
                Letter newLetter = new Letter(letter, new PointF(xPos, yPos), color);
                TextToTypeQueue.Enqueue(newLetter);
                curLetterX += 30;
            }
        }
Пример #3
0
 /// <summary>
 /// Обновить состояние элемента управления: добавить очередную букву из очереди ожидающих букв,
 /// сдвинуть уже отображаемые буквы влево, отрисовать новое состояние. Подцепляется на исполнение
 /// по таймеру
 /// </summary>
 /// <param name="sender"></param>
 /// <param name="e"></param>
 private void UpdateState(object sender, EventArgs e)
 {
     if (TextToTypeQueue.Count == 0)
     {
         DrawNewState();
         QueueIsEmptyEvent();
         UpdatingStateTimer.Stop();
         UpdatingStateTimer.Dispose();
     }
     else if ((int)(TextToTypeQueue.Peek().position.X + g_fontSize * 4) <= Width / 2)
     {
         UpdatingStateTimer.Stop();
     }
     else
     {
         PushQueueForward();
         DrawNewState();
     }
 }
Пример #4
0
 /// <summary>
 /// Получить символ, который нужно ввести
 /// </summary>
 /// <returns>Первый символ из очереди</returns>
 public char GetLetterInTheMiddleOfControl()
 {
     return(TextToTypeQueue.Peek().letter);
 }