В играх часто нужно бывает нужно проверять некие глобальные флаги и выводить в зависимости от их значения некий текст. Я написал несколько маленьких функций для собственного использования, хочу поделиться. Итак:
isFlag : function(value) { return (find(global.flags, value) <> nil); } setFlag : function(value) { if (not isFlag(value)) { global.flags += [value]; } } unsetFlag : function(value) { if (isFlag(value)) { global.flags -= [value]; } } ifFlagSay : function (flag, message, ...) { if (isFlag(flag)) { say(message); if ((argcount > 2) and getarg(3)) unsetFlag(flag); if (argcount > 3) incscore(getarg(4)); } } ifNotFlagSay : function (flag, message, ...) { if (not isFlag(flag)) { say(message); if ((argcount > 2) and getarg(3)) setFlag(flag); if (argcount > 3) incscore(getarg(4)); } }
Как этим добром пользоваться. В объекте global
необходимо объявить список flags
:
global: object ... flags = [] ;
Если какие-то флаги должны быть предустановлены, то
global: object ... flags=['someFlag' 'someAnotherFlag'] ;
После этого в коде пишем что-то вроде:
if (isFlag('myFlag')) { ... }
Установить флаг:
setFlag('myFlag')
Сбросить флаг:
unsetFlag('myFlag')
Если надо вывести текст в зависимости от значения флага:
ifFlagSay('myFlag', 'Некий текст')
Если надо вывести текст и сбросить флаг:
ifFlagSay('myFlag', 'Некий текст', true)
Если надо вывести текст, сбросить флаг и выдать очки:
ifFlagSay('myFlag', 'Некий текст', true, 50)
То же самое, но для неустановленных флагов используется функция ifNotFlagSay
.
Enjoy.
Неактивен
Надо постоянно. Буду разбираться. Спасибо!
Неактивен