Skip to content

Amisto/the_ark

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

the_ark

Дорогие разработчики, здесь сводка правил по работе над проектом. Прошу вас дополнить её своими комментариями. Так мы вместе сможем сделать спокойную рабочую обстановку и быстро читать код друг друга

Интерфейс

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 репозитория, чтобы потом не заниматься корректным слиянием

Telegram-бот

Чтобы запустить бота, нужно запустить файл 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

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages