CEGUI In Practice / CEGUI на практике: 6. A Game Console

← →
Английский оригинал Перевод на русский

Сожалеем, но текст оригинала доступен только зарегистрированным пользователям.

Добро пожаловать!

proVIDec 06.06.12 в 10:21

0

В этом туториале мы соединим вместе знания, полученные в предыдущих главах, и создадим функциональную консоль.

proVIDec 06.06.12 в 11:15

0

Предыдущие туториалы давали нам лишь некоторые основы.

proVIDec 06.06.12 в 11:15

0

Пришло время объединить все полученные знания для создания чего-то, что действительно может понадобится в наших играх.

proVIDec 06.06.12 в 11:16

0

План

proVIDec 06.06.12 в 11:54

0

Отлично, теперь давайте взглянем на то, что мы собираемся делать.

proVIDec 06.06.12 в 11:16

0

Мы хотим вводить команды, нажимать кнопку отправки и видеть вывод консоли на экране.

proVIDec 06.06.12 в 11:17

0

Нам также нужно будет знать, когда нажат Enter, так как это распространенный вариант отправки сообщения.

proVIDec 06.06.12 в 11:28

0

Раньше мы обсуждали как перенаправлять ввод в CEGUI (CEGUI на практике - Управление вводом), так что будем считать, что вы знаете эту тему (и можете собрать приложение).

proVIDec 06.06.12 в 11:32

0

Также будем думать, что вы знаете как использовать .layout файл и именовать окна (CEGUI на практике - Применение .layout файлов).

proVIDec 06.06.12 в 11:33

0

В связи с тем, что здесь мы углубляемся в CEGUI немного больше, чем раньше, и потому что мы хотим, чтобы консоль делала много полезных вещей (таких как парсинг строк для команды /say), для реализации консоли я собираюсь создать класс.

proVIDec 06.06.12 в 11:38

0

// Конструктор

proVIDec 06.06.12 в 10:32

0

// Спрятать или отобразить консоль

proVIDec 06.06.12 в 10:33

0

// Возвращает true, если консоль видна и false, если спрятана

proVIDec 06.06.12 в 10:33

0

// Функция, которая будет загружать CEGUI окно и регистрировать обработчики событий

proVIDec 06.06.12 в 11:43

0

// Функция для регистрации наших обработчиков

proVIDec 06.06.12 в 11:43

0

// Обработка нажатия Enter

proVIDec 06.06.12 в 11:45

0

// Обработка нажатия кнопки отправки

// Парсинг текста, которого отправил пользователь

proVIDec 06.06.12 в 11:46

0

// Вывод сообщения в поле истории чата

proVIDec 06.06.12 в 11:47

0

// с белым цветом по умолчанию

proVIDec 06.06.12 в 11:47

0

// Это будет указатель на корневое окно консоли

proVIDec 06.06.12 в 11:48

0

// Это будет префикс, который мы дадим разметке

proVIDec 06.06.12 в 11:48

0

// Это будет вспомогательное число для этого класса.

proVIDec 06.06.12 в 12:41

0

Так выглядит наш класс.

proVIDec 06.06.12 в 11:34

0

Может выглядеть страшно, но не волнуйтесь, к концу урока все прояснится.

proVIDec 06.06.12 в 11:54

0

Конструктор

proVIDec 06.06.12 в 11:34

0

Я собираюсь использовать конструктор для автоматизации процесса.

proVIDec 06.06.12 в 11:55

0

Я считаю, что на практике плохо вызывать функции, которые могут выдать ошибку, в конструкторе, однако для простоты понимания я пренебрегу этим.

proVIDec 06.06.12 в 11:52

0

В конструкторе мы инициализируем парочку переменных и вызовем функцию CreateCEGUIWindow.

proVIDec 06.06.12 в 11:53

0

// Не забудьте это объявление

proVIDec 06.06.12 в 11:53

0

// Всегда полезно инициализировать указатель нулевым значением, помогает при переключении на Release сборку

proVIDec 06.06.12 в 11:58

0

Настройка окна

proVIDec 06.06.12 в 11:57

0

Теперь нам нужно настроить окно.

proVIDec 06.06.12 в 11:58

0

Мы делали это раньше в туториале про разметку, сделаем это еще раз здесь.

proVIDec 06.06.12 в 12:30

0

Мы уже говорили о том, что нужно использовать префикс, когда загружаешь .layout, чтобы избежать повторения имен, во время неоднократной загрузки одной и той же разметки.

proVIDec 06.06.12 в 12:33

0

Нам нужно разобраться с этим.

proVIDec 06.06.12 в 12:33

0

Нам нужна будет не одна консоль?

proVIDec 06.06.12 в 12:34

0

Давайте напишем функцию CreateCEGUIWindow:

proVIDec 06.06.12 в 12:35

0

// Устанавливаем локальный указатель на оконный менеджер CEGUI, просто для удобства и сокращения количества кода

proVIDec 06.06.12 в 12:37

0

// Теперь, перед тем как продолжать, давайте увеличим наше вспомогательное число, чтобы быть уверенными, что конфликтов не будет

// Мне нравится формат #_ConsoleRoot, такой я префикс и сделаю. Надо просто

proVIDec 06.06.12 в 12:41

0

// увеличить вспомогательное число и, добавив к нему строку "_", поместить их в переменную sNamePrefix.

proVIDec 06.06.12 в 12:44

0

// Теперь когда мы убедились, что с префиксом все в порядке и конфликтов с именами не будет, давайте создадим окно

proVIDec 06.06.12 в 12:45

0

// и привяжем его к указателю класса m_ConsoleWindow

proVIDec 06.06.12 в 12:47

0

// inLayoutName это имя вашего файла разметки (например "console.layout"), не забудьте переименовать inLayoutName

proVIDec 06.06.12 в 12:48

0

// Быть хорошим программистом, значит убедиться в том, что все хорошо.

proVIDec 06.06.12 в 12:50

0

// Давайте добавим наше новое окно к корневому окну GUI

proVIDec 06.06.12 в 12:50

0

// Теперь регистрация обработчиков событий (Щелчки мыши, ввод с клавиатуры и т.д.)

proVIDec 06.06.12 в 12:51

0

// Случилось что-то плохое, и окно создать не получилось. Нужно проинформировать об этом.

proVIDec 06.06.12 в 12:51

0

Отлично, теперь мы создали окно. А после того как окно было создано, мы зарегистрировали его обработчики.

proVIDec 06.06.12 в 12:52

0
Минутку...

Следующая страница →