GUI — graphical user interface, что переводится, как «графический интерфейс пользователя». Для чего он нужен в игре?
Для взаимодействия игрока с игрой и ее отдельными элементами. Графические интерфейсы бывают простыми (например меню редактирования триггера), сложными (например инвентарь или виртуальный арсенал) и даже трехмерными (когда используется 3d модель, как в компасе и часах).
Для чего нужны GUI именно Вам?
Для кастомизации своих миссий, модов, проектов.
К примеру, Вы хотите сделать миссию, где нужно взломать ноутбук. Вот тут и придется написать интерфейс для ноутбука, в котором и будет происходить процесс взлома.
Теперь перейдем к составляющим графического интерфейса.
Обычно я делю GUI на три составляющих:
— файл с описанием классов элементов интерфейса;
— файлы, которые рисуют интерфейс;
— скрипты, в которых обрабатываются данные, которые пользователь передал с помощью интерфейса, и совершаются определенные действия.
Начнем по порядку.
1. define.hpp
Это файл, в котором описываются классы эллементов интерфейса, такие как: текст, кнопки, список, картинки и т.п.
В этом файле определяется какого цвета будет элемент, размер и цвет шрифта, фона, рамки… Ну я думаю с этим понятно.
Пример:
class RscButton
{
access = 0;
type = CT_BUTTON;
style = ST_LEFT;
x = 0; y = 0; w = 0.3; h = 0.1;
text = "";
font = "TahomaB";
sizeEx = 0.04;
colorText[] = {0,0,0,1};
colorDisabled[] = {0.3,0.3,0.3,1};
colorBackground[] = {0.6,0.6,0.6,1};
colorBackgroundDisabled[] = {0.6,0.6,0.6,1};
colorBackgroundActive[] = {1,0.5,0,1};
offsetX = 0.004;
offsetY = 0.004;
offsetPressedX = 0.002;
offsetPressedY = 0.002;
colorFocused[] = {0,0,0,1};
colorShadow[] = {0,0,0,1};
shadow = 0;
colorBorder[] = {0,0,0,1};
borderSize = 0.008;
soundEnter[] = {"",0.1,1};
soundPush[] = {"",0.1,1};
soundClick[] = {"",0.1,1};
soundEscape[] = {"",0.1,1};
};
2. dialog.hpp
В этом файле описывается сам интерфейс.
Его размеры, расположение отдельных элементов (кнопки, картинки, текст), их содержимое, а так же действия, которые будут происходить от взаимодействия с ними (например нажатие кнопки).
Пример:
class dialog
{
idd = 5000;
class controls
{
class BUTTON:rscButton
{
idc = 1;
x = 0.5;
y = 0.5;
w = 0.1;
h = 0.05;
action = "execVM 'script.sqf'";
};
};
};
3. Script.sqf
В скрипте мы будем производить необходимые нам действия.
Например, при нажатии на кнопку интерфейса, запускается скрипт, который меняет вооружение игрока. Кроме этого, в скрипте мы можем «на лету» изменять сам интерфейс. Изменить цвет текста, расположение кнопки и т.п.
Читать продолжение: GUI. Часть 2. Пишем простой интерфейс.
Что-то не поняли? Заходите в наш Discord, там вам всегда помогут.