soiz1's picture
Upload 1525 files
f2bee8a verified
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
};