UNPKG

jsge

Version:

Javascript Game Engine

179 lines (168 loc) 4.89 kB
import { CONST } from "./constants.js"; /** * @namespace SystemSettings */ /** * Default SystemSettings * @typedef {Object} DefaultSettings * @property {String} mode - DEBUG/PRODUCTION, debug mode system Logger will show debug information in the console * @property {gameOptions} gameOptions * @property {network} network - network settings * @property {canvasMaxSize} canvasMaxSize * @property {worldSize} worldSize * @property {string} defaultCanvasKey * @property {Object} customSettings - any custom settings * @memberof SystemSettings */ /** * @typedef {Object} gameOptions * @property {String} library * @property {render} render * @property {debug} debug * @property {String} optimization * @property {String} optimizationWASMUrl * @property {String} optimizationAssemblyUrl * @property {loadingScreen} loadingScreen * @memberof SystemSettings */ /** * @typedef {Object} loadingScreen * @property {String} backgroundColor * @property {String} loadingBarBg * @property {String} loadingBarProgress * @memberof SystemSettings */ /** * @typedef {Object} network * @property {boolean} enabled - disabled by default * @property {String} address - server address * @property {number} gatherRoomsInfoInterval * @memberof SystemSettings */ /** * @typedef {Object} canvasMaxSize * @property {number} width * @property {number} height * @memberof SystemSettings */ /** * @typedef {Object} worldSize * @property {number} width * @property {number} height * @memberof SystemSettings */ /** * render Settings * @typedef {Object} render * @property {cyclesTimeCalc} cyclesTimeCalc - DEBUG/PRODUCTION, debug mode system Logger will show debug information in the console * @property {boundaries} boundaries * @property {number} textAtlasMaxSize */ /** * cycles time calc * @typedef {Object} cyclesTimeCalc * @property {String} check * @property {Number} averageFPStime * @memberof SystemSettings */ /** * boundaries (collision shapes) * @typedef {Object} boundaries * @property {boolean} mapBoundariesEnabled * @property {boolean} realtimeCalculations * @property {boolean} wholeWorldPrecalculations * @memberof SystemSettings */ /** * debug Settings * @typedef {Object} debug * @property {boolean} preserveDrawingBuffer * @property {boolean} checkWebGlErrors * @property {boolean} debugMobileTouch * @property {debugBoundaries} boundaries * @property {boolean} delayBetweenObjectRender */ /** * debug boundaries * @typedef {Object} debugBoundaries * @property {boolean} drawLayerBoundaries * @property {boolean} drawObjectBoundaries * @property {string} boundariesColor * @property {Number} boundariesWidth */ /** * Settings object, should be passed as a parameter to System.constructor(). * @type {DefaultSettings} * @memberof SystemSettings */ const SystemSettings = { mode: CONST.MODE.DEBUG, /** * game options */ gameOptions: { // no other variants only WEBGL for now library: CONST.LIBRARY.WEBGL, optimization: CONST.OPTIMIZATION.NATIVE_JS.OPTIMIZED, optimizationWASMUrl: "./src/wa/calculateBufferDataWat.wasm", optimizationAssemblyUrl: "/src/wa/calculateBufferDataAssembly.wasm", loadingScreen: { backgroundColor: "rgba(128, 128, 128, 0.6)", loadingBarBg: "rgba(128, 128, 128, 1)", loadingBarProgress: "rgba(128, 128, 128, 0.2)", }, render: { cyclesTimeCalc: { check: CONST.OPTIMIZATION.CYCLE_TIME_CALC.AVERAGES, averageFPStime: 10000 }, boundaries: { mapBoundariesEnabled: true, realtimeCalculations: true, wholeWorldPrecalculations: false }, textAtlasMaxSize: 500 // pixels. }, debug: { preserveDrawingBuffer: false, // this option is used in testing environment checkWebGlErrors: false, debugMobileTouch: false, boundaries: { drawLayerBoundaries: false, drawObjectBoundaries: false, boundariesColor: "rgba(224, 12, 21, 0.6)", boundariesWidth: 2 }, delayBetweenObjectRender: false, // 1 sec delay for debug proposes } }, /** * network options */ network: { // disable INetwork by default enabled: false, address: "https://gameserver.reslc.ru:9009", gatherRoomsInfoInterval: 5000 }, canvasMaxSize: { width: 1800, height: 1800 }, /** * world size */ worldSize: { width: 960, height: 960 }, /** * default canvas key */ defaultCanvasKey: "default", /** * custom options */ customSettings: {} } export { SystemSettings };