Доброго воскресного вечера.Уже не первый день ломаю голову при попытках разбить мод на файлы (инклуды)
На данный момент есть мод (name.pwn) с десятью тысячами строк кода.
Допустим в нем уже реализованы следующие системы: система домов, система бизнесов, администратирования, регистрации а также авторизации
Нужно этот мод разбить на файлы, так, чтобы у нас получилось примерно так:
Отсюда вырисовывается содержание файла name.pwn следующим:
И вроде бы все идет хорошо.Но, вся проблема в том, что почти в каждом из этих инклудов нам придется использовать одни и те же колбэки.
Поясню на примере OnGameModeInit:
global/house.inc - это может быть отправка запроса на подгрузку домов, или же создание иконок на мини-карте
global/business.inc - та же самая картина: банальная загрузка или же какая-то дополнительная сортировка домов по их нумерации
player/register.inc - подгрузка объектов из которых составлена сцена выбора внешности персонажа
Эту цепь можно продолжать бесконечно; вариантов целая куча.Но что делать?Мы же не можем в каждом инклуде объявлять этот колбэк.Компилятор нам этого не позволит, указав в окошке, что этот колбэк уже используется и второй раз его нельзя загрузить
Была еще идея: в самом моде (name.pwn) создать колбэк OnGameMode и в нем уже указать на функции, которые мы будем использовать в инклудах (файлах) (наверняка я тут не правильно выразился, поэтому на всякий случай прикреплю скриншот)
Вроде бы не плохо придуманно, но все равно это доставляет дискомфорт; происходит путаница
Пробовал самостоятельно перехватывать для каждого инклуда нужный колбэк, но заметил такую вещь, что при двух и более перехватах одной и той же функции, компилятор начинает себя вести не совсем адекватно, указывая на то, что в каких - то определенных местах паблика нужно возвращать при перехвате значение.К тому же каждый перехват стремится выполнить функцию первым, из-за этого получается, что подключаемые файлы читаются сверху вниз.
Пробовал даже пользоваться сторонними скриптами (y_hooks) и даже плагинами (название точное не помню), но в этом случае, если к примеру нужно будет перехватить колбек OnPlayerPickUpDynamicPickup компилятор выведет ошибку, точно не помню, но знаю точно, что в ней указывается про обрезания названия колбека до 31 символа
Других вариантов я нашел.
Как быть, как создать идеальную "архитектуру" проекта и быть уверенным в том, что это все не посыпется при онлайне?