Функция установки активных зон отвечает за размещение в интерфейсе игры горячих точек, реагирующих на щелчки кнопок мыши. Помимо этого она применяется для активации ввода текста в экране начала новой игры. Приведенный ниже код покажет вам, как я выполняю эти действия:
// Экран начала новой игры else if(iMenu == 4) { MZones.vFreeZones(); MZones.vInitialize(1); MZones.iAddZone("EXIT_BUTTON", 587, 0, 53, 24, 0); // // Установка поля ввода текста // // Установка позиции курсора g_shTextInputXPos = 200; g_shTextInputYPos = 196; // Очистка текста memset(g_szTextInputBuffer, 0x00, 64); // Установка позиции ввода данных g_shTextInputPosition = 0; // Установка активного поля данных g_iTextInputFieldID = GAMEINPUT_NAME; // Установка флага активности поля ввода g_bTextInputActive = 1; // Установка таймера мерцания курсора g_dwTextInputTimer = 0; // Установка состояния мерцания курсора g_bTextInputCursorFlash = 0; // Установка максимальной длинны текста: 20 символов g_shTextMaxSize = 20; }
Приведенный выше код— всего лишь фрагмент функции vSetupMouseZones(), но он показывает вам как я сообщаю программе о необходимости принять вводимое с клавиатуры имя игрока. Код не только устанавливает активные зоны для экрана начала новой игры, но и присваивает значения нескольким глобальным переменным, которые сообщают программе, как обрабатывать вводимый текст. Эти переменные и их назначение перечислены в таблице 9.2.
| Таблица 9.2. Глобальные переменные, управляющие вводом текста | |
| Переменная | Описание |
| g_shTextInputXPos | Координата X текстового поля ввода. |
| g_shTextInputYPos | Координата Y текстового поля ввода. |
| g_szTextInputBuffer | Хранит содержимое текстового поля. |
| g_shTextInputPosition | Активная позиция в текстовом поле. |
| g_iTextInputFieldID | Следит, какое текстовое поле активно. |
| g_bTextInputActive | Сообщает системе, что текстовый ввод включен. |
| g_dwTextInputTimer | Таймер для анимации курсора в активном текстовом поле. |
| g_bTextInputCursorFlash | Определяет включен курсор или выключен во время мерцания. |
| g_shTextMaxSize | Максимальное количество символов в буфере. |