Size: a a a

2020 September 02

RM

Roy Mustang in C++ Together 2.0
пока не придумал как их втыкать будут
источник

RM

Roy Mustang in C++ Together 2.0
Либо через метод Initialize я планировал
источник

🦊

🦊fox.cpp in C++ Together 2.0
Да, тут подумать надо
источник

RM

Roy Mustang in C++ Together 2.0
Идея вообще была такая, удалить все виртуальные методы оставив только Initialize, а уже внутри метода Initialize будут вызываться методы класса ModuleManager (это в прошлом HFApp, я заменил его на ModuleManager), в этом классе менеджера мы добавляем методы AddEvent, который регистрирует события из enum: Config, Execute, Update, FInalize
источник

RM

Roy Mustang in C++ Together 2.0
Хотя вот Finalize можно было кинуть тоже в виртуальный метод
источник

RM

Roy Mustang in C++ Together 2.0
Смотрелось бы лучше, аля Initilize и Finalize - это виртуальные методы, а все остальное регается на усмотрение разработчика
источник

RM

Roy Mustang in C++ Together 2.0
Но тут есть беда, придется платить за std::function, ибо хранить евенты в векторе по другому никак, тем более там методы классов
источник

RM

Roy Mustang in C++ Together 2.0
там std::function + bind, но который в итоге выльется в std::function
источник

RM

Roy Mustang in C++ Together 2.0
И вот теперь думаем, что дороже? Все евенты на std::function которые висят или же методы которые на виртуалках?
источник

🦊

🦊fox.cpp in C++ Together 2.0
Так евентов у тебя в рабочем проекте будет несколько десятков.
источник

🦊

🦊fox.cpp in C++ Together 2.0
Причём их определяют модули.
источник

🦊

🦊fox.cpp in C++ Together 2.0
Что ты будешь делать то
источник

RM

Roy Mustang in C++ Together 2.0
Либо есть еще идея, в AddPlugin методе добавить аргумент, который спрашивает, needUpdate, если разработчик передает true, то цикл втыкается для этого класса
источник

RM

Roy Mustang in C++ Together 2.0
внутри цикла это будет аля if(bNeedUpdate) { // update }
источник

RM

Roy Mustang in C++ Together 2.0
То есть, это лучше чем std:function для каждого евента
источник

🦊

🦊fox.cpp in C++ Together 2.0
https://skmedix.github.io/ForgeJavaDocs/javadoc/forge/1.11.2-13.20.0.2228/

Вон, пересчитай классы евентов в майнкрафтах.
источник

RM

Roy Mustang in C++ Together 2.0
Другие методы не так важны даже если они виртуальными будут, потому что они вызываются редко, а вот метод Update каждый тик вызывается
источник

🦊

🦊fox.cpp in C++ Together 2.0
🦊fox.cpp
https://skmedix.github.io/ForgeJavaDocs/javadoc/forge/1.11.2-13.20.0.2228/

Вон, пересчитай классы евентов в майнкрафтах.
Точнее, тут евенты Forge, которые выполняют функцию хук-поинтов для кода оригинальной игры, но не суть дела.
источник

RM

Roy Mustang in C++ Together 2.0
Это же джава
источник

RM

Roy Mustang in C++ Together 2.0
бля, какой в жопу майнкрафт
источник