Модуль theme
Модуль theme позволяет изменять параметры темы на лету.
Имейте в виду, что изменение параметров темы на лету для игр, которые не содержат собственную тему -- источник потенциальных проблем! Дело в том, что ваша игра в таком случае должна быть готова работать с любыми разрешениями и параметрами тем, что крайне сложно добиться. Поэтому, если вы собираетесь менять параметры темы из кода -- создайте свою тему и включите её в игру!
При этом, сохранение изменений темы в файле сохранения не поддерживается. Автор игры должен сам восстановить параметры темы в функции start(), как это делается при работе с модулем спрайтов.
Для изменения параметров действующей темы, используются следующие функции:
-- настройка окна вывода
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 ('имя переменной темы', значение);
Вы можете сбросить значение параметра темы на то, которое было установлено во встроенной теме игры:
theme.reset 'имя переменной';
theme.win.reset();Существует функция для того, чтобы узнать текущую выбранную тему.
theme.name()Функция возвращает строку -- имя каталога темы. Если игра использует собственный файл 'theme.ini', функция вернёт точку. Это удобно, для определения того, включён ли механизм собственных тем игр:
if theme.name() ~= '.' then
error "Please, enable own theme mode in menu!"
endЕсли в игре используется механизм множественных тем, то имя темы начинается с точки, например:
if theme.name() == '.default' then
-- наша встроенная тема default
elseif theme.name() == 'default' then
-- стандартная тема default в INSTEAD
endПример использования:
theme.gfx.bg "dramatic_bg.png";
theme.win.geom (0,0, theme.get 'scr.w', theme.get 'scr.h');
theme.inv.mode 'disabled'Получить размеры текущей темы:
theme.scr.w() -- ширина
theme.scr.w() -- высота