Дорогие разработчики, здесь сводка правил по работе над проектом. Прошу вас дополнить её своими комментариями. Так мы вместе сможем сделать спокойную рабочую обстановку и быстро читать код друг друга
TheArk предполагается использовать как один из модулей большой программы, с остальными модулями (фронтенд на JavaScript/Python у клиентов/игроков, сервер) общение происходит через файлы.
Название входного файла - это единственный ввод TheArk, считывается с экрана, название вводить без расширения .cfg. Потом, скорее всего, перекинем в аргументы командной строки.
На вход - конфиг-файл .cfg. В нем есть блоки General (общая информация о полете) и Services (разбитая на подблоки по службам). В каждый блок можно дописывать любое количество полей (пара строка-число/строка), оно автоматически считается в соответствующий map<string, string>. Из любого места кода входные данные можно вызвать, например, вот так: TheArk::get_instance()->getInterface()->getServices()[Services::Social_Service]["State"]); Пока что оно будет висеть в течение всего полета. Возможно, надо его удалять сразу после инициализации. С точки зрения интерфейса, порядок важен для: - General - Services - Technical...Social (все службы, порядок как в Enum.cpp) Остальное может быть в любом порядке.
На выход - таблица .csv. На данный момент там столбцы прибиты гвоздями, пищите issues, если что-то надо добавить.
Обратите внимание:
- После изменения конфиг-файла проект можно не перекомпилировать.
- Имя выходного файла задается в конфиг-файле, не забудьте его поменять.
Если вы хотите добавить параметры в службу: - Допишите параметр в конфиг-файл (как Random_parameter в test_001.cfg). - В любой момент забирайте так: TheArk::get_instance()->getInterface()->getServices()[Services::Social_Service]["Random_parameter"]); Параметр будет как string, если хотите кастануть в int - намажьте сверху std::stoi (стандартный перевод из строки в число). - В конце расчета обновите в интерфейсе значение этого параметра, чтобы оно было записано в конечный конфиг. Остальное сработает автоматически (должно, по крайней мере).
Если вы хотите добавить параметры в Population/Resources, пишите issue, добавим.
Как вызвать случайное число в своём коде:
- Если нужно случайное целое: TheArk::get_instance()->getRandomGenerator()->getRandomInt(int min, int max)
- Если нужен случайный float: TheArk::get_instance()->getRandomGenerator()->getRandomFloat(float min, float max)
- Если нужен случайный double: TheArk::get_instance()->getRandomGenerator()->getRandomDouble(double min, double max)
- Между знаками сложения, умножения, деления и т.д. ставим пробелы (2 + 2 = 4; a = d * c и так далее).
- Переменные назваем максимально полно, чтобы после прочнения назания можно было понять, зачем она или/и хотя бы что означает (speed_of_the_ark <- скорость коробля).
- Переменные, которые не предполагают изменения давайте писать КАПСОМ (SPEED_OF_LIGHT).
- Минимум непонятных значений. Числа, особенно если они неочевидные, выносить в const/enum. Например, "CELL_WIDTH = 12" вместо просто "12" в куче мест.
- По максимуму const, override, final и всего остального, что помогает нам в прочтении кода.
- Небольшие комментарии в нужных по вашему мнению местах
- Комментарии на английском (!) - ради спокойной переносимости между разными машинами и ОС
-
Писать коммиты сделующим образом:
Название
Что произошло (логические изменения в работе того или иного объекта)
-
Не пушить папки по типу .idea, clion-debug... и тому подобное.
-
Коммиты на английском (!)
-
Перед началом работы делать pull репозитория, чтобы потом не заниматься корректным слиянием
Чтобы запустить бота, нужно запустить файл TheArk.py в папке the_ark_bot
Требования для корретного запуска и работы:
- Установлена библиотека telebot на python (pip install pytelegrambotapi)
- Должен существовать исполняемый файл ../the_ark/build/the_ark (для его запуска из программы)
- При исполнении файла the_ark он не должен запрашивать никакого ввода (название config файла уже захардкожено в Interface.cpp, присутствует только запрос y/n в NavigationService.cpp)
- Скорее всего, бот будет корректно запускать другие программы только на Linux (но это неточно)
- Для запуска под Windows: 1) Заменить 8 строку на file = open('../the_ark_bot/media/texts.txt', encoding="utf-8") (опционально) 2) Заменить 73 строку на os.system('..\cmake-build-debug\the_ark.exe') (или другое расположение файла в таком формате)
Функционал бота на данный момент:
- Изменение параметров test_000.cfg
- Запуск проекта
- Автоматическая отправка графиков после запуска
Т.е. тестировать проект можно не выходя из чата. Не забывайте компилировать измененные файлы the_ark перед запуском бота.
Сообщения, тексты, картинки можно добавлять/изменять в папке media