/* * Copyright (C) 2017 Fábio Bento (random-guy) This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . * */ #ifndef PROJECTFILEVAGO_H #define PROJECTFILEVAGO_H #include "utilvago.h" #include class ProjectFileVago { public: struct ProjectTableRow{ QString fileFolder; QString fromTo; QString command; bool isDisabled = false; }; struct ProjectTable{ QVector rows; QString from; QString to; }; struct ProjectXMLTable : public ProjectTable{}; struct ProjectTexturesTable: public ProjectTable{ QString rbTexturesType; bool cbGenMipMaps = false; bool cbNoUwrap = false; bool cbNoVwrap = false; bool cbLarge = false; bool cbEnvMap = false; QString leEnvMapTexture; }; struct ProjectCharactersTable : public ProjectTable{ bool cbCellShading = false; bool cbNormals = false; bool cbStandingPose = false; bool cbWithTRBS_ONCC = false; QString leTRBS_ONCC; }; struct ProjectObjectsTable : public ProjectTable{ bool cbTexture = false; QString leTextureName; bool cbWithAnimation = false; QString leAnimationName; }; struct ProjectLevelsTable : public ProjectTable{ bool cbSpecificFilesLevels = false; QString leSpecificFilesLevels; bool cbDatLevels = false; QString leTargetDatLevels; bool cbBnvLevels = false; QString leBnvLevels; bool cbGridsLevels = false; bool cbAdditionalSourcesLevels = false; QString leAdditSourcesLevels; }; struct ProjectMiscTable : public ProjectTable{}; struct ProjectData{ ProjectXMLTable xmlTable; ProjectTexturesTable texturesTable; ProjectCharactersTable charactersTable; ProjectObjectsTable objectsTable; ProjectLevelsTable levelsTable; ProjectMiscTable miscTable; }; public: ProjectFileVago() = delete; static ProjectFileVago::ProjectData readProjectDataFromFile(const QString &fileFullPath); static void saveProjectDataToFile(const QString &fileFullPath, const ProjectData &newProjectData); private: static void upgradeProjectFileIfNecessary(const QString &filePath); private: static const QString XMLTableName; static const QString TexturesTableName; static const QString CharactersTableName; static const QString ObjectsTableName; static const QString LevelsTableName; static const QString MiscTableName; }; #endif // PROJECTFILEVAGO_H