12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182 |
- 'use strict';
- const AppDispatcher = require('../dispatcher/AppDispatcher');
- const EventEmitter = require('eventemitter2').EventEmitter2;
- const GameConstants = require('../constants/GameConstants');
- const Immutable = require('immutable');
- const {List, Map, OrderedMap, Set} = Immutable;
- const CHANGE_EVENT = 'change';
-
- var _gameOver = Map({
- status: false,
- type: null,
- winner: null
- });
- var _capturedPieces = OrderedMap([
- ['white', List()],
- ['black', List()]
- ]);
- var _moves = List();
- var _promotion = 'q';
- var _turn = 'w';
- var _fen = null;
- const GameStore = Object.assign({}, EventEmitter.prototype, {
- getState() {
- return {
- gameOver: _gameOver,
- promotion: _promotion,
- turn: _turn
- };
- },
- getCapturedPieces() {
- return _capturedPieces;
- },
- getMoves() {
- return _moves;
- },
- getFEN() {
- return _fen;
- }
- });
- function rematch() {
- _gameOver = _gameOver
- .set('status', false)
- .set('winner', null)
- .set('type', null);
- }
- function gameOver(options) {
- _gameOver = _gameOver
- .set('status', true)
- .set('winner', options.winner)
- .set('type', options.type);
- }
- AppDispatcher.register(payload => {
- var action = payload.action;
- switch (action.actionType) {
- case GameConstants.REMATCH:
- rematch();
- break;
- case GameConstants.GAME_OVER:
- gameOver(action.options);
- break;
- case GameConstants.CHANGE_PROMOTION:
- _promotion = action.promotion;
- break;
- default:
- return true;
- }
- GameStore.emit(CHANGE_EVENT);
- return true;
- });
- module.exports = GameStore;
|