123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156 |
- 'use strict';
- import { initHeroesFromJson } from './heroesHelper';
- import gameStates from './gameStates/gameStates';
- let DuelController = function(dataStore) {
- let gameData = {
- game: {},
- bluePlayer: {},
- redPlayer: {}
- };
- let allHeroes = null;
-
-
- let currentGameState = null;
-
- let setCurrentState = stateName => {
- currentGameState = states[stateName];
- gameData.game.gameState = stateName;
- console.log('Set new state : ', stateName);
- };
-
- let getCurrentState = () => {
- return currentGameState;
- };
-
- let startCurrentState = (payload = null) => {
- currentGameState.start(payload);
- };
-
- let updateCurrentState = (payload = null) => {
- currentGameState.update(payload);
- };
-
- let endCurrentState = (payload = null) => {
- currentGameState.end(payload);
- };
- let getGameData = () => gameData;
-
- let storeData = (data = null) => {
- if (data) {
- setData(data);
- }
- return dataStore.save(gameData);
- };
-
- let setData = data => {
- gameData = data;
- };
-
- let loadData = () => {
- gameData = dataStore.load();
- };
-
- let getAllHeroes = () => {
- if (!allHeroes) {
- allHeroes = initHeroesFromJson(dataStore.getHeroesJson());
- }
- return allHeroes;
- };
-
- let stateCtrl = {
- setCurrentState,
- getCurrentState,
- startCurrentState,
- updateCurrentState,
- endCurrentState,
- storeData,
- setData,
- getGameData,
- loadData,
- getAllHeroes
- };
-
-
- let states = {
- '0_INIT': new gameStates.initState(stateCtrl),
- '1_SELECT_FACTION': new gameStates.selectFactionState(stateCtrl),
- '1_SELECT_DRAFT': new gameStates.selectDraftState(stateCtrl),
- '1_SELECT_TOURNAMENT': new gameStates.selectTournamentState(stateCtrl),
- '2_CHANGE_UP_TO_3_CARDS': new gameStates.changeUpTo3Cards(stateCtrl)
- };
-
-
- let startNewGame = function(player1Name, player2Name, gameOptions) {
-
- setCurrentState('0_INIT');
-
- startCurrentState({
- player1Name,
- player2Name,
- gameOptions
- });
- };
-
- let resumeGame = function(data) {
- gameData = data;
-
-
- setCurrentState(gameData.game.gameState);
- };
-
- let DuelControllerProxy = () => {
- return {
- endTurn: data => {
- console.log('data from player :>> ', data);
- currentGameState.update(data);
- }
- };
- };
-
- return {
- startNewGame,
- resumeGame,
- duelControllerProxy: new DuelControllerProxy()
- };
- };
- export default DuelController;
|