Итак... Я все еще хочу программировать. Начало здесь: Хочу программировать. С чего все началось?
Задача: автоматизировать конвертирование модов из Farming Simulator 19 в Farming Simulator 17. Так как другие языки программирования, кроме JavaScript, я не пробовал, то выбор пал именно на него. Из понимания его работы было лишь то, что он работает в браузере. Так появился прототип веб приложения, которое могло делать одну вещь – частично адаптировать XML файл из одной версии игры для другой
Функционал был очень урезанный. Больше одного файла за один раз обработать не может. Да и все остальное колдунство с модом приходилось делать руками. Это и правка модели, и добавление всех недостающих текстур, шейдеров и прочих файлов. Размещение его на хостинге тоже сомнительная вещь. И доступа к папкам мода на клиентском компе никакого. В общем, приключений много, а выхлопа нет.
Пошел искать информацию о программировании на JS для ПК приложений. И сеть выдала мне, что такое возможно. И самое удобное - это Node.js и Electron. Ну раз сеть говорит, а у меня знаний никаких, то почему бы не поверить?
Несколько вечеров чтения мануалов, проб и ошибок. И О ЧУДО!
Функционала никакого. Зато радости полные штанишки. Дальше следовал этап создания интерфейса программы. А так же обдумывания, что и как она вообще должна делать. В итоге пришел к выводу, что мне нужны несколько вещей.
1. Пути к установленным играм, чтобы программа могла взять из них недостающие файлы и подкинуть их в мод.
2. Собственно, путь к самому моду.
3. И, конечно, кнопка запуска, чтобы все сработало.
Первый вариант интерфейса будущего конвертера
Интерфейс задан HTML разметкой и CSS стилями. Все колдунство с кнопками происходит с помощью JavaScript
При запуске программа нюхает свою папку в поисках файла "settings.json", в котором хранятся пути. Если файл найден, из него читается объект, из которого берутся пути и добавляются в соответствующие поля. Если путей нет, то поля остаются пустыми. Если файла нет, то он создается с пустым содержимым. Также при выборе пути с помощью диалогового окна настройки самостоятельно сохраняются в этот "settings.json"
Код, загружающий и сохраняющий настройки путей программы
Файл "settings.json" с сохраненной информацией
Поначалу все давалось очень сложно. Реализацию чуть ли не каждого действия программы приходилось искать в мануалах. Со временем, конечно, становится проще. Не знаю, насколько правильно все делаю, но точно проще.
На данный момент интерфейс выглядит так
Сейчас программа выглядит немного иначе. За ненадобностью убрал путь к одной из версий игры. И функционал стал шире загрузки-сохранения настроек. Но об этом в следующий раз...