lpaulger/cribbage-the-game

View on GitHub
app/scripts/gameStates/StateRegistry.js

Summary

Maintainability
A
0 mins
Test Coverage
/*jshint -W098 */
define(['gameStates/DrawState', 'gameStates/DealState', 'gameStates/CribState',
        'gameStates/PrePlayState', 'gameStates/PlayState', 'gameStates/CountState',
        'gameStates/SummaryState', 'gameStates/HomeState', 'gameStates/InfoState',
        'gameStates/SettingsState'],
  function (DrawState, DealState, CribState, PrePlayState, PlayState, CountState, SummaryState, HomeState, InfoState, SettingsState) {
    'use strict';

    function StateManager(){
      this.states = [];
    }

    StateManager.prototype.initState = function(stateName, game){
      var state;
      state = this.states.filter(function(state){
        return state.name === stateName;
      })[0];
      if(!state){
        try{
          /*jshint evil:true */
          state = eval('new ' + stateName + 'State(game)');
        } catch (e) {
          throw new Error(stateName + 'State Not Found');
        }

        this.states.push(state);
      }

      return state;
    };

    return StateManager;
  });