-
Global new in include
Этот вопрос снова связан с построением архитектуры мода. Какой вариант объявления переменных в енуменаторе будет более правильным?
Вариант 1: Хранить все переменные в главном файле.
Вариант 2: Использовать static enum в инклудах (допустим если речь идет о переменных, которые хранят в себе ID диалога). Понятное дело что будет более правильным использовать переменные для игрока непосредственно в моде (PlayerInfo, где хранится информация об игроке, VehicleInfo... и т.д.).
Вариант 3: Создавать в каждом файле енум, в котором записывать переменные относящиеся к теме данного файла? Но тут будет проблема в том, если допустим переменная StateJob из енума PlayerInfo хранит ID одной из работ и если создавать каждую работу в отдельном файле то придется в любом случае выносить ее в мод, или же создать файл обьединяющий все работы и подключать его.
Наверное не очень сформулировал, но надеюсь суть вопроса ясна)
-
Для решения вопроса с диалогами гораздо лучше использовать библиотеки, позволяющие создавать каждый диалог как отдельную функцию. Например: TDW Dialog Library или же mdialog.
Касаемо вопроса в целом - есть смысл разделять системы на заголовочные файлы, в которых будут подключаться все инклуды/макросы и т.п., и файлы с реализацией, в которых уже будет прописываться код функций. Это решит проблему с "видимостью" переменных/макросов для других систем, так как можно будет подключить сначала все заголовочные файлы, а уже потом подключать файлы с реализацией систем.
Ну а если рассматривать ситуацию с диалогами именно так, как её предлагаешь рассмотреть ты, и представить, что вышеперечисленных библиотек не существует, то enum с диалогами стоит просто вынести в отдельный (заголовочный) файл и подключать его в начале мода. И уже там прописывать все ID для диалогов.