function CMain(oData){ var _bUpdate; var _iCurResource = 0; var RESOURCE_TO_LOAD = 0; var _iState = STATE_LOADING; var _oData; var _oPreloader; var _oMenu; var _oHelp; var _oGame; this.initContainer = function(){ s_oStage = new createjs.Stage("canvas"); createjs.Touch.enable(s_oStage, true); s_bMobile = isMobile(); if(s_bMobile === false){ s_oStage.enableMouseOver(20); } s_iPrevTime = new Date().getTime(); createjs.Ticker.framerate = 30; createjs.Ticker.addEventListener("tick", this._update); if(navigator.userAgent.match(/Windows Phone/i)){ DISABLE_SOUND_MOBILE = true; } s_oSpriteLibrary = new CSpriteLibrary(); //ADD PRELOADER _oPreloader = new CPreloader(); _bUpdate = true; }; this.soundLoaded = function(){ _iCurResource++; var iPerc = Math.floor(_iCurResource/RESOURCE_TO_LOAD *100); _oPreloader.refreshLoader(iPerc); }; this._initSounds = function(){ Howler.mute(!s_bAudioActive); s_aSoundsInfo = new Array(); s_aSoundsInfo.push({path: './sounds/',filename:'card',loop:false,volume:1, ingamename: 'card'}); s_aSoundsInfo.push({path: './sounds/',filename:'win',loop:false,volume:1, ingamename: 'win'}); s_aSoundsInfo.push({path: './sounds/',filename:'game_over',loop:false,volume:1, ingamename: 'game_over'}); s_aSoundsInfo.push({path: './sounds/',filename:'next_level',loop:false,volume:1, ingamename: 'next_level'}); s_aSoundsInfo.push({path: './sounds/',filename:'right',loop:false,volume:1, ingamename: 'right'}); RESOURCE_TO_LOAD += s_aSoundsInfo.length; s_aSounds = new Array(); for(var i=0; i0 && szId === s_aSounds[s_aSoundsInfo[i].ingamename]._sounds[0]._id){ s_oMain.tryToLoadSound(s_aSoundsInfo[i], true); break; }else{ document.querySelector("#block_game").style.display = "none"; } } }, onplayerror: function(szId) { for(var i=0; i < s_aSoundsInfo.length; i++){ if ( szId === s_aSounds[s_aSoundsInfo[i].ingamename]._sounds[0]._id){ s_aSounds[s_aSoundsInfo[i].ingamename].once('unlock', function() { s_aSounds[s_aSoundsInfo[i].ingamename].play(); }); break; } } } }); }, (bDelay ? 200 : 0) ); }; this._loadImages = function(){ s_oSpriteLibrary.init( this._onImagesLoaded,this._onAllImagesLoaded, this ); s_oSpriteLibrary.addSprite("but_menu_bg","./sprites/but_menu_bg.png"); s_oSpriteLibrary.addSprite("but_exit","./sprites/but_exit.png"); s_oSpriteLibrary.addSprite("bg_menu","./sprites/bg_menu.jpg"); s_oSpriteLibrary.addSprite("audio_icon","./sprites/audio_icon.png"); s_oSpriteLibrary.addSprite("bg_1","./sprites/bg_1.jpg"); s_oSpriteLibrary.addSprite("bg_2","./sprites/bg_2.jpg"); s_oSpriteLibrary.addSprite("bg_3","./sprites/bg_3.jpg"); s_oSpriteLibrary.addSprite("bg_4","./sprites/bg_4.jpg"); s_oSpriteLibrary.addSprite("bg_5","./sprites/bg_5.jpg"); s_oSpriteLibrary.addSprite("bg_6","./sprites/bg_6.jpg"); s_oSpriteLibrary.addSprite("card_spritesheet","./sprites/card_spritesheet.png"); s_oSpriteLibrary.addSprite("msg_box","./sprites/msg_box.png"); s_oSpriteLibrary.addSprite("but_credits","./sprites/but_credits.png"); s_oSpriteLibrary.addSprite("logo_ctl","./sprites/logo_ctl.png"); s_oSpriteLibrary.addSprite("but_fullscreen","./sprites/but_fullscreen.png"); RESOURCE_TO_LOAD += s_oSpriteLibrary.getNumSprites(); s_oSpriteLibrary.loadSprites(); }; this._onImagesLoaded = function(){ _iCurResource++; var iPerc = Math.floor(_iCurResource/RESOURCE_TO_LOAD *100); _oPreloader.refreshLoader(iPerc); }; this._onAllImagesLoaded = function(){ }; this.preloaderReady = function(){ this._loadImages(); if(DISABLE_SOUND_MOBILE === false || s_bMobile === false){ this._initSounds(); } _bUpdate = true; }; this._onRemovePreloader = function(){ _oPreloader.unload(); this.gotoMenu(); }; this.gotoMenu = function(){ _oMenu = new CMenu(); _iState = STATE_MENU; }; this.gotoGame = function(){ _oGame = new CGame(_oData); _iState = STATE_GAME; }; this.gotoHelp = function(){ _oHelp = new CHelp(); _iState = STATE_HELP; }; this.stopUpdate = function(){ _bUpdate = false; createjs.Ticker.paused = true; $("#block_game").css("display","block"); if(DISABLE_SOUND_MOBILE === false || s_bMobile === false){ Howler.mute(true); } }; this.startUpdate = function(){ s_iPrevTime = new Date().getTime(); _bUpdate = true; createjs.Ticker.paused = false; $("#block_game").css("display","none"); if(DISABLE_SOUND_MOBILE === false || s_bMobile === false){ if(s_bAudioActive){ Howler.mute(false); } } }; this._update = function(event){ if(_bUpdate === false){ return; } var iCurTime = new Date().getTime(); s_iTimeElaps = iCurTime - s_iPrevTime; s_iCntTime += s_iTimeElaps; s_iCntFps++; s_iPrevTime = iCurTime; if ( s_iCntTime >= 1000 ){ s_iCurFps = s_iCntFps; s_iCntTime-=1000; s_iCntFps = 0; } if(_iState === STATE_GAME){ _oGame.update(); } s_oStage.update(event); }; s_oMain = this; _oData = oData; ENABLE_FULLSCREEN = oData.fullscreen; ENABLE_CHECK_ORIENTATION = oData.check_orientation; s_bAudioActive = oData.audio_enable_on_startup; TIME_SHOW_NO_MATCH = oData.time_showing_card; this.initContainer(); } var s_bMobile; var s_bAudioActive = true; var s_iCntTime = 0; var s_iTimeElaps = 0; var s_iPrevTime = 0; var s_iCntFps = 0; var s_iCurFps = 0; var s_oDrawLayer; var s_oStage; var s_oMain; var s_oSpriteLibrary; var s_oGameSettings; var s_bFullscreen = false; var s_aSoundsInfo; var s_aSounds;