// Entry point
/* jshint unused:false */
//@include:global
//@include:loc
//@include:types
//@include:OptionManager
//@include:ActionHandler
//@include:Card
//@include:ConnectionManager
//@include:UI
//@include:Field
//@include:Game
//@include:State
//@include:ScaleManager
//@include:GameInfo
//@include:Sequencer
//@include:SkinManager
//@include:MessageFeed
//@include:Badge
// Глобальные модули
var gameOptions,
actionHandler,
gameInfo,
ui,
skinManager,
cardControl,
connection,
game;
// Глобальные модули, создаваемые в game.initialize
var fieldManager,
cardEmitter,
cardManager;
// Создаем модули, когда Phaser.Device инициализировался,
// чтобы знать на каком типе девайса запущена игра
Phaser.Device.whenReady(function(){
var appName = 'durak';
var containerName = 'cardgame';
/**
* Менеджер настроек.
* @global
* @type {OptionManager}
*/
gameOptions = new OptionManager(appName, containerName);
/**
* Менеджер игроков.
* @type {GameInfo}
* @global
*/
gameInfo = new GameInfo();
/**
* Менеджер интерфейса.
* @type {UI}
* @global
*/
ui = new UI();
/**
* Менеджер скинов.
* @type {SkinManager}
* @global
*/
skinManager = new SkinManager(gameOptions.get('appearance_skin'));
/**
* Контроллер карт
* @type {CardControl}
* @global
*/
cardControl = new CardControl(gameOptions.get('debug_control'));
/**
* Менеджер соединения с сервером
* @type {ConnectionManager}
* @global
*/
connection = new ConnectionManager(serverMethods, clientMethods, 'menu', gameOptions.get('debug_connection'));
/**
* Обработчик действий сервера.
* @type {ActionHandler}
* @global
*/
actionHandler = new ActionHandler();
actionHandler.addChannel('primary', CHANNEL_TYPE.RESPOND, 'play', reactPrimary);
actionHandler.addChannel('secondary', CHANNEL_TYPE.INTERRUPT, 'play', reactSecondary);
actionHandler.addChannel('possible_actions', CHANNEL_TYPE.USER_INVOLVED, 'play');
actionHandler.addChannel('extra', CHANNEL_TYPE.NO_ACTION, 'play', reactExtra);
actionHandler.addChannel('queue', CHANNEL_TYPE.INTERRUPT, 'queue', reactQueue, ['menu', 'play', 'credits']);
actionHandler.addChannel('menu', CHANNEL_TYPE.NO_ACTION, 'menu', reactMenu, ['credits']);
actionHandler.addChannel('system', CHANNEL_TYPE.NO_ACTION, null, reactSystem);
/**
* Игра
* @type {Game}
* @global
*/
game = new Game(containerName, gameOptions.get('game_speed'), gameOptions.get('debug_game'));
// Phaser плагины
game.add.plugin(PhaserInput.Plugin);
// Состояния игры
game.state.add(stateMenu, false, false);
game.state.add(statePlay, false, false);
game.state.add(stateQueue, false, false);
game.state.add(stateCredits, false, false);
// Запускаем загрузку игры
game.state.add(stateBoot, true, true);
// Останавливаем анимацию загрузки из index.html
window.gameCreated = true;
});