1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283 |
- 'use strict';
- const AppDispatcher = require('../dispatcher/AppDispatcher');
- const EventEmitter = require('eventemitter2').EventEmitter2;
- const GameConstants = require('../constants/GameConstants');
- const Chess = require('chess.js').Chess;
- 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 _chess = new Chess();
- const GameStore = Object.assign({}, EventEmitter.prototype, {
- getState() {
- return {
- gameOver: _gameOver,
- promotion: _promotion,
- turn: _turn
- };
- },
- getCapturedPieces() {
- return _capturedPieces;
- },
- getMoves() {
- return _moves;
- },
- getFEN() {
- return _chess.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;
|