Меню
Стандартное поведение предмета инвентаря состоит в том, что игрок должен сделать два щелчка мышью. Это необходимо потому, что каждый предмет инвентаря может быть использован на другой предмет сцены или инвентаря. После второго щелчка происходит игровой такт игры. Иногда такое поведение может быть нежелательным. Возможно, вы захотите сделать игру, в которой игровая механика отличается от классических INSTEAD игр. Тогда вам может понадобится меню.
Меню -- это элемент инвентаря, который срабатывает на первый клик. При этом меню может сообщить движку, что действие не является игровым тактом. Таким образом, используя меню вы можете создать в зоне инвентаря управление игрой любой сложности. Например, существует модуль "proxymenu", который реализует управление игрой в стиле квестов на ZX-"Спектрум". В игре "Особняк" своё управление, которое вводит несколько модификаторов действий, и т.д.
Итак, вы можете делать меню в области инвентаря, определяя объекты с типом 'menu'. При этом, обработчик меню ('act') будет вызван после одного клика мыши. Если обработчик возвращает false, то состояние игры не изменяется. Например, реализация кармана:
menu {
state = false;
nam = 'карман';
disp = function(s)
if s.state then
return fmt.u('карман'); -- подчёркиваем активный карман
end
return 'карман';
end;
gen = function(s)
if s.state then
s:open(); -- показать все предметы в кармане
else
s:close(); -- спрятать все предметы в кармане
end
return s
end;
act = function(s)
s.state = not s.state -- изменить состояние
s:gen(); -- открыть или закрыть карман
end;
}: with {
obj {
nam = 'нож';
inv = 'Это нож';
};
}
function init()
take 'карман':gen()
end