|
|
"use strict"; |
|
|
|
|
|
var AppConstants = require('../constants/AppConstants'); |
|
|
var AppDispatcher = require('../dispatcher/AppDispatcher'); |
|
|
var EventEmitter = require('events').EventEmitter; |
|
|
|
|
|
var ActionTypes = AppConstants.ActionTypes; |
|
|
|
|
|
var _isAnimating = false; |
|
|
var _flipTreeY = false; |
|
|
var _numLevelsSolved = 0; |
|
|
var _disableLevelInstructions = false; |
|
|
|
|
|
var GlobalStateStore = Object.assign( |
|
|
{}, |
|
|
EventEmitter.prototype, |
|
|
AppConstants.StoreSubscribePrototype, |
|
|
{ |
|
|
getIsAnimating: function() { |
|
|
return _isAnimating; |
|
|
}, |
|
|
|
|
|
getFlipTreeY: function() { |
|
|
return _flipTreeY; |
|
|
}, |
|
|
|
|
|
getNumLevelsSolved: function() { |
|
|
return _numLevelsSolved; |
|
|
}, |
|
|
|
|
|
getShouldDisableLevelInstructions: function() { |
|
|
return _disableLevelInstructions; |
|
|
}, |
|
|
|
|
|
dispatchToken: AppDispatcher.register(function(payload) { |
|
|
var action = payload.action; |
|
|
var shouldInform = false; |
|
|
|
|
|
switch (action.type) { |
|
|
case ActionTypes.CHANGE_IS_ANIMATING: |
|
|
_isAnimating = action.isAnimating; |
|
|
shouldInform = true; |
|
|
break; |
|
|
case ActionTypes.CHANGE_FLIP_TREE_Y: |
|
|
_flipTreeY = action.flipTreeY; |
|
|
shouldInform = true; |
|
|
break; |
|
|
case ActionTypes.LEVEL_SOLVED: |
|
|
_numLevelsSolved++; |
|
|
shouldInform = true; |
|
|
break; |
|
|
case ActionTypes.DISABLE_LEVEL_INSTRUCTIONS: |
|
|
_disableLevelInstructions = true; |
|
|
shouldInform = true; |
|
|
break; |
|
|
} |
|
|
|
|
|
if (shouldInform) { |
|
|
GlobalStateStore.emit(AppConstants.CHANGE_EVENT); |
|
|
} |
|
|
}) |
|
|
|
|
|
}); |
|
|
|
|
|
module.exports = GlobalStateStore; |
|
|
|