// This is schema for checking game settings from settings.json // Any new settings should be added in this file for correct serialization and initialization { "type" : "object", "$schema" : "http://json-schema.org/draft-04/schema", "required" : [ "general", "video", "adventure", "battle", "input", "server", "logging", "launcher", "gameTweaks" ], "definitions" : { "logLevelEnum" : { "type" : "string", "enum" : [ "trace", "debug", "info", "warn", "error" ] } }, "additionalProperties" : false, "properties" : { "general" : { "type" : "object", "default" : {}, "additionalProperties" : false, "required" : [ "playerName", "music", "sound", "saveRandomMaps", "lastMap", "language", "gameDataLanguage", "lastSave", "lastSettingsTab", "lastCampaign", "saveFrequency", "notifications", "extraDump", "userRelativePointer", "relativePointerSpeedMultiplier", "hapticFeedback", "longTouchTimeMilliseconds", "autosaveCountLimit", "useSavePrefix", "savePrefix", "startTurnAutosave" ], "properties" : { "playerName" : { "type" : "string", "default" : "Player" }, "music" : { "type" : "number", "default" : 88 }, "sound" : { "type" : "number", "default" : 88 }, "saveRandomMaps" : { "type" : "boolean", "default" : false }, "lastMap" : { "type" : "string", "default" : "Maps/Arrogance" }, "language" : { "type" : "string", "enum" : [ "english", "czech", "chinese", "finnish", "french", "german", "hungarian", "italian", "korean", "polish", "portuguese", "russian", "spanish", "swedish", "turkish", "ukrainian" ], "default" : "english" }, "gameDataLanguage" : { "type" : "string", "enum" : [ "auto", "english", "czech", "chinese", "finnish", "french", "german", "hungarian", "italian", "korean", "polish", "portuguese", "russian", "spanish", "swedish", "turkish", "ukrainian", "other_cp1250", "other_cp1251", "other_cp1252" ], "default" : "auto" }, "lastSave" : { "type" : "string", "default" : "NEWGAME" }, "lastSettingsTab" : { "type" : "number", "default" : 0 }, "lastCampaign" : { "type" : "string", "default" : "" }, "saveFrequency" : { "type" : "number", "default" : 1 }, "notifications" : { "type" : "boolean", "default" : false }, "extraDump" : { "type" : "boolean", "default" : false }, "userRelativePointer" : { "type" : "boolean", "default" : false }, "relativePointerSpeedMultiplier" : { "type" : "number", "default" : 1 }, "longTouchTimeMilliseconds" : { "type" : "number", "default" : 1000 }, "hapticFeedback" : { "type" : "boolean", "default" : false }, "autosaveCountLimit" : { "type" : "number", "default": 5 }, "useSavePrefix" : { "type": "boolean", "default": false }, "savePrefix" : { "type": "string", "default": "" }, "startTurnAutosave" : { "type": "boolean", "default": false } } }, "video" : { "type" : "object", "additionalProperties" : false, "default" : {}, "required" : [ "resolution", "reservedWidth", "fullscreen", "realFullscreen", "cursor", "showIntro", "spellbookAnimation", "driver", "displayIndex", "showfps", "targetfps" ], "properties" : { "resolution" : { "type" : "object", "additionalProperties" : false, "required" : [ "width", "height", "scaling" ], "properties" : { "width" : { "type" : "number" }, "height" : { "type" : "number" }, "scaling" : { "type" : "number" } }, "defaultIOS" : {"width" : 800, "height" : 600, "scaling" : 200 }, "defaultAndroid" : {"width" : 800, "height" : 600, "scaling" : 200 }, "default" : {"width" : 800, "height" : 600, "scaling" : 100 } }, "reservedWidth" : { "type" : "number", "defaultIOS" : 0.1, // iOS camera cutout / notch is excluded from available area by SDL "default" : 0 }, "fullscreen" : { "type" : "boolean", "default" : false }, "realFullscreen" : { "type" : "boolean", "default" : false }, "cursor" : { "type" : "string", "enum" : [ "hardware", "software" ], "default" : "hardware" }, "showIntro" : { "type" : "boolean", "default" : true }, "spellbookAnimation" : { "type" : "boolean", "default" : true }, "driver" : { "type" : "string", "default" : "opengl", "description" : "preferred graphics backend driver name for SDL2" }, "displayIndex" : { "type" : "number", "default" : 0 }, "showfps" : { "type" : "boolean", "default" : false }, "targetfps" : { "type" : "number", "defaultIOS" : 30, // reduce battery usage "defaultAndroid" : 30, // reduce battery usage "default" : 60 } } }, "input" : { "type" : "object", "additionalProperties" : false, "default" : {}, "required" : [ "radialWheelGarrisonSwipe" ], "properties" : { "radialWheelGarrisonSwipe" : { "type" : "boolean", "default" : true } } }, "adventure" : { "type" : "object", "additionalProperties" : false, "default" : {}, "required" : [ "heroMoveTime", "enemyMoveTime", "scrollSpeedPixels", "heroReminder", "quickCombat", "objectAnimation", "terrainAnimation", "forceQuickCombat", "borderScroll", "leftButtonDrag" ], "properties" : { "heroMoveTime" : { "type" : "number", "default" : 150 }, "enemyMoveTime" : { "type" : "number", "default" : 150 }, "scrollSpeedPixels" : { "type" : "number", "default" : 800 }, "heroReminder" : { "type" : "boolean", "default" : true }, "quickCombat" : { "type" : "boolean", "default" : false }, "objectAnimation" : { "type" : "boolean", "default" : true }, "terrainAnimation" : { "type" : "boolean", "default" : true }, "forceQuickCombat" : { "type" : "boolean", "default" : false }, "borderScroll" : { "type" : "boolean", "defaultIOS" : false, "defaultAndroid" : false, "default" : true }, "leftButtonDrag" : { "type" : "boolean", "default" : false } } }, "battle" : { "type" : "object", "additionalProperties" : false, "default" : {}, "required" : [ "speedFactor", "mouseShadow", "cellBorders", "stackRange", "movementHighlightOnHover", "rangeLimitHighlightOnHover", "showQueue", "swipeAttackDistance", "queueSize", "stickyHeroInfoWindows" ], "properties" : { "speedFactor" : { "type" : "number", "default" : 2 }, "mouseShadow" : { "type" : "boolean", "default" : true }, "cellBorders" : { "type" : "boolean", "default" : false }, "stackRange" : { "type" : "boolean", "default" : true }, "movementHighlightOnHover" : { "type" : "boolean", "default" : true }, "rangeLimitHighlightOnHover" : { "type" : "boolean", "default" : false }, "showQueue" : { "type" : "boolean", "default" : true }, "swipeAttackDistance" : { "type" : "number", "default" : 250 }, "queueSize" : { "type" : "string", "default" : "auto", "enum" : [ "auto", "small", "big" ] }, "stickyHeroInfoWindows" : { "type" : "boolean", "default" : true } } }, "server" : { "type" : "object", "additionalProperties" : false, "default" : {}, "required" : [ "server", "port", "localInformation", "playerAI", "alliedAI", "friendlyAI", "neutralAI", "enemyAI", "reconnect", "uuid", "names" ], "properties" : { "server" : { "type" : "string", "default" : "127.0.0.1" }, "port" : { "type" : "number", "default" : 3030 }, "localInformation" : { "type" : "number", "default" : 2 }, "playerAI" : { "type" : "string", "default" : "Nullkiller" }, "alliedAI" : { "type" : "string", "default" : "VCAI" }, "friendlyAI" : { "type" : "string", "default" : "BattleAI" }, "neutralAI" : { "type" : "string", "default" : "StupidAI" }, "enemyAI" : { "type" : "string", "default" : "BattleAI" }, "reconnect" : { "type" : "boolean", "default" : false }, "uuid" : { "type" : "string", "default" : "" }, "names" : { "type" : "array", "default" : [], "items" : { "type" : "string", "default" : "" } } } }, "logging" : { "type" : "object", "additionalProperties" : false, "default" : {}, "required" : [ "console", "file", "loggers" ], "properties" : { "console" : { "type" : "object", "default" : {}, "required" : [ "format", "threshold", "coloredOutputEnabled", "colorMapping" ], "properties" : { "format" : { "type" : "string", "default" : "%m" }, "threshold" : { "$ref" : "#/definitions/logLevelEnum", "default" : "info" }, "coloredOutputEnabled" : { "type" : "boolean", "default" : true }, "colorMapping" : { "type" : "array", "default" : [ { "domain" : "global", "level" : "trace", "color" : "gray"}, { "domain" : "global", "level" : "debug", "color" : "white"}, { "domain" : "global", "level" : "info", "color" : "green"}, { "domain" : "global", "level" : "warn", "color" : "yellow"}, { "domain" : "global", "level" : "error", "color" : "red"} ], "items" : { "type" : "object", "additionalProperties" : false, "default" : {}, "required" : [ "domain", "level", "color" ], "properties" : { "domain" : { "type" : "string" }, "level" : { "$ref" : "#/definitions/logLevelEnum" }, "color" : { "type" : "string", "enum" : [ "default", "green", "red", "magenta", "yellow", "white", "gray", "teal" ] } } } } } }, "file" : { "type" : "object", "additionalProperties" : false, "default" : {}, "required" : [ "format" ], "properties" : { "format" : { "type" : "string", "default" : "[%c] %l %n - %m" } } }, "loggers" : { "type" : "array", "default" : [ { "domain" : "global", "level" : "trace" } ], "items" : { "type" : "object", "additionalProperties" : false, "required" : [ "level", "domain" ], "properties" : { "domain" : { "type" : "string" }, "level" : { "$ref" : "#/definitions/logLevelEnum" } } } } } }, "launcher" : { "type" : "object", "default" : {}, "additionalProperties" : false, "required" : [ "setupCompleted", "defaultRepositoryEnabled", "defaultRepositoryURL", "extraRepositoryURL", "extraRepositoryEnabled", "enableInstalledMods", "autoCheckRepositories", "updateOnStartup", "updateConfigUrl", "lobbyUrl", "lobbyPort", "lobbyUsername", "connectionTimeout" ], "properties" : { "defaultRepositoryEnabled" : { "type" : "boolean", "default" : true, }, "defaultRepositoryURL" : { "type" : "string", "default" : "https://raw.githubusercontent.com/vcmi/vcmi-mods-repository/develop/vcmi-1.3.json", }, "extraRepositoryEnabled" : { "type" : "boolean", "default" : false, }, "extraRepositoryURL" : { "type" : "string", "default" : "", }, "setupCompleted" : { "type" : "boolean", "default" : false }, "enableInstalledMods" : { "type" : "boolean", "default" : true }, "autoCheckRepositories" : { "type" : "boolean", "default" : true }, "updateOnStartup" : { "type" : "boolean", "default" : true }, "updateConfigUrl" : { "type" : "string", "default" : "https://raw.githubusercontent.com/vcmi/vcmi-updates/master/vcmi-updates.json" }, "lobbyUrl" : { "type" : "string", "description" : "ip address or web link to remote proxy server", "default" : "beholder.vcmi.eu" }, "lobbyPort" : { "type" : "number", "description" : "connection port for remote proxy server", "default" : 5002 }, "lobbyUsername" : { "type" : "string", "description" : "username for the client on the remote proxy server", "default" : "" }, "connectionTimeout" : { "type" : "number", "description" : "maximum time in ms, should be enough to establish socket connection to remote proxy server.", "default" : 2000 } } }, "gameTweaks" : { "type" : "object", "default" : {}, "additionalProperties" : false, "required" : [ "showGrid", "forceMovementInfo", "numericCreaturesQuantities", "availableCreaturesAsDwellingLabel", "compactTownCreatureInfo", "infoBarPick", "skipBattleIntroMusic", "infoBarCreatureManagement" ], "properties" : { "showGrid" : { "type" : "boolean", "default" : false }, "forceMovementInfo" : { "type" : "boolean", "default" : false }, "numericCreaturesQuantities" : { "type" : "boolean", "default" : false }, "availableCreaturesAsDwellingLabel" : { "type" : "boolean", "default" : false }, "compactTownCreatureInfo" : { "type" : "boolean", "default" : false }, "infoBarPick" : { "type" : "boolean", "default" : false }, "skipBattleIntroMusic" : { "type" : "boolean", "default" : false }, "infoBarCreatureManagement": { "type" : "boolean", "default" : false } } } } }