-
Notifications
You must be signed in to change notification settings - Fork 5
Плеер: прокрутка лога игры
Mikhail edited this page Oct 28, 2023
·
7 revisions
Требования сформированы в запросе #88.
Правила прокрутки лога:
- После ввода команды игроком эта команда должна быть первой строкой в логе.
- После вывода текст в логе не по команде игрока (т.е. программно - например, по таймеру) начало выведенного текста должно быть первой строкой в логе.
- Блоки текста, выведенного по пунктам как 1, так и 2, должны отделяться друг от друга пустой строкой.
Вывод в лог осуществляется блоками. Блок может состоять из текста и картинок. Формирование блоков приведено в таблице ниже.
Ситуация | Блок | Прокрутка |
---|---|---|
Игрок ввёл команду | Введённая игроком команда, а также всё, что выводится в ответ игры на команду. | Первая строка лога - введённая игроком команда. |
Сработал таймер | Всё, что выводится по таймеру. | Первая строка - начало блока. |
Вызов стартовой процедуры при [ре]старте игры | Всё, что выводится во время работы стартовой процедуры. | Первая строка - начало блока. |
Движок выводит медиа (текст и картинки) в плеер блоками.
Плеер принимает от движка медиа блоками и выводит их. Прокручивает по правилам, описанным в разделе Требований.
classDiagram
OutputBlock <|-- CommandAnswerOutputBlock
OutputBlock *-- OutputElement : содержит список
class CommandAnswerOutputBlock {
String PlayerCommand
}
<<abstract>> OutputElement
OutputElement <|-- OutputTextElement
OutputElement <|-- OutputImageElement
class OutputTextElement {
String Text
}
class OutputImageElement {
Image Image
}
sequenceDiagram
VirtualMachine-->>+Engine: outText(text, args)
Engine->>Engine: outputPlainText(text)
Engine->>-IOutputPlainTextProvider: outputPlainText(text)
VirtualMachine-->>+Engine: outIcon(filePath, maxHeight, maxWidth)
Engine->>-IOutputIconProvider: outputIcon(icon)