CEGUI In Practice / CEGUI на практике: 6. A Game Console
| Английский оригинал | Перевод на русский | |
|---|---|---|
Сожалеем, но текст оригинала доступен только зарегистрированным пользователям. |
Добро пожаловать! proVIDec 06.06.12 в 10:21 |
|
|
В этом туториале мы соединим вместе знания, полученные в предыдущих главах, и создадим функциональную консоль. proVIDec 06.06.12 в 11:15 |
||
|
Предыдущие туториалы давали нам лишь некоторые основы. proVIDec 06.06.12 в 11:15 |
||
|
Пришло время объединить все полученные знания для создания чего-то, что действительно может понадобится в наших играх. proVIDec 06.06.12 в 11:16 |
||
|
План proVIDec 06.06.12 в 11:54 |
||
|
Отлично, теперь давайте взглянем на то, что мы собираемся делать. proVIDec 06.06.12 в 11:16 |
||
|
Мы хотим вводить команды, нажимать кнопку отправки и видеть вывод консоли на экране. proVIDec 06.06.12 в 11:17 |
||
|
Нам также нужно будет знать, когда нажат Enter, так как это распространенный вариант отправки сообщения. proVIDec 06.06.12 в 11:28 |
||
|
Раньше мы обсуждали как перенаправлять ввод в CEGUI (CEGUI на практике - Управление вводом), так что будем считать, что вы знаете эту тему (и можете собрать приложение). proVIDec 06.06.12 в 11:32 |
||
|
Также будем думать, что вы знаете как использовать .layout файл и именовать окна (CEGUI на практике - Применение .layout файлов). proVIDec 06.06.12 в 11:33 |
||
|
В связи с тем, что здесь мы углубляемся в CEGUI немного больше, чем раньше, и потому что мы хотим, чтобы консоль делала много полезных вещей (таких как парсинг строк для команды /say), для реализации консоли я собираюсь создать класс. proVIDec 06.06.12 в 11:38 |
||
|
// Конструктор proVIDec 06.06.12 в 10:32 |
||
|
// Спрятать или отобразить консоль proVIDec 06.06.12 в 10:33 |
||
|
// Возвращает true, если консоль видна и false, если спрятана proVIDec 06.06.12 в 10:33 |
||
|
// Функция, которая будет загружать CEGUI окно и регистрировать обработчики событий proVIDec 06.06.12 в 11:43 |
||
|
// Функция для регистрации наших обработчиков proVIDec 06.06.12 в 11:43 |
||
|
// Обработка нажатия Enter proVIDec 06.06.12 в 11:45 |
||
|
// Обработка нажатия кнопки отправки proVIDec 06.06.12 в 11:46 |
||
|
// Вывод сообщения в поле истории чата proVIDec 06.06.12 в 11:47 |
||
|
// с белым цветом по умолчанию proVIDec 06.06.12 в 11:47 |
||
|
// Это будет указатель на корневое окно консоли proVIDec 06.06.12 в 11:48 |
||
|
// Это будет префикс, который мы дадим разметке proVIDec 06.06.12 в 11:48 |
||
|
// Это будет вспомогательное число для этого класса. proVIDec 06.06.12 в 12:41 |
||
|
Так выглядит наш класс. proVIDec 06.06.12 в 11:34 |
||
|
Может выглядеть страшно, но не волнуйтесь, к концу урока все прояснится. proVIDec 06.06.12 в 11:54 |
||
|
Конструктор proVIDec 06.06.12 в 11:34 |
||
|
Я собираюсь использовать конструктор для автоматизации процесса. proVIDec 06.06.12 в 11:55 |
||
|
Я считаю, что на практике плохо вызывать функции, которые могут выдать ошибку, в конструкторе, однако для простоты понимания я пренебрегу этим. proVIDec 06.06.12 в 11:52 |
||
|
В конструкторе мы инициализируем парочку переменных и вызовем функцию CreateCEGUIWindow. proVIDec 06.06.12 в 11:53 |
||
|
// Не забудьте это объявление proVIDec 06.06.12 в 11:53 |
||
|
// Всегда полезно инициализировать указатель нулевым значением, помогает при переключении на Release сборку proVIDec 06.06.12 в 11:58 |
||
|
Настройка окна proVIDec 06.06.12 в 11:57 |
||
|
Теперь нам нужно настроить окно. proVIDec 06.06.12 в 11:58 |
||
|
Мы делали это раньше в туториале про разметку, сделаем это еще раз здесь. proVIDec 06.06.12 в 12:30 |
||
|
Мы уже говорили о том, что нужно использовать префикс, когда загружаешь .layout, чтобы избежать повторения имен, во время неоднократной загрузки одной и той же разметки. proVIDec 06.06.12 в 12:33 |
||
|
Нам нужно разобраться с этим. proVIDec 06.06.12 в 12:33 |
||
|
Нам нужна будет не одна консоль? proVIDec 06.06.12 в 12:34 |
||
|
Давайте напишем функцию CreateCEGUIWindow: proVIDec 06.06.12 в 12:35 |
||
|
// Устанавливаем локальный указатель на оконный менеджер CEGUI, просто для удобства и сокращения количества кода proVIDec 06.06.12 в 12:37 |
||
|
// Теперь, перед тем как продолжать, давайте увеличим наше вспомогательное число, чтобы быть уверенными, что конфликтов не будет proVIDec 06.06.12 в 12:41 |
||
|
// увеличить вспомогательное число и, добавив к нему строку "_", поместить их в переменную sNamePrefix. proVIDec 06.06.12 в 12:44 |
||
|
// Теперь когда мы убедились, что с префиксом все в порядке и конфликтов с именами не будет, давайте создадим окно proVIDec 06.06.12 в 12:45 |
||
|
// и привяжем его к указателю класса m_ConsoleWindow proVIDec 06.06.12 в 12:47 |
||
|
// inLayoutName это имя вашего файла разметки (например "console.layout"), не забудьте переименовать inLayoutName proVIDec 06.06.12 в 12:48 |
||
|
// Быть хорошим программистом, значит убедиться в том, что все хорошо. proVIDec 06.06.12 в 12:50 |
||
|
// Давайте добавим наше новое окно к корневому окну GUI proVIDec 06.06.12 в 12:50 |
||
|
// Теперь регистрация обработчиков событий (Щелчки мыши, ввод с клавиатуры и т.д.) proVIDec 06.06.12 в 12:51 |
||
|
// Случилось что-то плохое, и окно создать не получилось. Нужно проинформировать об этом. proVIDec 06.06.12 в 12:51 |
||
|
Отлично, теперь мы создали окно. А после того как окно было создано, мы зарегистрировали его обработчики. proVIDec 06.06.12 в 12:52 |
