settings.json 20 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858
  1. // This is schema for checking game settings from settings.json
  2. // Any new settings should be added in this file for correct serialization and initialization
  3. {
  4. "type" : "object",
  5. "$schema" : "http://json-schema.org/draft-04/schema",
  6. "required" : [ "general", "video", "adventure", "battle", "input", "server", "logging", "launcher", "lobby", "gameTweaks", "mods" ],
  7. "definitions" : {
  8. "logLevelEnum" : {
  9. "type" : "string",
  10. "enum" : [ "trace", "debug", "info", "warn", "error" ]
  11. }
  12. },
  13. "additionalProperties" : false,
  14. "properties" :
  15. {
  16. "general" : {
  17. "type" : "object",
  18. "default" : {},
  19. "additionalProperties" : false,
  20. "required" : [
  21. "playerName",
  22. "multiPlayerNames",
  23. "music",
  24. "sound",
  25. "saveRandomMaps",
  26. "lastMap",
  27. "language",
  28. "gameDataLanguage",
  29. "lastSave",
  30. "lastSettingsTab",
  31. "lastCampaign",
  32. "lastDifficulty",
  33. "saveFrequency",
  34. "notifications",
  35. "extraDump",
  36. "userRelativePointer",
  37. "relativePointerSpeedMultiplier",
  38. "hapticFeedback",
  39. "longTouchTimeMilliseconds",
  40. "autosaveCountLimit",
  41. "useSavePrefix",
  42. "savePrefix",
  43. "startTurnAutosave",
  44. "enableUiEnhancements",
  45. "audioMuteFocus",
  46. "enableOverlay",
  47. "lastKindomInterface",
  48. "enableSubtitle",
  49. "ignoreMuteSwitch",
  50. "highscoreEntriesCap",
  51. "highscoreStatisticEntriesCap"
  52. ],
  53. "properties" : {
  54. "playerName" : {
  55. "type" : "string",
  56. "default" : "Player"
  57. },
  58. "multiPlayerNames" : {
  59. "type" : "array",
  60. "default" : []
  61. },
  62. "music" : {
  63. "type" : "number",
  64. "default" : 88
  65. },
  66. "sound" : {
  67. "type" : "number",
  68. "default" : 88
  69. },
  70. "saveRandomMaps" : {
  71. "type" : "boolean",
  72. "default" : false
  73. },
  74. "lastMap" : {
  75. "type" : "string",
  76. "default" : "Maps/Arrogance"
  77. },
  78. "language" : {
  79. "type" : "string",
  80. "enum" : [ "english", "belarusian", "bulgarian", "czech", "chinese", "finnish", "french", "german", "greek", "hungarian", "italian", "japanese", "korean", "norwegian", "polish", "portuguese", "romanian", "russian", "spanish", "swedish", "turkish", "ukrainian", "vietnamese" ],
  81. "default" : "english"
  82. },
  83. "gameDataLanguage" : {
  84. "type" : "string",
  85. "enum" : [ "auto", "english", "belarusian", "bulgarian", "czech", "chinese", "finnish", "french", "german", "greek", "hungarian", "italian", "japanese", "korean", "norwegian", "polish", "portuguese", "romanian", "russian", "spanish", "swedish", "turkish", "ukrainian", "vietnamese" ],
  86. "default" : "auto"
  87. },
  88. "lastSave" : {
  89. "type" : "string",
  90. "default" : "NEWGAME"
  91. },
  92. "lastSettingsTab" : {
  93. "type" : "number",
  94. "default" : 0
  95. },
  96. "lastCampaign" : {
  97. "type" : "string",
  98. "default" : ""
  99. },
  100. "lastDifficulty" : {
  101. "type" : "number",
  102. "default" : 1
  103. },
  104. "saveFrequency" : {
  105. "type" : "number",
  106. "default" : 1
  107. },
  108. "notifications" : {
  109. "type" : "boolean",
  110. "default" : false
  111. },
  112. "extraDump" : {
  113. "type" : "boolean",
  114. "default" : false
  115. },
  116. "userRelativePointer" : {
  117. "type" : "boolean",
  118. "default" : false
  119. },
  120. "relativePointerSpeedMultiplier" : {
  121. "type" : "number",
  122. "default" : 1
  123. },
  124. "longTouchTimeMilliseconds" : {
  125. "type" : "number",
  126. "default" : 1000
  127. },
  128. "hapticFeedback" : {
  129. "type" : "boolean",
  130. "default" : true
  131. },
  132. "autosaveCountLimit" : {
  133. "type" : "number",
  134. "default": 5
  135. },
  136. "useSavePrefix" : {
  137. "type": "boolean",
  138. "default": true
  139. },
  140. "savePrefix" : {
  141. "type": "string",
  142. "default": ""
  143. },
  144. "startTurnAutosave" : {
  145. "type": "boolean",
  146. "default": false
  147. },
  148. "enableUiEnhancements" : {
  149. "type": "boolean",
  150. "default": true
  151. },
  152. "audioMuteFocus" : {
  153. "type": "boolean",
  154. "default": false
  155. },
  156. "enableOverlay" : {
  157. "type": "boolean",
  158. "default": true
  159. },
  160. "lastKindomInterface" : {
  161. "type" : "number",
  162. "default" : 0
  163. },
  164. "enableSubtitle" : {
  165. "type": "boolean",
  166. "default": true
  167. },
  168. "ignoreMuteSwitch" : {
  169. "type": "boolean",
  170. "default": true
  171. },
  172. "highscoreEntriesCap" : {
  173. "type" : "number",
  174. "default" : 100
  175. },
  176. "highscoreStatisticEntriesCap" : {
  177. "type" : "number",
  178. "default" : 15
  179. }
  180. }
  181. },
  182. "mods" : {
  183. "type" : "object",
  184. "additionalProperties" : false,
  185. "default" : {},
  186. "required" : [
  187. "validation"
  188. ],
  189. "properties" : {
  190. "validation" : {
  191. "type" : "string",
  192. "enum" : [ "off", "basic", "full" ],
  193. "default" : "basic"
  194. }
  195. }
  196. },
  197. "video" : {
  198. "type" : "object",
  199. "additionalProperties" : false,
  200. "default" : {},
  201. "required" : [
  202. "resolution",
  203. "reservedWidth",
  204. "fullscreen",
  205. "realFullscreen",
  206. "cursor",
  207. "showIntro",
  208. "spellbookAnimation",
  209. "driver",
  210. "displayIndex",
  211. "performanceOverlay",
  212. "targetfps",
  213. "vsync",
  214. "fontsType",
  215. "cursorScalingFactor",
  216. "fontScalingFactor",
  217. "upscalingFilter",
  218. "fontUpscalingFilter",
  219. "downscalingFilter",
  220. "allowPortrait",
  221. "asyncUpscaling",
  222. "useHdTextures"
  223. ],
  224. "properties" : {
  225. "resolution" : {
  226. "type" : "object",
  227. "additionalProperties" : false,
  228. "required" : [ "width", "height", "scaling" ],
  229. "properties" : {
  230. "width" : { "type" : "number", "default" : 1280 },
  231. "height" : { "type" : "number", "default" : 720 },
  232. "scaling" : { "type" : "number", "default" : 0 }
  233. }
  234. },
  235. "reservedWidth" : {
  236. "type" : "number",
  237. "defaultIOS" : 0.1, // iOS camera cutout / notch is not excluded from available area by SDL, handle it this way
  238. "default" : 0
  239. },
  240. "fullscreen" : {
  241. "type" : "boolean",
  242. "default" : true
  243. },
  244. "realFullscreen" : {
  245. "type" : "boolean",
  246. "default" : false
  247. },
  248. "cursor" : {
  249. "type" : "string",
  250. "enum" : [ "hardware", "software" ],
  251. "default" : "hardware"
  252. },
  253. "showIntro" : {
  254. "type" : "boolean",
  255. "default" : true
  256. },
  257. "spellbookAnimation" : {
  258. "type" : "boolean",
  259. "default" : true
  260. },
  261. "driver" : {
  262. "type" : "string",
  263. "defaultWindows" : "",
  264. "default" : "opengl",
  265. "description" : "preferred graphics backend driver name for SDL2"
  266. },
  267. "displayIndex" : {
  268. "type" : "number",
  269. "default" : 0
  270. },
  271. "performanceOverlay" : {
  272. "type" : "object",
  273. "additionalProperties" : false,
  274. "required" : [ "show", "edge", "marginTopBottom", "marginLeftRight" ],
  275. "properties" : {
  276. "show" : { "type" : "boolean", "default" : false },
  277. "edge" : { "type" : "string", "enum" : [ "topleft", "topright", "bottomleft", "bottomright" ], "default" : "bottomleft" },
  278. "marginTopBottom" : { "type" : "number", "default" : 5 },
  279. "marginLeftRight" : { "type" : "number", "default" : 7 }
  280. }
  281. },
  282. "targetfps" : {
  283. "type" : "number",
  284. "default" : 60
  285. },
  286. "vsync" : {
  287. "type" : "boolean",
  288. "default" : true
  289. },
  290. "fontsType" : {
  291. "type" : "string",
  292. "enum" : [ "auto", "original", "scalable" ],
  293. "default" : "auto"
  294. },
  295. "cursorScalingFactor" : {
  296. "type" : "number",
  297. "default" : 1
  298. },
  299. "fontScalingFactor" : {
  300. "type" : "number",
  301. "default" : 1
  302. },
  303. "fontUpscalingFilter" : {
  304. "type" : "string",
  305. "enum" : [ "nearest", "bilinear", "xbrz" ],
  306. "default" : "nearest"
  307. },
  308. "upscalingFilter" : {
  309. "type" : "string",
  310. "enum" : [ "auto", "none", "xbrz2", "xbrz3", "xbrz4" ],
  311. "default" : "auto"
  312. },
  313. "downscalingFilter" : {
  314. "type" : "string",
  315. "enum" : [ "nearest", "linear", "best" ],
  316. "default" : "best"
  317. },
  318. "allowPortrait" : {
  319. "type" : "boolean",
  320. "default" : false
  321. },
  322. "asyncUpscaling" : {
  323. "type" : "boolean",
  324. "default" : true
  325. },
  326. "useHdTextures" : {
  327. "type" : "boolean",
  328. "default" : true
  329. }
  330. }
  331. },
  332. "input" : {
  333. "type" : "object",
  334. "additionalProperties" : false,
  335. "default" : {},
  336. "required" : [
  337. "radialWheelGarrisonSwipe",
  338. "touchToleranceDistance",
  339. "mouseToleranceDistance",
  340. "shortcutToleranceDistance",
  341. "enableMouse",
  342. "enableTouch",
  343. "enableController",
  344. "controllerTriggerTreshold",
  345. "controllerAxisDeadZone",
  346. "controllerAxisFullZone",
  347. "controllerAxisSpeed",
  348. "controllerAxisScale",
  349. "handleBackRightMouseButton"
  350. ],
  351. "properties" : {
  352. "radialWheelGarrisonSwipe" : {
  353. "type" : "boolean",
  354. "default" : true
  355. },
  356. "touchToleranceDistance" : {
  357. "type" : "number",
  358. "default" : 20
  359. },
  360. "mouseToleranceDistance" : {
  361. "type" : "number",
  362. "default" : 0
  363. },
  364. "shortcutToleranceDistance" : {
  365. "type" : "number",
  366. "default" : 0
  367. },
  368. "enableMouse" : {
  369. "type" : "boolean",
  370. "default" : true
  371. },
  372. "enableTouch" : {
  373. "type" : "boolean",
  374. "default" : true
  375. },
  376. "enableController" : {
  377. "type" : "boolean",
  378. "default" : true
  379. },
  380. "controllerTriggerTreshold" : {
  381. "type" : "number",
  382. "default" : 0.3
  383. },
  384. "controllerAxisDeadZone" : {
  385. "type" : "number",
  386. "default" : 0.2
  387. },
  388. "controllerAxisFullZone" : {
  389. "type" : "number",
  390. "default" : 1.0
  391. },
  392. "controllerAxisSpeed" : {
  393. "type" : "number",
  394. "default" : 1000
  395. },
  396. "controllerAxisScale" : {
  397. "type" : "number",
  398. "default" : 2
  399. },
  400. "handleBackRightMouseButton" : {
  401. "type" : "boolean",
  402. "default" : false
  403. }
  404. }
  405. },
  406. "adventure" : {
  407. "type" : "object",
  408. "additionalProperties" : false,
  409. "default" : {},
  410. "required" : [ "heroMoveTime", "enemyMoveTime", "scrollSpeedPixels", "heroReminder", "quickCombat", "objectAnimation", "terrainAnimation", "forceQuickCombat", "borderScroll", "leftButtonDrag", "rightButtonDrag", "smoothDragging", "backgroundDimLevel", "hideBackground", "backgroundDimSmallWindows", "tileZoom", "minimapShowHeroes", "showMovePath" ],
  411. "properties" : {
  412. "heroMoveTime" : {
  413. "type" : "number",
  414. "default" : 150
  415. },
  416. "enemyMoveTime" : {
  417. "type" : "number",
  418. "default" : 150
  419. },
  420. "scrollSpeedPixels" : {
  421. "type" : "number",
  422. "default" : 800
  423. },
  424. "heroReminder" : {
  425. "type" : "boolean",
  426. "default" : true
  427. },
  428. "quickCombat" : {
  429. "type" : "boolean",
  430. "default" : false
  431. },
  432. "objectAnimation" : {
  433. "type" : "boolean",
  434. "default" : true
  435. },
  436. "terrainAnimation" : {
  437. "type" : "boolean",
  438. "default" : true
  439. },
  440. "forceQuickCombat" : {
  441. "type" : "boolean",
  442. "default" : false
  443. },
  444. "borderScroll" :
  445. {
  446. "type" : "boolean",
  447. "defaultIOS" : false,
  448. "defaultAndroid" : false,
  449. "default" : true
  450. },
  451. "leftButtonDrag" : {
  452. "type" : "boolean",
  453. "default" : false
  454. },
  455. "rightButtonDrag" : {
  456. "type" : "boolean",
  457. "default" : false
  458. },
  459. "smoothDragging" : {
  460. "type" : "boolean",
  461. "default" : true
  462. },
  463. "backgroundDimLevel" : {
  464. "type" : "number",
  465. "default" : 128
  466. },
  467. "hideBackground" : {
  468. "type" : "boolean",
  469. "default" : false
  470. },
  471. "backgroundDimSmallWindows" : {
  472. "type" : "boolean",
  473. "default" : false
  474. },
  475. "minimapShowHeroes" : {
  476. "type" : "boolean",
  477. "default" : true
  478. },
  479. "tileZoom" : {
  480. "type" : "number",
  481. "default" : 32
  482. },
  483. "showMovePath" : {
  484. "type" : "boolean",
  485. "default" : true
  486. }
  487. }
  488. },
  489. "battle" : {
  490. "type" : "object",
  491. "additionalProperties" : false,
  492. "default" : {},
  493. "required" : [ "speedFactor", "mouseShadow", "cellBorders", "stackRange", "movementHighlightOnHover", "rangeLimitHighlightOnHover", "showQueue", "swipeAttackDistance", "queueSize", "stickyHeroInfoWindows", "enableAutocombatSpells", "endWithAutocombat", "queueSmallSlots", "queueSmallOutside", "enableQuickSpellPanel", "showHealthBar" ],
  494. "properties" : {
  495. "speedFactor" : {
  496. "type" : "number",
  497. "default" : 2
  498. },
  499. "mouseShadow" : {
  500. "type" : "boolean",
  501. "default" : true
  502. },
  503. "cellBorders" : {
  504. "type" : "boolean",
  505. "default" : false
  506. },
  507. "stackRange" : {
  508. "type" : "boolean",
  509. "default" : true
  510. },
  511. "movementHighlightOnHover" : {
  512. "type" : "boolean",
  513. "default" : true
  514. },
  515. "rangeLimitHighlightOnHover" : {
  516. "type" : "boolean",
  517. "default" : false
  518. },
  519. "showQueue" : {
  520. "type" : "boolean",
  521. "default" : true
  522. },
  523. "swipeAttackDistance" : {
  524. "type" : "number",
  525. "default" : 250
  526. },
  527. "queueSize" : {
  528. "type" : "string",
  529. "default" : "auto",
  530. "enum" : [ "auto", "small", "big" ]
  531. },
  532. "stickyHeroInfoWindows" : {
  533. "type" : "boolean",
  534. "default" : true
  535. },
  536. "enableAutocombatSpells" : {
  537. "type": "boolean",
  538. "default": true
  539. },
  540. "endWithAutocombat" : {
  541. "type": "boolean",
  542. "default": false
  543. },
  544. "queueSmallSlots" : {
  545. "type": "number",
  546. "default": 10
  547. },
  548. "queueSmallOutside" : {
  549. "type": "boolean",
  550. "default": false
  551. },
  552. "enableQuickSpellPanel" : {
  553. "type": "boolean",
  554. "default": true
  555. },
  556. "showHealthBar" : {
  557. "type" : "boolean",
  558. "default" : false
  559. }
  560. }
  561. },
  562. "server" : {
  563. "type" : "object",
  564. "additionalProperties" : false,
  565. "default" : {},
  566. "required" : [ "localHostname", "localPort", "remoteHostname", "remotePort", "seed", "playerAI", "alliedAI", "friendlyAI", "neutralAI", "enemyAI" ],
  567. "properties" : {
  568. "localHostname" : {
  569. "type" : "string",
  570. "default" : "127.0.0.1"
  571. },
  572. "localPort" : {
  573. "type" : "number",
  574. "default" : 3030
  575. },
  576. "remoteHostname" : {
  577. "type" : "string",
  578. "default" : ""
  579. },
  580. "remotePort" : {
  581. "type" : "number",
  582. "default" : 3030
  583. },
  584. "seed" : {
  585. "type" : "number",
  586. "default" : 0
  587. },
  588. "playerAI" : {
  589. "type" : "string",
  590. "enum" : [ "EmptyAI", "Nullkiller", "Nullkiller2" ],
  591. "default" : "Nullkiller2"
  592. },
  593. "alliedAI" : {
  594. "type" : "string",
  595. "enum" : [ "EmptyAI", "Nullkiller", "Nullkiller2" ],
  596. "default" : "Nullkiller2"
  597. },
  598. "friendlyAI" : {
  599. "type" : "string",
  600. "enum" : [ "EmptyAI", "StupidAI", "BattleAI", "MMAI" ],
  601. "default" : "BattleAI"
  602. },
  603. "neutralAI" : {
  604. "type" : "string",
  605. "enum" : [ "EmptyAI", "StupidAI", "BattleAI", "MMAI" ],
  606. "default" : "BattleAI"
  607. },
  608. "enemyAI" : {
  609. "type" : "string",
  610. "enum" : [ "EmptyAI", "StupidAI", "BattleAI", "MMAI" ],
  611. "default" : "BattleAI"
  612. }
  613. }
  614. },
  615. "logging" : {
  616. "type" : "object",
  617. "additionalProperties" : false,
  618. "default" : {},
  619. "required" : [ "console", "file", "loggers" ],
  620. "properties" : {
  621. "console" : {
  622. "type" : "object",
  623. "default" : {},
  624. "required" : [ "format", "threshold", "coloredOutputEnabled", "colorMapping" ],
  625. "properties" : {
  626. "format" : {
  627. "type" : "string",
  628. "default" : "%m"
  629. },
  630. "threshold" : {
  631. "$ref" : "#/definitions/logLevelEnum",
  632. "default" : "info"
  633. },
  634. "coloredOutputEnabled" : {
  635. "type" : "boolean",
  636. "default" : true
  637. },
  638. "colorMapping" : {
  639. "type" : "array",
  640. "default" : [
  641. { "domain" : "global", "level" : "trace", "color" : "gray"},
  642. { "domain" : "global", "level" : "debug", "color" : "white"},
  643. { "domain" : "global", "level" : "info", "color" : "green"},
  644. { "domain" : "global", "level" : "warn", "color" : "yellow"},
  645. { "domain" : "global", "level" : "error", "color" : "red"}
  646. ],
  647. "items" : {
  648. "type" : "object",
  649. "additionalProperties" : false,
  650. "default" : {},
  651. "required" : [ "domain", "level", "color" ],
  652. "properties" : {
  653. "domain" : { "type" : "string" },
  654. "level" : { "$ref" : "#/definitions/logLevelEnum" },
  655. "color" : { "type" : "string", "enum" : [ "default", "green", "red", "magenta", "yellow", "white", "gray", "teal" ] }
  656. }
  657. }
  658. }
  659. }
  660. },
  661. "file" : {
  662. "type" : "object",
  663. "additionalProperties" : false,
  664. "default" : {},
  665. "required" : [ "format" ],
  666. "properties" : {
  667. "format" : {
  668. "type" : "string",
  669. "default" : "[%c] %l [%t] %n - %m"
  670. }
  671. }
  672. },
  673. "loggers" : {
  674. "type" : "array",
  675. "default" : [ { "domain" : "global", "level" : "trace" }, { "domain" : "rng", "level" : "info" } ],
  676. "items" : {
  677. "type" : "object",
  678. "additionalProperties" : false,
  679. "required" : [ "level", "domain" ],
  680. "properties" : {
  681. "domain" : { "type" : "string" },
  682. "level" : { "$ref" : "#/definitions/logLevelEnum" }
  683. }
  684. }
  685. }
  686. }
  687. },
  688. "launcher" : {
  689. "type" : "object",
  690. "default" : {},
  691. "additionalProperties" : false,
  692. "required" : [
  693. "setupCompleted",
  694. "defaultRepositoryEnabled",
  695. "defaultRepositoryURL",
  696. "extraRepositoryURL",
  697. "extraRepositoryEnabled",
  698. "autoCheckRepositories",
  699. "ignoreSslErrors",
  700. "updateOnStartup",
  701. "updateConfigUrl",
  702. "trackClipboardState"
  703. ],
  704. "properties" : {
  705. "defaultRepositoryEnabled" : {
  706. "type" : "boolean",
  707. "default" : true
  708. },
  709. "defaultRepositoryURL" : {
  710. "type" : "string",
  711. "default" : "https://raw.githubusercontent.com/vcmi/vcmi-mods-repository/develop/vcmi-1.7.json"
  712. },
  713. "extraRepositoryEnabled" : {
  714. "type" : "boolean",
  715. "default" : false
  716. },
  717. "extraRepositoryURL" : {
  718. "type" : "string",
  719. "default" : ""
  720. },
  721. "setupCompleted" : {
  722. "type" : "boolean",
  723. "default" : false
  724. },
  725. "ignoreSslErrors" : {
  726. "type" : "boolean",
  727. "default" : false
  728. },
  729. "autoCheckRepositories" : {
  730. "type" : "boolean",
  731. "default" : true
  732. },
  733. "updateOnStartup" : {
  734. "type" : "boolean",
  735. "default" : true
  736. },
  737. "updateConfigUrl" : {
  738. "type" : "string",
  739. "default" : "https://raw.githubusercontent.com/vcmi/vcmi-updates/master/vcmi-updates.json"
  740. },
  741. "trackClipboardState" : {
  742. "type" : "boolean",
  743. "default" : true,
  744. "defaultIOS": false,
  745. "defaultAndroid": false,
  746. "defaultDesktop" : true
  747. }
  748. }
  749. },
  750. "lobby" : {
  751. "type" : "object",
  752. "additionalProperties" : false,
  753. "default" : {},
  754. "required" : [ "mapPreview", "hostname", "port", "roomPlayerLimit", "roomType", "roomMode", "languageRooms" ],
  755. "properties" : {
  756. "mapPreview" : {
  757. "type" : "boolean",
  758. "default" : true
  759. },
  760. "hostname" : {
  761. "type" : "string",
  762. "default" : "beholder.vcmi.eu"
  763. },
  764. "port" : {
  765. "type" : "number",
  766. "default" : 3031
  767. },
  768. "roomPlayerLimit" : {
  769. "type" : "number",
  770. "default" : 2
  771. },
  772. "roomType" : {
  773. "type" : "number",
  774. "default" : 0
  775. },
  776. "roomMode" : {
  777. "type" : "number",
  778. "default" : 0
  779. },
  780. "languageRooms" : {
  781. "type" : "array",
  782. "default" : []
  783. }
  784. }
  785. },
  786. "gameTweaks" : {
  787. "type" : "object",
  788. "default" : {},
  789. "additionalProperties" : false,
  790. "required" : [
  791. "showGrid",
  792. "forceMovementInfo",
  793. "numericCreaturesQuantities",
  794. "availableCreaturesAsDwellingLabel",
  795. "compactTownCreatureInfo",
  796. "infoBarPick",
  797. "skipBattleIntroMusic",
  798. "infoBarCreatureManagement",
  799. "enableLargeSpellbook",
  800. "simpleObjectSelection",
  801. "skipAdventureMapAnimations"
  802. ],
  803. "properties" : {
  804. "showGrid" : {
  805. "type" : "boolean",
  806. "default" : false
  807. },
  808. "forceMovementInfo" : {
  809. "type" : "boolean",
  810. "default" : false
  811. },
  812. "numericCreaturesQuantities" : {
  813. "type" : "boolean",
  814. "default" : false
  815. },
  816. "availableCreaturesAsDwellingLabel" : {
  817. "type" : "boolean",
  818. "default" : false
  819. },
  820. "compactTownCreatureInfo" : {
  821. "type" : "boolean",
  822. "default" : false
  823. },
  824. "infoBarPick" : {
  825. "type" : "boolean",
  826. "default" : false
  827. },
  828. "skipBattleIntroMusic" : {
  829. "type" : "boolean",
  830. "default" : false
  831. },
  832. "infoBarCreatureManagement": {
  833. "type" : "boolean",
  834. "default" : true
  835. },
  836. "enableLargeSpellbook" : {
  837. "type": "boolean",
  838. "default": true
  839. },
  840. "simpleObjectSelection" : {
  841. "type": "boolean",
  842. "default": true,
  843. "defaultIOS": true,
  844. "defaultAndroid": true,
  845. "defaultDesktop" : false
  846. },
  847. "skipAdventureMapAnimations": {
  848. "type": "boolean",
  849. "default": false
  850. }
  851. }
  852. }
  853. }
  854. }