module.exports = # TODO There should be a better way to divide these channels into smaller ones # TODO location is debatable 'echo-self-wizard-sprite': {} # TODO schema 'level:session-will-save': {} # TODO schema 'level-loader:progress-changed': {} # TODO schema 'level:shift-space-pressed': {} # TODO schema 'level:escape-pressed': {} # TODO schema 'level-enable-controls': {} # TODO schema 'level-set-letterbox': {} # TODO schema 'level:started': {} # TODO schema 'level-set-debug': {} # TODO schema 'level-set-grid': {} # TODO schema 'level:restarted': {} # TODO schema 'level-set-volume': {} # TODO schema 'level-set-time': {} # TODO schema 'level-select-sprite': {} # TODO schema 'level-set-playing': {} # TODO schema 'level:team-set': {} # TODO schema 'level:docs-shown': {} 'level:docs-hidden': {} 'level:victory-hidden': {} # TODO schema 'level:flag-color-selected': type: 'object' additionalProperties: false properties: color: oneOf: [ {type: 'null'} {type: 'string', enum: ['green', 'black', 'violet'], description: 'The flag color to place next, or omitted/null if deselected.'} ] pos: type: 'object' additionalProperties: false required: ['x', 'y'] properties: x: {type: 'number'} y: {type: 'number'} 'level:flag-updated': type: 'object' additionalProperties: false required: ['player', 'color', 'time', 'active'] properties: player: type: 'string' team: type: 'string' color: type: 'string' enum: ['green', 'black', 'violet'] time: type: 'number' minimum: 0 active: type: 'boolean' pos: type: 'object' additionalProperties: false required: ['x', 'y'] properties: x: {type: 'number'} y: {type: 'number'} 'next-game-pressed': {} # TODO schema 'end-current-script': {} # TODO schema 'script:reset': {} # TODO schema 'script:ended': {} # TODO schema 'end-all-scripts': {} 'script:state-changed': {} # TODO schema 'script-manager:tick': type: 'object' additionalProperties: false properties: scriptRunning: {type: 'string'} noteGroupRunning: {type: 'string'} timeSinceLastScriptEnded: {type: 'number'} scriptStates: type: 'object' additionalProperties: title: 'Script State' type: 'object' additionalProperties: false properties: timeSinceLastEnded: type: 'number' description: 'seconds since this script ended last' timeSinceLastTriggered: type: 'number' description: 'seconds since this script was triggered last' 'play-sound': {} # TODO schema # TODO refactor name 'onLoadingViewUnveiled': {} # TODO schema 'playback:manually-scrubbed': {} # TODO schema 'playback:stop-real-time-playback': type: 'object' additionalProperties: false 'playback:real-time-playback-started': type: 'object' additionalProperties: false 'playback:real-time-playback-ended': type: 'object' additionalProperties: false 'change:editor-config': {} # TODO schema 'restart-level': {} # TODO schema 'play-next-level': {} # TODO schema 'level-select-sprite': {} # TODO schema 'level-toggle-grid': {} # TODO schema 'level-toggle-debug': {} # TODO schema 'level-toggle-pathfinding': {} # TODO schema 'level-scrub-forward': {} # TODO schema 'level-scrub-back': {} # TODO schema 'level-show-victory': type: 'object' additionalProperties: false properties: showModal: {type: 'boolean'} 'level-highlight-dom': type: 'object' additionalProperties: false properties: selector: {type: 'string'} delay: {type: 'number'} sides: {type: 'array', items: {'enum': ['left', 'right', 'top', 'bottom']}} offset: {type: 'object'} rotation: {type: 'number'} 'goal-manager:new-goal-states': {} # TODO schema