Snusmumriken
Хмм. Сложновато, в плане того что имхо, это эффективнее вынести в компоненты/миксины.
А потом такой:
for i, v in ipairs(obj.mixins) if ... then obj:update() end
И разом обработал сразу всё подряд, и только то что нужно для данного объекта.
*О П Т И М И З А Ц И Я*
Elias
Это корутина, которая описывает процесс того, как происходит атака. Некоторые функции могут занимать несколько кадров, как например playAnimation
Просто здесь прям наглядно то, что сначала есть пред-атака, потом анимация атаки, далее создаётся дамаг и пр.
А так всё по компонентам раскидано, конечно.
Snusmumriken
Норм : )
Пойду дальше стим делать, потому что я конечно сделал все колбеки, но их ещё стоит раскидать по файлам и заняться самими функциями стима.
Колбеки - это хорошо, у меня уже 2к строк колбеков, но остальное тоже нужно.
А потом - луа-оболочка, которая строит вокруг всего этого ООП.
Snusmumriken
А чому бы и нет? )))
B
переход c GitForWindows на GitBash болезненный
Anonymous
Language:
lua
Source:
print'hello world'
Result:
hello world
Snusmumriken
Language:
lua
Source:
print'И тебе привет'
Result:
И тебе привет
Anonymous
Language:
lua
Source:
print('А тебе ' .. ((math.random() > 0) and 'тоже привет') or 'непривет')
Result:
А тебе тоже привет
Snusmumriken
Language:
lua
Source:
s = 'd09dd18320d0b820d0b8d0b4d0b820d0bdd0b0d184d0b8d0b3'
print(s:gsub('..', function(c) return string.char(tonumber(c, 16)) end) )
Result:
Ну и иди нафиг 25
Snusmumriken
Осталось только написать страницу кода, которая хитрыми манипуляциями выдаёт содержимое книги "война и мир"
Anonymous
Anonymous
И ещё
Anonymous
я вдруг вспомнил что тут нет выхода в интернет
Anonymous
Snusmumriken
Snusmumriken
И исчез.
Пока не помнил - интернет работал.
Как вспомнил что его нет - исчез.
Так и живём.
Anonymous
Snusmumriken
Нет, просто нарушения законов вселенной по невнимательности.
Типа знаешь? Мультяшные персонажи которые ходят по воздуху до тех пор, пока не посмотрят вниз, и вселенная не вспомнит что им пора падать.
Snusmumriken
Опять он?
B
как лучше реализовать такую вещь? :
у меня идет выбор в два этапа сначала указываем количество
а потом действие
Snusmumriken
Консольное приложение?
B
да
Snusmumriken
Ну по классике - объявляем пару переменных, потом спрашиваем "Чего изволите?", записываем в них переменные : )
Snusmumriken
Для чего-то сложного - можно мутить систему состояний.
Maxim
Maxim
всех приветствую =) Собственно из-за Defold'а к вам занесло. Профильного чатика не нашел
Maxim
Maxim
Ребята, подскажите, есть чатик по defold? А если нет и нас много, то мб поднимем его
Saphire
Anonymous
кто-нибудь умеет нормально в регекспы?
Anonymous
юниксовые, не lua-шные
Snusmumriken
юниксовые, не lua-шные
Ты имеешь ввиду PCRE?
Дык там же всё то же что и в луашных, но \ вместо %, есть указание количества {a[, b]}, и всякие OR | а так - всё то же самое.
Умеющий в одни регулярки умеет в другие.
Anonymous
мне нужно заменить секцию в INI-файле.
например:
[A]
key=value
[B]
key=value
[C]
key=value
нужно заменить секцию A.
как это грамотнее сделать?
Anonymous
inb4 распарсить ini-файл либой, удалить нужную секцию и перезаписать файл
fgntfg
Найти в файле метку [A]. Начать удалять пока не наткнёшься на следующую метку или EOF
Snusmumriken
Ммм.
Ну, на луях -
input = io.read(filename, 'rb')
text = input:read('*all'); input:close()
-- эта версия не удалит блок если он последний ((
text = text:gsub('(%[SECTIONNAME%].-)%[', '')
output = io.read(filename, 'wb')
output:write(text); output:close()
В юниксах - грепать похожим образом.
Anonymous
ага, а если мы заменяем что-то в секции A — секция B сотрётся к чертям?
Anonymous
потому что матч будет до последней [, а последняя [ у нас в начале [C]
Snusmumriken
М?
До первой попавшейся [
Anonymous
а где это указано в регэкспе?
fgntfg
@Snusmumriken не совсем правильно [ может быть частью строки
Anonymous
fgntfg
может
fgntfg
я спеки читал
Anonymous
если могло бы быть — проще распарсить Ini
Snusmumriken
Там это возможно? Ну тогда \n%[
Ключи не могут быть в этой фигне.
Anonymous
я тебе говорю про свой конфиг
fgntfg
храни конфиг в lua table
Anonymous
мне вообще однострочником на баше это всё желательно сделать )
Anonymous
если уж скриптом - то проще распарсить ini питоном/перлом
Anonymous
да и луя вроде умеет
fgntfg
технически разницы между lua. python и perl нет никакой разницы
Snusmumriken
Ну, просто я люблю тулзы типа парсеров, и решать проблемы скриптами (потому что вендузятник).
На юниксах - греп, конкретно - не скажу, надо сделать инишку и потестить.
Saphire
Anonymous
perl -i -pe "s/\[sectionA\].*\[/\[sectionA\]\nOUR_CUSTOM_DATA\n\[/s" если делать так - он ищет наибольшее совпадение, а не до первой следущей [
Snusmumriken
Мм.
А как сделать чтобы поиск перестал быть жадным, знаешь?
Anonymous
а вот не знаю
Snusmumriken
.- - не жадный поиск в луа, аналог - .*?.
print( ('banana'):match('ba.*na') ) --> 'banana'
print( ('banana'):match('ba.-na') ) --> 'bana'
Anonymous
? вроде бы
Anonymous
но если регэксп взять в скобки и добавтиь после ? — тоже самое
Anonymous
о
Anonymous
вроде ок
Anonymous
?\]
Anonymous
вот так
Snusmumriken
Балуйся с регекспами, они полезные.
fgntfg
мне регепсы както помогли починить наш пром
Anonymous
ненавижу регэкспы =)
fgntfg
но, правда, в Oracle
fgntfg
регэкспы это очень мощная магия.
B
а что значения в таблицах с текстовыми ключами сортируються?
Anonymous
Anonymous
единственная штука, которая меня раздражает в луе
fgntfg
Почему?
fgntfg
просто ассоциативные массивы не имеют порядка
Anonymous
потому что мне нужно, например, сгенерировать конфиг в табличку, а потом представить его в текстовом виде
Anonymous
а тот софт, который будет читать этот конфиг - восприимчив к порядку записей
Anonymous
дратути!
fgntfg
Так можно сортировать же. Емнп есть sort с колбеком. Я же не путаю языки?