'use strict'

/**
 * Dependencies
 * @ignore
 */

/**
 * Module Dependencies
 * @ignore
 */
const Store = require('../common/Store')
const SystemReducer = require('./SystemReducer')

/**
 * Managers
 * @ignore
 */
const SocketManager = require('./SocketManager')
const GameManager = require('../game')
const UserManager = require('../user')

/**
 * Game Manager
 * @class
 */
class SystemManager extends Store {

  /**
   * constructor
   */
  constructor (server) {
    super()
    this.server = server
    this.socketManager = new SocketManager(this)
    this.gameManager = new GameManager(this)
    this.userManager = new UserManager(this)
  }

  /**
   * reducers
   */
  static get reducer () {
    return SystemReducer
  }
}

/**
 * Export
 * @ignore
 */
module.exports = SystemManager

@@ -329,24 +329,120 @@
 e('../user')
+%0Aconst TicketManager = require('../ticket')%0Aconst AchievementManager = require('../achievement')
 %0A%0A/**%0A * Gam
@@ -732,16 +732,124 @@
 r(this)%0A
+    this.ticketManager = new TicketManager(this)%0A    this.achievementManager = new AchievementManager(this)%0A
   %7D%0A%0A  /

add additional managers