Skip to content

Модуль theme

Модуль theme позволяет изменять параметры темы на лету.

Имейте в виду, что изменение параметров темы на лету для игр, которые не содержат собственную тему -- источник потенциальных проблем! Дело в том, что ваша игра в таком случае должна быть готова работать с любыми разрешениями и параметрами тем, что крайне сложно добиться. Поэтому, если вы собираетесь менять параметры темы из кода -- создайте свою тему и включите её в игру!

При этом, сохранение изменений темы в файле сохранения не поддерживается. Автор игры должен сам восстановить параметры темы в функции start(), как это делается при работе с модулем спрайтов.

Для изменения параметров действующей темы, используются следующие функции:

lua
-- настройка окна вывода
theme.win.geom(x, y, w, h)
theme.win.color(fg, link, alink)
theme.win.font(name, size, height)
theme.win.gfx.up(pic, x, y)
theme.win.gfx.down(pic, x, y)

-- настройка инвентаря
theme.inv.geom(x, y, w, h)
theme.inv.color(fg, link, alink)
theme.inv.font(name, size, height)
theme.inv.gfx.up(pic, x, y)
theme.inv.gfx.down(pic, x, y)
theme.inv.mode(mode)

-- настройка меню
theme.menu.bw(w)
theme.menu.color(fg, link, alink)
theme.menu.font(name, size, height)
theme.menu.gfx.button(pic, x, y)

-- настройка графики
theme.gfx.cursor(norm, use, x, y)
theme.gfx.mode(mode)
theme.gfx.pad(pad)
theme.gfx.bg(bg)

-- настройка звука
theme.snd.click(name);

Существует возможность чтения текущих параметров тем:

theme.get 'имя переменной темы';

Возвращаемое значение всегда в текстовой форме.

theme.set ('имя переменной темы', значение);

Вы можете сбросить значение параметра темы на то, которое было установлено во встроенной теме игры:

lua
theme.reset 'имя переменной';
theme.win.reset();

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

lua
theme.name()

Функция возвращает строку -- имя каталога темы. Если игра использует собственный файл 'theme.ini', функция вернёт точку. Это удобно, для определения того, включён ли механизм собственных тем игр:

lua
if theme.name() ~= '.' then
	error "Please, enable own theme mode in menu!"
end

Если в игре используется механизм множественных тем, то имя темы начинается с точки, например:

lua
if theme.name() == '.default' then
    -- наша встроенная тема default
elseif theme.name() == 'default' then
    -- стандартная тема default в INSTEAD
end

Пример использования:

lua
theme.gfx.bg "dramatic_bg.png";
theme.win.geom (0,0, theme.get 'scr.w', theme.get 'scr.h');
theme.inv.mode 'disabled'

Получить размеры текущей темы:

lua
theme.scr.w() -- ширина
theme.scr.w() -- высота