Spaces:
Running
Running
const SET_FRAMERATE = 'tw/SET_FRAMERATE'; | |
const SET_INTERPOLATION = 'tw/SET_INTERPOLATION'; | |
const SET_COMPILER_OPTIONS = 'tw/SET_COMPILER_OPTIONS'; | |
const SET_RUNTIME_OPTIONS = 'tw/SET_RUNTIME_OPTIONS'; | |
const SET_USERNAME = 'tw/SET_USERNAME'; | |
const SET_CLOUD = 'tw/SET_CLOUD'; | |
const SET_HIGH_QUALITY_PEN = 'tw/SET_HIGH_QUALITY_PEN'; | |
const SET_WINDOW_FULLSCREEN = 'tw/SET_WINDOW_FULLSCREEN'; | |
const SET_DIMENSIONS = 'tw/SET_DIMENSIONS'; | |
const SET_AUTHOR = 'tw/SET_AUTHOR'; | |
const SET_DESCRIPTION = 'tw/SET_DESCRIPTION'; | |
const SET_EXTRA_PROJECT_INFO = 'tw/SET_EXTRA_PROJECT_INFO'; | |
const SET_REMIXED_PROJECT_INFO = 'tw/SET_REMIXED_PROJECT_INFO'; | |
const ADD_COMPILE_ERROR = 'tw/ADD_COMPILE_ERROR'; | |
const CLEAR_COMPILE_ERRORS = 'tw/CLEAR_COMPILE_ERRORS'; | |
const SET_FILE_HANDLE = 'tw/SET_FILE_HANDLE'; | |
const SET_USERNAME_INVALID = 'tw/SET_USERNAME_INVALID'; | |
const SET_USERNAME_LOGGED_IN = 'tw/SET_USERNAME_LOGGED_IN'; | |
const SET_HAS_CLOUD_VARIABLES = 'tw/SET_HAS_CLOUD_VARIABLES'; | |
const SET_CLOUD_HOST = 'tw/SET_CLOUD_HOST'; | |
export const initialState = { | |
framerate: 30, | |
interpolation: false, | |
cloud: true, | |
username: '', | |
highQualityPen: true, | |
compilerOptions: { | |
enabled: true, | |
warpTimer: false | |
}, | |
runtimeOptions: { | |
maxClones: 300, | |
miscLimits: true, | |
dangerousOptimizations: false, | |
disableOffscreenRendering: false, | |
fencing: true | |
}, | |
isWindowFullScreen: false, | |
dimensions: [0, 0], | |
author: { | |
username: '', | |
thumbnail: '' | |
}, | |
description: { | |
instructions: '', | |
credits: '' | |
}, | |
extraProjectInfo: { | |
accepted: true, | |
isRemix: false, | |
remixId: '0', | |
tooLarge: false, | |
author: '', | |
releaseDate: new Date(), | |
isUpdated: false | |
}, | |
remixedProjectInfo: { | |
loaded: false, | |
name: '', | |
author: '' | |
}, | |
compileErrors: [], | |
fileHandle: null, | |
usernameInvalid: false, | |
usernameLoggedIn: false, | |
hasCloudVariables: false, | |
cloudHost: '' | |
}; | |
const reducer = function (state, action) { | |
if (typeof state === 'undefined') state = initialState; | |
switch (action.type) { | |
case SET_FRAMERATE: | |
return Object.assign({}, state, { | |
framerate: action.framerate | |
}); | |
case SET_INTERPOLATION: | |
return Object.assign({}, state, { | |
interpolation: action.interpolation | |
}); | |
case SET_COMPILER_OPTIONS: | |
return Object.assign({}, state, { | |
compilerOptions: action.compilerOptions | |
}); | |
case SET_RUNTIME_OPTIONS: | |
return Object.assign({}, state, { | |
runtimeOptions: action.runtimeOptions | |
}); | |
case SET_USERNAME: | |
return Object.assign({}, state, { | |
username: action.username | |
}); | |
case SET_CLOUD: | |
return Object.assign({}, state, { | |
cloud: action.cloud | |
}); | |
case SET_HIGH_QUALITY_PEN: | |
return Object.assign({}, state, { | |
highQualityPen: action.highQualityPen | |
}); | |
case SET_WINDOW_FULLSCREEN: | |
return Object.assign({}, state, { | |
isWindowFullScreen: action.isWindowFullScreen | |
}); | |
case SET_DIMENSIONS: | |
return Object.assign({}, state, { | |
dimensions: action.dimensions | |
}); | |
case SET_AUTHOR: | |
return Object.assign({}, state, { | |
author: action.author | |
}); | |
case SET_DESCRIPTION: | |
return Object.assign({}, state, { | |
description: action.description | |
}); | |
case SET_EXTRA_PROJECT_INFO: | |
return Object.assign({}, state, { | |
extraProjectInfo: action.extraProjectInfo | |
}); | |
case SET_REMIXED_PROJECT_INFO: | |
return Object.assign({}, state, { | |
remixedProjectInfo: action.remixedProjectInfo | |
}); | |
case ADD_COMPILE_ERROR: | |
return Object.assign({}, state, { | |
compileErrors: [ | |
action.error, | |
...state.compileErrors.slice(0, 4) | |
] | |
}); | |
case CLEAR_COMPILE_ERRORS: | |
return Object.assign({}, state, { | |
compileErrors: [] | |
}); | |
case SET_FILE_HANDLE: | |
return Object.assign({}, state, { | |
fileHandle: action.fileHandle | |
}); | |
case SET_USERNAME_INVALID: | |
return Object.assign({}, state, { | |
usernameInvalid: action.usernameInvalid | |
}); | |
case SET_USERNAME_LOGGED_IN: | |
return Object.assign({}, state, { | |
usernameLoggedIn: action.usernameLoggedIn | |
}); | |
case SET_HAS_CLOUD_VARIABLES: | |
return Object.assign({}, state, { | |
hasCloudVariables: action.hasCloudVariables | |
}); | |
case SET_CLOUD_HOST: | |
return Object.assign({}, state, { | |
cloudHost: action.cloudHost | |
}); | |
default: | |
return state; | |
} | |
}; | |
const setFramerateState = function (framerate) { | |
return { | |
type: SET_FRAMERATE, | |
framerate: framerate | |
}; | |
}; | |
const setInterpolationState = function (interpolation) { | |
return { | |
type: SET_INTERPOLATION, | |
interpolation: interpolation | |
}; | |
}; | |
const setCompilerOptionsState = function (compilerOptions) { | |
return { | |
type: SET_COMPILER_OPTIONS, | |
compilerOptions: compilerOptions | |
}; | |
}; | |
const setRuntimeOptionsState = function (runtimeOptions) { | |
return { | |
type: SET_RUNTIME_OPTIONS, | |
runtimeOptions: runtimeOptions | |
}; | |
}; | |
const setUsername = function (username) { | |
return { | |
type: SET_USERNAME, | |
username: username | |
}; | |
}; | |
const setCloud = function (cloud) { | |
return { | |
type: SET_CLOUD, | |
cloud: cloud | |
}; | |
}; | |
const setHighQualityPenState = function (highQualityPen) { | |
return { | |
type: SET_HIGH_QUALITY_PEN, | |
highQualityPen: highQualityPen | |
}; | |
}; | |
const setIsWindowFullScreen = function (isWindowFullScreen) { | |
return { | |
type: SET_WINDOW_FULLSCREEN, | |
isWindowFullScreen: isWindowFullScreen | |
}; | |
}; | |
const setDimensions = function (dimensions) { | |
return { | |
type: SET_DIMENSIONS, | |
dimensions: dimensions | |
}; | |
}; | |
const setAuthor = function (author) { | |
return { | |
type: SET_AUTHOR, | |
author: author | |
}; | |
}; | |
const setDescription = function (description) { | |
return { | |
type: SET_DESCRIPTION, | |
description: description | |
}; | |
}; | |
const setExtraProjectInfo = function (extraProjectInfo) { | |
return { | |
type: SET_EXTRA_PROJECT_INFO, | |
extraProjectInfo: extraProjectInfo | |
}; | |
}; | |
const setRemixedProjectInfo = function (remixedProjectInfo) { | |
return { | |
type: SET_REMIXED_PROJECT_INFO, | |
remixedProjectInfo: remixedProjectInfo | |
}; | |
}; | |
const addCompileError = function (error) { | |
return { | |
type: ADD_COMPILE_ERROR, | |
error: error | |
}; | |
}; | |
const clearCompileErrors = function () { | |
return { | |
type: CLEAR_COMPILE_ERRORS | |
}; | |
}; | |
const setFileHandle = function (fileHandle) { | |
return { | |
type: SET_FILE_HANDLE, | |
fileHandle: fileHandle | |
}; | |
}; | |
const setUsernameInvalid = function (usernameInvalid) { | |
return { | |
type: SET_USERNAME_INVALID, | |
usernameInvalid: usernameInvalid | |
}; | |
}; | |
const setUsernameLoggedIn = function (usernameLoggedIn) { | |
return { | |
type: SET_USERNAME_LOGGED_IN, | |
usernameLoggedIn: usernameLoggedIn | |
}; | |
}; | |
const setHasCloudVariables = function (hasCloudVariables) { | |
return { | |
type: SET_HAS_CLOUD_VARIABLES, | |
hasCloudVariables: hasCloudVariables | |
}; | |
}; | |
const setCloudHost = function (cloudHost) { | |
return { | |
type: SET_CLOUD_HOST, | |
cloudHost | |
}; | |
}; | |
export { | |
reducer as default, | |
initialState as twInitialState, | |
setFramerateState, | |
setInterpolationState, | |
setCompilerOptionsState, | |
setRuntimeOptionsState, | |
setUsername, | |
setCloud, | |
setHighQualityPenState, | |
setIsWindowFullScreen, | |
setDimensions, | |
setAuthor, | |
setDescription, | |
setExtraProjectInfo, | |
setRemixedProjectInfo, | |
addCompileError, | |
clearCompileErrors, | |
setFileHandle, | |
setUsernameInvalid, | |
setUsernameLoggedIn, | |
setHasCloudVariables, | |
setCloudHost | |
}; | |