/// <summary> /// Метод для удаления первой буквы в очереди из неё /// (в случае, если нужная клавиша была верно нажата) /// </summary> public void DropFirstLetterFormStream() { // Блокируем доступ другим потокам - для того, чтобы не было параллельной работы с LettersStream lock (UpdatingStateLock) { LettersStream.Dequeue(); } }
/// <summary> /// Свдинуть отображаемые буквы влево /// </summary> /// <param name="pushValue">Величина сдвига (в пикселях). По умолчанию величина равна двум</param> private void PushQueueForward(int pushValue = 2) { // Если отображаемых букв нет - двигать нечего, выходим if (!LetterStreamIsEmpty) { // Обходим очередь и уменьшаем координату X каждой вершины на величину сдвига foreach (var letter in LettersStream) { letter.position.X -= pushValue; } // Если первая буква ушла за линию - она исчезает if (LettersStream.Peek().position.X <= 0) { LettersStream.Dequeue(); // Оповещаем о том, что одна буква ушла из очереди, т.к. была пропущена LetterMissedEvt?.Invoke(); } } }