    'use strict';
    import { socketService } from '../../../main';

    /**
     * Description of game state model for a player
     *
     * @returns {object} Player state in vuex format
     */
    export default function AnyPlayer() {
      const initPlayerState = {
        // Username of this player
        name: '',
        // Color of this player (blue or red)
        color: '',
        // Faction chosen (will stay empty if not faction mode)
        faction: '',
        // Will contain the IDs of the heroes selectable for draft mode
        draftHeroesIds: [],
        // the 12 heroes the player is playing with
        // Player will fill it himself if mode is draft or tournament
        // contains object : {id:heroId , position:'pile' , possibleActions :[]}
        twelveHeroes: [],
        foodInCamp: 0,
        // Can see already we might have issues with left/right depending from where we look :)
        'foodInBattle/left': 0,
        'foodInBattle/center': 0,
        'foodInBattle/right': 0,
        // During military phase it will contain actions made by player to be replayed by other
        actionsPerformed: []
      };

      const state = Object.assign({}, initPlayerState);

      const getters = {
        color: state => {
          return state.color;
        },
        draftIds: state => {
          return state.draftHeroesIds;
        },
        twelveHeroes: state => {
          return state.twelveHeroes;
        }
      };

      const mutations = {
        SET_FULL_PLAYER_STATE: (state, payload) => {
          Object.assign(state, payload);
        },
        INIT_PLAYER_STATE: state => {
          Object.assign(state, initPlayerState);
        }
      };

      const actions = {
        submitFaction: ({ commit, state }, payload) => {
          commit(
            'game/SET_WAITING_FOR',
            { color: state.color, value: false },
            { root: true }
          );
          socketService
            .endTurn({ color: state.color, faction: payload })
            .catch(err => {
              console.log('Error sending data : ', err);
              //Unvalid submit
              commit(
                'game/SET_WAITING_FOR',
                { color: state.color, value: true },
                { root: true }
              );
            });
        }
      };
      return {
        namespace: true,
        state,
        getters,
        mutations,
        actions
      };
    }