/* ** config.h ** ** This file is part of mkxp. ** ** Copyright (C) 2013 - 2021 Amaryllis Kulla ** ** mkxp 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 2 of the License, or ** (at your option) any later version. ** ** mkxp 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 mkxp. If not, see . */ #ifndef CONFIG_H #define CONFIG_H #include "util/json5pp.hpp" #include #include #include struct Config { // Used for sending the JSON data to Ruby as System::CONFIG json5pp::value raw; int rgssVersion; bool debugMode; bool winConsole; bool preferMetalRenderer; bool displayFPS; bool printFPS; bool winResizable; bool fullscreen; bool fixedAspectRatio; bool smoothScaling; bool lanczos3Scaling; bool enableHires; double textureScalingFactor; double framebufferScalingFactor; double atlasScalingFactor; bool vsync; int defScreenW; int defScreenH; std::string windowTitle; int fixedFramerate; bool frameSkip; bool syncToRefreshrate; std::vector solidFonts; bool subImageFix; bool enableBlitting; int maxTextureSize; struct { bool active; bool lastMileScaling; } integerScaling; std::string gameFolder; bool manualFolderSelect; bool anyAltToggleFS; bool enableReset; bool enableSettings; bool allowSymlinks; bool pathCache; std::string dataPathOrg; std::string dataPathApp; std::string iconPath; std::string execName; std::string titleLanguage; struct { std::string soundFont; bool chorus; bool reverb; } midi; struct { int sourceCount; } SE; struct { int trackCount; } BGM; bool useScriptNames; std::string customScript; std::vector launchArgs; std::vector preloadScripts; std::vector rtps; std::vector fontSubs; std::vector rubyLoadpaths; /* Editor flags */ struct { bool debug; bool battleTest; } editor; /* Game INI contents */ struct { std::string scripts; std::string title; } game; // MJIT Options struct { bool enabled; int verboseLevel; int maxCache; int minCalls; } jit; // YJIT Options struct { bool enabled; } yjit; // Keybinding action name mappings struct { std::string a; std::string b; std::string c; std::string x; std::string y; std::string z; std::string l; std::string r; } kbActionNames; std::string userConfPath; /* Internal */ std::string customDataPath; Config(); bool fontIsSolid(const char *fontName) const; void read(int argc, char *argv[]); void readGameINI(); }; #endif // CONFIG_H