PDA

Просмотр полной версии : [Вопрос] Global new in include



punkochel
19.06.2019, 11:28
Этот вопрос снова связан с построением архитектуры мода. Какой вариант объявления переменных в енуменаторе будет более правильным?

Вариант 1: Хранить все переменные в главном файле.

Вариант 2: Использовать static enum в инклудах (допустим если речь идет о переменных, которые хранят в себе ID диалога). Понятное дело что будет более правильным использовать переменные для игрока непосредственно в моде (PlayerInfo, где хранится информация об игроке, VehicleInfo... и т.д.).

Вариант 3: Создавать в каждом файле енум, в котором записывать переменные относящиеся к теме данного файла? Но тут будет проблема в том, если допустим переменная StateJob из енума PlayerInfo хранит ID одной из работ и если создавать каждую работу в отдельном файле то придется в любом случае выносить ее в мод, или же создать файл обьединяющий все работы и подключать его.

Наверное не очень сформулировал, но надеюсь суть вопроса ясна)

DeimoS
19.06.2019, 11:43
Для решения вопроса с диалогами гораздо лучше использовать библиотеки, позволяющие создавать каждый диалог как отдельную функцию. Например: TDW Dialog Library (http://pro-pawn.ru/showthread.php?14633-TDW-Dialog-Library) или же mdialog (http://pro-pawn.ru/showthread.php?14311-mdialog).

Касаемо вопроса в целом - есть смысл разделять системы на заголовочные файлы, в которых будут подключаться все инклуды/макросы и т.п., и файлы с реализацией, в которых уже будет прописываться код функций. Это решит проблему с "видимостью" переменных/макросов для других систем, так как можно будет подключить сначала все заголовочные файлы, а уже потом подключать файлы с реализацией систем.

Ну а если рассматривать ситуацию с диалогами именно так, как её предлагаешь рассмотреть ты, и представить, что вышеперечисленных библиотек не существует, то enum с диалогами стоит просто вынести в отдельный (заголовочный) файл и подключать его в начале мода. И уже там прописывать все ID для диалогов.