PageSourceSearch

https://spel-taipei-html.pages.dev/js/CMain.js

js spel-taipei-html.pages.dev collected 2026-10-03 05:58:30 UTC 8,513 bytes, 271 lines download raw bytes

1function CMain(oData){
2    var _bUpdate;
3    var _iCurResource = 0;
4    var RESOURCE_TO_LOAD = 0;
5    var _iState = STATE_LOADING;
6    
7    var _oData;
8    var _oPreloader;
9    var _oMenu;
10    var _oLevelMenu;
11    var _oHelp;
12    var _oGame;
13
14    this.initContainer = function(){
15        var canvas = document.getElementById("canvas");
16        s_oStage = new createjs.Stage(canvas);       
17        createjs.Touch.enable(s_oStage);
18        
19        s_bMobile = jQuery.browser.mobile;
20        if(s_bMobile === false){
21            s_oStage.enableMouseOver(20);  
22        }
23        
24        
25        s_iPrevTime = new Date().getTime();
26
27        createjs.Ticker.setFPS(35);
28
29        createjs.Ticker.on("tick",this._update);
30        
31        if(navigator.userAgent.match(/Windows Phone/i)){
32            DISABLE_SOUND_MOBILE = true;
33        }
34		
35        s_oSpriteLibrary  = new CSpriteLibrary();
36
37        //ADD PRELOADER
38        _oPreloader = new CPreloader();
39    };
40
41    this.clearLocalStorage = function(){
42        if(s_bStorageAvailable){
43            localStorage.clear();
44        }
45    };
46    
47    this.preloaderReady = function(){
48        jQuery.getJSON("layouts.json", this.onLoadedJSON); 
49        _bUpdate = true;
50    };
51    
52    this.soundLoaded = function(){
53        _iCurResource++;
54        var iPerc = Math.floor(_iCurResource/RESOURCE_TO_LOAD *100);
55
56        _oPreloader.refreshLoader(iPerc);
57        if(_iCurResource === RESOURCE_TO_LOAD){
58            this._allResourcesLoaded();
59        }
60    };
61    
62    this._initSounds = function(){
63         if (!createjs.Sound.initializeDefaultPlugins()) {
64             return;
65         }
66	
67        if(navigator.userAgent.indexOf("Opera")>0 || navigator.userAgent.indexOf("OPR")>0){
68                createjs.Sound.alternateExtensions = ["mp3"];
69                createjs.Sound.addEventListener("fileload", createjs.proxy(this.soundLoaded, this));
70
71                createjs.Sound.registerSound("./sounds/click.ogg", "click");
72                createjs.Sound.registerSound("./sounds/win.ogg", "win");
73                createjs.Sound.registerSound("./sounds/game_over.ogg", "game_over");
74                createjs.Sound.registerSound("./sounds/matching.ogg", "matching");
75        }else{
76                createjs.Sound.alternateExtensions = ["ogg"];
77                createjs.Sound.addEventListener("fileload", createjs.proxy(this.soundLoaded, this));
78
79                createjs.Sound.registerSound("./sounds/click.mp3", "click");
80                createjs.Sound.registerSound("./sounds/win.mp3", "win");
81                createjs.Sound.registerSound("./sounds/game_over.mp3", "game_over");
82                createjs.Sound.registerSound("./sounds/matching.mp3", "matching");
83        }
84        
85        RESOURCE_TO_LOAD += 4;
86        
87    };
88    
89    this._loadImages = function(){
90        s_oSpriteLibrary.init( this._onImagesLoaded,this._onAllImagesLoaded, this );
91
92        s_oSpriteLibrary.addSprite("but_play","./sprites/but_play.png");
93        s_oSpriteLibrary.addSprite("but_continue","./sprites/but_continue.png");
94        s_oSpriteLibrary.addSprite("but_generic_small","./sprites/but_generic_small.png");
95        s_oSpriteLibrary.addSprite("but_exit","./sprites/but_exit.png");
96        s_oSpriteLibrary.addSprite("bg_menu","./sprites/bg_menu.jpg");
97        s_oSpriteLibrary.addSprite("audio_icon","./sprites/audio_icon.png");
98        s_oSpriteLibrary.addSprite("msg_box","./sprites/msg_box.png");
99        s_oSpriteLibrary.addSprite("but_level","./sprites/but_level.png");
100        s_oSpriteLibrary.addSprite("bg_menu_level","./sprites/bg_menu_level.jpg");
101        s_oSpriteLibrary.addSprite("arrow_left","./sprites/arrow_left.png");
102        s_oSpriteLibrary.addSprite("arrow_right","./sprites/arrow_right.png");
103        s_oSpriteLibrary.addSprite("logo_ctl","./sprites/logo_ctl.png");
104        s_oSpriteLibrary.addSprite("but_credits","./sprites/but_credits.png");
105        s_oSpriteLibrary.addSprite("but_exit_small","./sprites/but_exit_small.png");
106        s_oSpriteLibrary.addSprite("but_fullscreen","./sprites/but_fullscreen.png");
107        s_oSpriteLibrary.addSprite("tiles","./sprites/tiles.png");
108        s_oSpriteLibrary.addSprite("selection","./sprites/selection.png");
109        s_oSpriteLibrary.addSprite("bg_game","./sprites/bg_game.jpg");
110        s_oSpriteLibrary.addSprite("but_yes","./sprites/but_yes.png");
111        s_oSpriteLibrary.addSprite("but_no","./sprites/but_no.png");
112        s_oSpriteLibrary.addSprite("panel_bg","./sprites/panel_bg.png");
113        s_oSpriteLibrary.addSprite("but_restart","./sprites/but_restart.png");
114        s_oSpriteLibrary.addSprite("but_shuffle","./sprites/but_shuffle.png");
115        s_oSpriteLibrary.addSprite("but_hint","./sprites/but_hint.png");
116
117        var aLevelNames = s_oLevelSettings.getLayoutNames();
118        for(var i=0;i<aLevelNames.length;i++){
119            s_oSpriteLibrary.addSprite("but_level_"+i,"./sprites/but_level_"+aLevelNames[i]+".png");
120        }
121        RESOURCE_TO_LOAD += s_oSpriteLibrary.getNumSprites();
122
123        s_oSpriteLibrary.loadSprites();
124    };
125    
126    this._onImagesLoaded = function(){
127        _iCurResource++;
128
129        var iPerc = Math.floor(_iCurResource/RESOURCE_TO_LOAD *100);
130
131        _oPreloader.refreshLoader(iPerc);
132        if(_iCurResource === RESOURCE_TO_LOAD){
133            this._allResourcesLoaded();
134        }
135    };
136    
137    this._onAllImagesLoaded = function(){
138        
139    };
140    
141    this.onAllPreloaderImagesLoaded = function(){
142        this._loadImages();
143    };
144    
145    this._allResourcesLoaded = function(){
146        _oPreloader.unload();
147        
148        try{
149            saveItem("ls_available","ok");
150        }catch(evt){
151            // localStorage not defined
152            s_bStorageAvailable = false;
153        }
154        
155        
156        if (!isIOS()) {
157            if (DISABLE_SOUND_MOBILE === false || s_bMobile === false) {
158                s_oSoundTrack = createjs.Sound.play("soundtrack", {loop: -1});
159            }
160        }
161        
162        s_oMain.gotoMenu();
163    };
164    
165    this.onLoadedJSON = function (oData) {
166        
167        s_oLevelSettings = new CLevelSettings(oData); 
168        
169        if(DISABLE_SOUND_MOBILE === false || s_bMobile === false){
170            s_oMain._initSounds();
171        }
172        
173        s_oMain._loadImages();
174    };
175    
176    this.stopUpdate = function(){
177        _bUpdate = false;
178        createjs.Ticker.paused = true;
179        $("#block_game").css("display","block");
180	createjs.Sound.setMute(true);
181        
182    };
183
184    this.startUpdate = function(){
185        s_iPrevTime = new Date().getTime();
186        _bUpdate = true;
187        createjs.Ticker.paused = false;
188        $("#block_game").css("display","none");
189        
190        if(s_bAudioActive){
191            createjs.Sound.setMute(false);
192        }
193    };
194    
195    this.gotoMenu = function(){
196        _oMenu = new CMenu();
197        _iState = STATE_MENU;
198    };
199    
200    this.gotoLevelMenu = function(){
201        _oLevelMenu = new CLevelMenu();
202    };
203    
204    this.gotoGame = function(iLevel,szName){
205        _oGame = new CGame(iLevel,szName);   
206							
207        _iState = STATE_GAME;
208    };
209    
210    this.gotoHelp = function(){
211        _oHelp = new CHelp();
212        _iState = STATE_HELP;
213    };
214    
215    this.levelSelected = function(iLevel,szName){
216        this.gotoGame(iLevel,szName);
217    };
218    
219    this._update = function(event){
220        if(_bUpdate === false){
221                return;
222        }
223        var iCurTime = new Date().getTime();
224        s_iTimeElaps = iCurTime - s_iPrevTime;
225        s_iCntTime += s_iTimeElaps;
226        s_iCntFps++;
227        s_iPrevTime = iCurTime;
228        
229        if ( s_iCntTime >= 1000 ){
230            s_iCurFps = s_iCntFps;
231            s_iCntTime-=1000;
232            s_iCntFps = 0;
233        }
234                
235        if(_iState === STATE_GAME){
236            _oGame.update();
237        }
238        
239        if(s_oStage !== undefined){
240            s_oStage.update(event);
241        }
242    };
243    
244    s_oMain = this;
245    
246    _oData = oData;
247    BONUS_TIME = oData.bonus_time;
248    HINT_PENALTY = oData.hint_penalty;
249
250    ENABLE_FULLSCREEN = oData.fullscreen;
251    ENABLE_CHECK_ORIENTATION = oData.check_orientation;
252    
253    this.initContainer();
254}
255
256var s_bMobile;
257var s_bAudioActive = true;
258var s_iCntTime = 0;
259var s_iTimeElaps = 0;
260var s_iPrevTime = 0;
261var s_iCntFps = 0;
262var s_iCurFps = 0;
263
264var s_oSoundTrack = null;
265var s_oStage;
266var s_oMain = null;
267var s_oSpriteLibrary;
268var s_oLevelSettings;
269
270var s_bFullscreen = false;
271var s_bStorageAvailable = true;

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.