GameState.js 57 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197
  1. var myPlayLevel = "";
  2. (function(){
  3. // var gameInst = null;
  4. var isDebug = false;
  5. var mySelf = null;
  6. FZ.Game.GameState = new (FZ.newClass({
  7. StateName: FZ.StateDefs.GAME_STATE_GAME_IN,
  8. CUR_UI_DEFS: ["gameIn_BG", "TIME_EMPTY", "TIME__FULL", "NUM_LEVEL_10","NUM_LEVEL_0", "ARROW_UP_DOWN", "ARROW_LEFT_RIGHT", "ARROW_DOWN", "ARROW_RIGHT", "ARROW_LEFT", "ARROW_UP",
  9. "score_1", "score_2", "score_3", "score_4", "score_5"],
  10. UI_ARROW_START_INDEX: 5,
  11. UI_ARROW_KINDS: 6,
  12. UI_SCORE_START_INDEX: 11,
  13. UI_TIME_BAR_INDEX: 2,
  14. UI_LEVEL_TEN_INDEX: 3,
  15. UI_LEVEL_NUM_INDEX: 4,
  16. //BTN_HOME_INDEX: 0,
  17. BTN_HINT_INDEX: 0,
  18. BTN_PAUSE_INDEX: 1,
  19. BTN_START_INDEX: 2,
  20. // BTN_SOUND_INDEX: 3,
  21. CUR_BTN_DEFS: [/*["BTN_MAIN_MENU_ICON", "BTN_MAIN_MENU_ICON_TOUCH"], */["BTN_HINT", "BTN_HINT_TOUCH"], ["BTN_PAUSE", "BTN_PAUSE_TOUCH"]/*, ["BTN_SOUND", "BTN_SOUND_TOUCH"],*/ ],
  22. CUR_BTN_ANDROID_DEFS: [/*["BTN_MAIN_MENU_ICON", "BTN_MAIN_MENU_ICON_TOUCH"], */["BTN_HINT", "BTN_HINT_TOUCH"], ["BTN_PAUSE", "BTN_PAUSE_TOUCH"], ],
  23. CUR_SWITCH_DEFS: ["BTN_GAME_BACK", "BTN_GAME_BACK_TOUCH"],
  24. // SOUND_SWITCH_DEFS: ["BTN_SOUND_OFF", "BTN_SOUND_OFF_TOUCH"],
  25. m_isNoMatch: false,
  26. m_label_list: null,
  27. m_levelStart: false,
  28. m_diamondMgr: null,
  29. m_load_ui: false,
  30. // m_start_time : 0,
  31. m_curLevel_div: null,
  32. m_curLevel10_div: null,
  33. m_next_state: "",
  34. m_slide_menu: null,
  35. m_hint_num_div: null,
  36. m_pause_div: null,
  37. m_str_nomatch_div: null,
  38. m_time_bar_div: null,
  39. m_time_bar_w: 0,
  40. m_call_tStart: null,
  41. m_call_mClick: null,
  42. m_call_time: null,
  43. m_level_usedTime: 0,
  44. levelStartTime: 0,
  45. levelCurrentTime: 0,
  46. levelPauseStartTime: 0,
  47. levelPauseEndTime: 0,
  48. levelPauseTime: 0,
  49. curLevelUsedTime: 0,
  50. m_showPage:false,
  51. m_gamePause: false,
  52. pageHiddin: false,
  53. STR_SCORE_RECT: [120, 28, 50, 20],
  54. STR_TIME_RECT: [120, 48, 50, 20],
  55. COLOR_YELLOW:"#F0D751",
  56. COLOR_BROWN:"#B97F00",
  57. COLOR_ORANGE:"#FFC72A",
  58. COLOR_PAUSE:"#c2fa41",
  59. COLOR_NOMATCH:"#ffe16f",
  60. LABEL_TEXT_SIZE_SMALL:12,
  61. LABEL_TEXT_SIZE_MIDDLE:18,
  62. LABEL_TEXT_SIZE_LARGE:24,
  63. LABEL_PAUSE_SIZE:30,
  64. createLevelTextSprite: function(x, y, w, h,text, color,size){
  65. var spr = document.createElement("div");
  66. var lineH = size;
  67. spr.style.position = "absolute";
  68. spr.style.width = w +"px";
  69. spr.style.height = h + "px";
  70. spr.style.left = x + "px";
  71. spr.style.top = y+ "px";
  72. spr.style.textAlign="center";
  73. spr.style.lineHeight= h + "px";
  74. spr.style.fontFamily="Arial";
  75. spr.style.fontWeight="bold";
  76. spr.style.fontSize=lineH+"px";
  77. //add shadow from up down left and right
  78. spr.style.textShadow="-1px -1px 1px #ffffff, 1px 1px 1px #ffffff, 1px -1px 1px #ffffff, -1px 1px 1px #ffffff ";
  79. spr.style.color=color;
  80. spr.innerHTML=text;
  81. // spr.style.zIndex = 5;
  82. return spr;
  83. },
  84. createLabelTextSprite_: function(divSprite,text, color,size){
  85. var spr = divSprite;
  86. var h = size;
  87. spr.style.textAlign="center";
  88. spr.style.lineHeight= spr.style.height;
  89. spr.style.fontFamily="Arial";
  90. spr.style.fontWeight="bold";
  91. spr.style.fontSize=Math.round(h)+"px";
  92. //add shadow from up down left and right
  93. spr.style.textShadow="-1px -1px 1px #FFFFFF, 1px 1px 1px #FFFFFF, 1px -1px 1px #FFFFFF, -1px 1px 1px #FFFFFF ";
  94. spr.style.color=color;
  95. spr.innerHTML=text;
  96. },
  97. createPauseTextSprite: function(divSprite,text, color,size){
  98. var spr = divSprite;
  99. var h = size;
  100. spr.style.textAlign = "center";
  101. spr.style.lineHeight = Math.round(spr.style.height*10/36);
  102. spr.style.fontFamily = "Arial";
  103. spr.style.fontWeight = "bolder";
  104. spr.style.textIndent = -20+ "px";
  105. spr.style.paddingTop = Math.round(spr.style.height*10/36);
  106. spr.style.fontSize = Math.round(h) + "px";
  107. // add shadow from up down left and right
  108. spr.style.textShadow = "-2px -2px 2px #B97F00, 2px 2px 2px #B97F00, 2px -2px 2px #B97F00, -2px 2px 2px #B97F00 ";
  109. spr.style.color = color;
  110. spr.innerHTML = text;
  111. },
  112. createLabelTextSprite: function(divSprite,text, color,size){
  113. var spr = divSprite;
  114. var h = size;
  115. spr.style.textAlign = "center";
  116. spr.style.lineHeight = spr.style.height;
  117. spr.style.fontFamily = "Arial";
  118. spr.style.fontWeight = "bold";
  119. spr.style.fontSize = Math.round(h) + "px";
  120. // add shadow from up down left and right
  121. spr.style.textShadow = "-2px -2px 2px #B97F00, 2px 2px 2px #B97F00, 2px -2px 2px #B97F00, -2px 2px 2px #B97F00 ";
  122. spr.style.color = color;
  123. spr.innerHTML = text;
  124. },
  125. createStrDiv : function(rect) {
  126. var div = document.createElement("div");
  127. div.style.position = "absolute";
  128. div.style.width = rect[2] + "px";
  129. div.style.height = rect[3] + "px";
  130. div.style.left = rect[0] + "px";
  131. div.style.top = rect[1] + "px";
  132. div.style.color = "#fff";
  133. div.style.fontSize = FZ.GameDefs.STATS_FONT_SIZE + "px";
  134. div.style.fontFamily = "Arial";
  135. div.style.lineHeight = rect[3] + "px";
  136. div.style.textAlign = "left";
  137. this.m_main_div.appendChild(div);
  138. return div;
  139. },
  140. pause: function(){
  141. clearTimeout(this.m_timer);
  142. },
  143. resume: function(){
  144. var statename = null;
  145. if (arguments.length > 0) {
  146. statename = arguments[0];
  147. }
  148. // FZ.PrintLog(arguments[0] + " ismainmenu = " + arguments[1]);
  149. if (null !== this.m_diamondMgr) {
  150. this.m_time_bar_div.style.display = "inline";
  151. if (FZ.StateDefs.GAME_STATE_OVER == statename) {
  152. this.m_time_bar_div.style.width = this.m_time_bar_w + "px";
  153. this.m_btn_list[this.BTN_HINT_INDEX].setEnable(true);
  154. this.m_diamondMgr.initAllPets(true);
  155. this.m_diamondMgr.showPets();
  156. this.levelStartTime = (new Date()).getTime();
  157. this.levelCurrentTime = this.levelStartTime;
  158. this.levelPauseStartTime = this.levelStartTime;
  159. this.levelPauseEndTime = this.levelStartTime;
  160. this.levelPauseTime = 0;
  161. this.curLevelUsedTime = 0;
  162. this.m_btn_list[this.BTN_HINT_INDEX].m_div.style.backgroundImage = "url(imgs/" + this.m_btn_list[this.BTN_HINT_INDEX].m_img_list[0] + ")";
  163. this.m_game_bg_div = this.m_ui_list[1];
  164. this.m_diamondMgr.setHintCount(FZ.GameBase.SaveObject.m_hint);
  165. this.m_diamondMgr.setLevel(FZ.GameBase.SaveObject.m_cur_level);
  166. var hint = this.m_diamondMgr.getHintCount();
  167. this.m_hint_num_div[0].style.visibility = "visible";
  168. this.m_hint_num_div[1].style.visibility = "visible";
  169. if (hint >= 10) {
  170. var num = Math.floor(hint % 10);
  171. this.m_hint_num_div[0].style.backgroundImage = "url(imgs/number_hint_" + num + ".png )";
  172. num = Math.floor(hint / 10);
  173. this.m_hint_num_div[1].style.backgroundImage = "url(imgs/number_hint_" + num + ".png )";
  174. }
  175. else
  176. if (hint === 0) {
  177. this.m_hint_num_div[0].style.visibility = "hidden";
  178. this.m_hint_num_div[1].style.visibility = "hidden";
  179. }
  180. else {
  181. this.m_hint_num_div[1].style.visibility = "hidden";
  182. this.m_hint_num_div[0].style.backgroundImage = "url(imgs/number_hint_" + hint + ".png )";
  183. }
  184. var curLevel = this.m_diamondMgr.getLevel();
  185. var info = null;
  186. info = FZ.getImgInfo("NUM_LEVEL_" + curLevel);
  187. this.m_curLevel10_div.style.backgroundImage = "url(imgs/NUM_LEVEL_0.png )";
  188. this.m_curLevel_div.style.backgroundImage = "url(imgs/" + info.fileURL + ")";
  189. this.m_diamondMgr.setParent(this.m_main_div);
  190. }
  191. else
  192. if (FZ.StateDefs.GAME_STATE_NEXT_LEVEL == statename) {
  193. this.m_btn_list[this.BTN_HINT_INDEX].m_div.style.backgroundImage = "url(imgs/" + this.m_btn_list[this.BTN_HINT_INDEX].m_img_list[0] + ")";
  194. this.m_time_bar_div.style.width = this.m_time_bar_w + "px";
  195. this.m_btn_list[this.BTN_HINT_INDEX].setEnable(true);
  196. this.m_diamondMgr.initAllPets(true);
  197. this.m_diamondMgr.hidePets();
  198. this.levelStartTime = (new Date()).getTime();
  199. this.levelCurrentTime = this.levelStartTime;
  200. this.levelPauseStartTime = this.levelStartTime;
  201. this.levelPauseEndTime = this.levelStartTime;
  202. this.levelPauseTime = 0;
  203. this.curLevelUsedTime = 0;
  204. this.m_hint_num_div[0].style.visibility = "visible";
  205. this.m_hint_num_div[1].style.visibility = "visible";
  206. var hint = FZ.GameBase.SaveObject.m_hint;
  207. if (hint >= 10) {
  208. var num = Math.floor(hint % 10);
  209. this.m_hint_num_div[0].style.backgroundImage = "url(imgs/number_hint_" + num + ".png )";
  210. num = Math.floor(hint / 10);
  211. this.m_hint_num_div[1].style.backgroundImage = "url(imgs/number_hint_" + num + ".png )";
  212. }
  213. else
  214. if (hint === 0) {
  215. this.m_hint_num_div[0].style.visibility = "hidden";
  216. this.m_hint_num_div[1].style.visibility = "hidden";
  217. }
  218. else {
  219. this.m_hint_num_div[1].style.visibility = "hidden";
  220. this.m_hint_num_div[0].style.backgroundImage = "url(imgs/number_hint_" + hint + ".png )";
  221. }
  222. // this.m_diamondMgr.setScore(FZ.GameBase.SaveObject.m_total_score);
  223. this.m_diamondMgr.setLevel(FZ.GameBase.SaveObject.m_cur_level);
  224. this.m_diamondMgr.setHintCount(FZ.GameBase.SaveObject.m_hint);
  225. var curLevel = this.m_diamondMgr.getLevel();
  226. switch(curLevel){
  227. case 1:
  228. case 2:
  229. case 4:
  230. case 6:
  231. {
  232. this.m_levelStart = true;
  233. this.m_diamondMgr.showPets();
  234. for (var index = 0; index < this.UI_ARROW_KINDS; index++) {
  235. this.m_ui_list[this.UI_ARROW_START_INDEX + index].style.display = "none";
  236. }
  237. this.m_diamondMgr.setParent(this.m_main_div);
  238. break;
  239. }
  240. case 3:
  241. {
  242. this.m_levelStart = false;
  243. this.m_diamondMgr.hidePets();
  244. this.m_ui_list[this.UI_ARROW_START_INDEX].style.display = "inline";
  245. break;
  246. }
  247. case 5:
  248. {
  249. this.m_levelStart = false;
  250. this.m_diamondMgr.hidePets();
  251. this.m_ui_list[this.UI_ARROW_START_INDEX + 1].style.display = "inline";
  252. break;
  253. }
  254. case 7:
  255. {
  256. this.m_levelStart = false;
  257. this.m_diamondMgr.hidePets();
  258. this.m_ui_list[this.UI_ARROW_START_INDEX + 2].style.display = "inline";
  259. break;
  260. }
  261. case 8:
  262. {
  263. this.m_levelStart = false;
  264. this.m_diamondMgr.hidePets();
  265. this.m_ui_list[this.UI_ARROW_START_INDEX + 3].style.display = "inline";
  266. break;
  267. }
  268. case 9:
  269. {
  270. this.m_levelStart = false;
  271. this.m_diamondMgr.hidePets();
  272. this.m_ui_list[this.UI_ARROW_START_INDEX + 4].style.display = "inline";
  273. break;
  274. }
  275. case 10:
  276. {
  277. this.m_levelStart = false;
  278. this.m_diamondMgr.hidePets();
  279. this.m_ui_list[this.UI_ARROW_START_INDEX + 5].style.display = "inline";
  280. break;
  281. }
  282. default:
  283. {
  284. break;
  285. }
  286. }
  287. var info = null;
  288. info = FZ.getImgInfo("NUM_LEVEL_" + curLevel);
  289. if(curLevel === 10){
  290. this.m_curLevel_div.style.backgroundImage = "url(imgs/NUM_LEVEL_0.png)";
  291. this.m_curLevel_div.style.display = "inline";
  292. this.m_curLevel10_div.style.backgroundImage = "url(imgs/NUM_LEVEL_1.png )";
  293. this.m_curLevel10_div.style.display = "inline";
  294. }else{
  295. this.m_curLevel_div.style.backgroundImage = "url(imgs/" + info.fileURL + ")";
  296. this.m_curLevel_div.style.display = "inline";
  297. this.m_curLevel10_div.style.backgroundImage = "url(imgs/NUM_LEVEL_0.png)";
  298. this.m_curLevel10_div.style.display = "inline";
  299. }
  300. }
  301. else
  302. if (FZ.StateDefs.GAME_STATE_RESET == statename) {
  303. if (arguments.length > 1) {
  304. if (arguments[1] === "yes") {
  305. //hintDiv.value = "go to main menu!";
  306. // this.m_diamondMgr.setHintCount(FZ.GameBase.SaveObject.m_hint);
  307. // this.m_diamondMgr.setScore(FZ.GameBase.SaveObject.m_total_score);
  308. // this.m_diamondMgr.setLevel(FZ.GameBase.SaveObject.m_cur_level);
  309. // this.m_main_div.style.display = "none";
  310. this.m_next_state = FZ.StateDefs.GAME_STATE_MAINMEN;
  311. this.m_diamondMgr.saveLevel();
  312. setTimeout(function(){
  313. FZ.GameBase.switchToState(FZ.StateDefs.GAME_STATE_MAINMEN);
  314. }, 100);
  315. return;
  316. }
  317. else {
  318. this.levelPauseEndTime = (new Date()).getTime();
  319. this.levelPauseTime += this.levelPauseEndTime - this.levelPauseStartTime;
  320. this.m_diamondMgr.setParent(this.m_main_div);
  321. }
  322. }
  323. }
  324. }
  325. this.m_status = FZ.stateStatus.NORMAL;
  326. this.m_timer = setTimeout(FZ.Tools.bind(this, this.checkOver), 0);
  327. },
  328. setText: function(div, text){
  329. div.innerHTML="" + text;
  330. },
  331. preProcess: function(preState){
  332. mySelf = this;
  333. var index = 0;
  334. var ctx = null;
  335. var div = null;
  336. var info = null;
  337. var cloneInfo = null;
  338. var infoDown = null;
  339. //set current level
  340. var curLevel = FZ.GameBase.SaveObject.m_cur_level;
  341. var mySelf = this;
  342. if (curLevel === undefined || 0 === curLevel) { //set ui
  343. FZ.GameBase.SaveObject.m_cur_level = 1;
  344. FZ.GameBase.saveGame();
  345. }
  346. if (!this.m_load_ui) {
  347. this.m_pause_div = document.createElement("div");
  348. this.m_pause_div.style.zIndex = 200;
  349. info = FZ.getImgInfo("PAUSE_BG");
  350. FZ.GameBase.setCss(this.m_pause_div, info);
  351. this.m_main_div.appendChild(this.m_pause_div);
  352. this.m_pause_div.style.display = "none";
  353. this.textPauseDiv = document.createElement("div");
  354. this.textPauseDiv.style.width = 145 + "px";
  355. this.textPauseDiv.style.height = 35 + "px";
  356. this.textPauseDiv.style.left = 38 + "px";
  357. this.textPauseDiv.style.top = 95 + "px";
  358. this.textPauseDiv.style.position = "absolute";
  359. // this.m_ui_list.push(this.textPauseDiv);
  360. this.m_pause_div.appendChild(this.textPauseDiv);
  361. // this.m_main_div.appendChild(this.textPauseDiv);
  362. this.textPauseDiv.style.zIndex = 201;
  363. this.createPauseTextSprite(this.textPauseDiv,FZ.GameText.TEXT_PAUSED, this.COLOR_PAUSE,this.LABEL_PAUSE_SIZE);
  364. this.m_str_nomatch_div = document.createElement("div");
  365. this.m_str_nomatch_div.style.zIndex = 200;
  366. info = FZ.getImgInfo("NO_MORE_MATCHS");
  367. FZ.GameBase.setCss(this.m_str_nomatch_div, info);
  368. this.m_main_div.appendChild(this.m_str_nomatch_div);
  369. this.m_str_nomatch_div.style.display = "none";
  370. this.createLabelTextSprite(this.m_str_nomatch_div,FZ.GameText.TEXT_NO_MORE_MATCHES, this.COLOR_NOMATCH,this.LABEL_TEXT_SIZE_MIDDLE);
  371. var hintNum = FZ.GameBase.SaveObject.m_hint;
  372. this.m_hint_num_div = [];
  373. var len = FZ.AG.SearchSpecialPath.setNumDiv(this.m_hint_num_div, hintNum);
  374. while (len > 0) {
  375. this.m_main_div.appendChild(this.m_hint_num_div[len - 1]);
  376. len--;
  377. }
  378. this.createUIs(this.CUR_UI_DEFS);
  379. // this.createLabelTextSprite_(this.m_ui_list[2],"LEVEL","#fcfb00",12);
  380. var labelDiv = this.createLevelTextSprite(4,30,65,25,FZ.GameText.TEXT_LEVEL, "#792b0e",this.LABEL_TEXT_SIZE_MIDDLE);
  381. // this.m_ui_list.push(labelDiv);
  382. this.m_main_div.appendChild(labelDiv);
  383. for (var index = 0; index < this.UI_ARROW_KINDS; index++) {
  384. this.m_ui_list[this.UI_ARROW_START_INDEX + index].style.display = "none";
  385. }
  386. if (FZ.TargetMobile !== FZ.TARGET_DEF.ANDRIOD) {
  387. this.createBtns(this.CUR_BTN_DEFS, true);
  388. }
  389. else {
  390. this.createBtns(this.CUR_BTN_ANDROID_DEFS, true);
  391. // this.m_btn_list[this.BTN_HINT_INDEX].m_div.style.left = 184 + "px";
  392. }
  393. info = FZ.getImgInfo(this.CUR_SWITCH_DEFS[0]);
  394. cloneInfo = FZ.getImgInfo(this.CUR_SWITCH_DEFS[1]);
  395. this.m_btn_list[this.BTN_PAUSE_INDEX].setSwitchButton(info.fileURL, cloneInfo.fileURL);
  396. /*
  397. if (FZ.TargetMobile !== FZ.TARGET_DEF.ANDRIOD) {
  398. info = FZ.getImgInfo(this.SOUND_SWITCH_DEFS[0]);
  399. cloneInfo = FZ.getImgInfo(this.SOUND_SWITCH_DEFS[1]);
  400. this.m_btn_list[this.BTN_SOUND_INDEX].setSwitchButton(info.fileURL, cloneInfo.fileURL);
  401. }*/
  402. this.m_diamondMgr = new FZ.DiamondManager();
  403. this.m_diamondMgr.m_parent = this.m_main_div;
  404. this.m_diamondMgr.setBubble(false);
  405. FZ.DivManager.addChild(this.m_main_div);
  406. this.m_load_ui = true;
  407. }
  408. else {
  409. this.m_diamondMgr.setBubble(false);
  410. this.m_main_div.style.display = "inline";
  411. }
  412. // //the code just for test.
  413. // document.addEventListener("keyup", FZ.Tools.bindWithEvent(this, this.gamekeyup), false);
  414. this.m_curLevel_div = this.m_ui_list[this.UI_LEVEL_NUM_INDEX];
  415. this.m_curLevel10_div = this.m_ui_list[this.UI_LEVEL_TEN_INDEX];
  416. this.m_time_bar_div = this.m_ui_list[this.UI_TIME_BAR_INDEX];
  417. info = FZ.getImgInfo(this.CUR_UI_DEFS[this.UI_TIME_BAR_INDEX]);
  418. this.m_time_bar_w = info.w;
  419. this.m_time_bar_div.style.width = this.m_time_bar_w + "px";
  420. this.m_diamondMgr.setObserver(this);
  421. if ((FZ.StateDefs.GAME_STATE_MAINMEN === preState) ||
  422. (FZ.StateDefs.GAME_STATE_OVER === preState) ||
  423. (FZ.StateDefs.GAME_STATE_HELP === preState)) {
  424. if (FZ.GameBase.SaveObject.m_gamein === true) {
  425. this.m_diamondMgr.resumeLevel();
  426. var hint = FZ.GameBase.SaveObject.m_cur_hintCount;
  427. }
  428. else {
  429. this.m_diamondMgr.initAllPets(true);
  430. var hint = FZ.GameBase.SaveObject.m_hint;
  431. }
  432. this.m_diamondMgr.setHintCount(hint);
  433. this.m_btn_list[this.BTN_HINT_INDEX].setEnable(true);
  434. this.m_btn_list[this.BTN_HINT_INDEX].m_div.style.backgroundImage = "url(imgs/BTN_HINT.png )";
  435. this.m_hint_num_div[0].style.visibility = "visible";
  436. this.m_hint_num_div[1].style.visibility = "visible";
  437. if (hint >= 10) {
  438. var num = Math.floor(hint % 10);
  439. this.m_hint_num_div[0].style.backgroundImage = "url(imgs/number_hint_" + num + ".png )";
  440. num = Math.floor(hint / 10);
  441. this.m_hint_num_div[1].style.backgroundImage = "url(imgs/number_hint_" + num + ".png )";
  442. }
  443. else
  444. if (hint === 0) {
  445. this.m_btn_list[this.BTN_HINT_INDEX].m_div.style.backgroundImage = "url(imgs/BTN_HINT_GREY.png )";
  446. this.m_btn_list[this.BTN_HINT_INDEX].setEnable(false);
  447. this.m_hint_num_div[0].style.visibility = "hidden";
  448. this.m_hint_num_div[1].style.visibility = "hidden";
  449. }
  450. else {
  451. this.m_hint_num_div[1].style.visibility = "hidden";
  452. this.m_hint_num_div[0].style.backgroundImage = "url(imgs/number_hint_" + hint + ".png )";
  453. }
  454. this.m_diamondMgr.hidePets();
  455. }
  456. info = FZ.getImgInfo("NUM_LEVEL_" + FZ.GameBase.SaveObject.m_cur_level);
  457. if(FZ.GameBase.SaveObject.m_cur_level === 10){
  458. this.m_curLevel_div.style.backgroundImage = "url(imgs/NUM_LEVEL_0.png)";
  459. this.m_curLevel_div.style.display = "inline";
  460. this.m_curLevel10_div.style.backgroundImage = "url(imgs/NUM_LEVEL_1.png )";
  461. this.m_curLevel10_div.style.display = "inline";
  462. }else{
  463. this.m_curLevel_div.style.backgroundImage = "url(imgs/" + info.fileURL + ")";
  464. this.m_curLevel_div.style.display = "inline";
  465. this.m_curLevel10_div.style.backgroundImage = "url(imgs/NUM_LEVEL_0.png)";
  466. this.m_curLevel10_div.style.display = "inline";
  467. }
  468. if (FZ.GameBase.SaveObject.m_gamein === true) {
  469. this.m_levelStart = true;
  470. this.curLevelUsedTime = FZ.GameBase.SaveObject.m_level_usedTime;
  471. this.m_diamondMgr.showPets();
  472. for (var index = 0; index < this.UI_ARROW_KINDS; index++) {
  473. this.m_ui_list[this.UI_ARROW_START_INDEX + index].style.display = "none";
  474. }
  475. this.m_diamondMgr.setParent(this.m_main_div);
  476. }
  477. else {
  478. this.curLevelUsedTime = 0;
  479. this.m_diamondMgr.setLevel(FZ.GameBase.SaveObject.m_cur_level);
  480. curLevel = this.m_diamondMgr.getLevel();
  481. switch(curLevel){
  482. case 1:
  483. case 2:
  484. case 4:
  485. case 6:
  486. {
  487. this.m_levelStart = true;
  488. this.m_diamondMgr.showPets();
  489. for (var index = 0; index < this.UI_ARROW_KINDS; index++) {
  490. this.m_ui_list[this.UI_ARROW_START_INDEX + index].style.display = "none";
  491. }
  492. this.m_diamondMgr.setParent(this.m_main_div);
  493. break;
  494. }
  495. case 3:
  496. {
  497. this.m_levelStart = false;
  498. this.m_diamondMgr.hidePets();
  499. this.m_ui_list[this.UI_ARROW_START_INDEX].style.display = "inline";
  500. break;
  501. }
  502. case 5:
  503. {
  504. this.m_levelStart = false;
  505. this.m_diamondMgr.hidePets();
  506. this.m_ui_list[this.UI_ARROW_START_INDEX + 1].style.display = "inline";
  507. break;
  508. }
  509. case 7:
  510. {
  511. this.m_levelStart = false;
  512. this.m_diamondMgr.hidePets();
  513. this.m_ui_list[this.UI_ARROW_START_INDEX + 2].style.display = "inline";
  514. break;
  515. }
  516. case 8:
  517. {
  518. this.m_levelStart = false;
  519. this.m_diamondMgr.hidePets();
  520. this.m_ui_list[this.UI_ARROW_START_INDEX + 3].style.display = "inline";
  521. break;
  522. }
  523. case 9:
  524. {
  525. this.m_levelStart = false;
  526. this.m_diamondMgr.hidePets();
  527. this.m_ui_list[this.UI_ARROW_START_INDEX + 4].style.display = "inline";
  528. break;
  529. }
  530. case 10:
  531. {
  532. this.m_levelStart = false;
  533. this.m_diamondMgr.hidePets();
  534. this.m_ui_list[this.UI_ARROW_START_INDEX + 5].style.display = "inline";
  535. break;
  536. }
  537. default:
  538. {
  539. break;
  540. }
  541. }
  542. }
  543. this.levelStartTime = (new Date()).getTime();
  544. this.levelCurrentTime = this.levelStartTime;
  545. this.levelPauseStartTime = this.levelStartTime;
  546. this.levelPauseEndTime = this.levelStartTime;
  547. this.levelPauseTime = 0;
  548. // this.m_str_nomatch_div.style.display = "inline";
  549. this.resetTranslate(0);
  550. /* if (FZ.TargetMobile !== FZ.TARGET_DEF.ANDRIOD) {
  551. this.m_sound = FZ.GameBase.SaveObject.m_sound;
  552. if (this.m_sound === true) {
  553. this.m_btn_list[this.BTN_SOUND_INDEX].setSwitchState(this.m_btn_list[this.BTN_SOUND_INDEX].SWITCH_ON);
  554. // FZ.Music.play(FZ.ResourceManager.ResourceLib.BGMusic.Resource, true);
  555. }
  556. else {
  557. this.m_btn_list[this.BTN_SOUND_INDEX].setSwitchState(this.m_btn_list[this.BTN_SOUND_INDEX].SWITCH_OFF);
  558. // FZ.Music.stop();
  559. }
  560. }*/
  561. //this.m_btn_list[this.BTN_HOME_INDEX].m_div.style.display = "none";
  562. this.m_diamondMgr.setBonusTime(0);
  563. if (isDebug) {
  564. document.addEventListener("keyup", FZ.Tools.bindWithEvent(this, this.debugLevel), false);
  565. }
  566. setTimeout(function(){
  567. mySelf.fade_in.call(mySelf, 2000, 1);
  568. }, 10);
  569. this.m_timer = setTimeout(FZ.Tools.bind(this, this.checkOver), 0);
  570. this.m_call_time = FZ.Tools.bind(this, this.checkOver);
  571. },
  572. postProcess: function(){
  573. // var hintDiv = document.getElementById("strHint");
  574. this.m_diamondMgr.removeEvent();
  575. if (this.m_next_state === FZ.StateDefs.GAME_STATE_OVER ||
  576. this.m_next_state === FZ.StateDefs.GAME_STATE_RESET ||
  577. this.m_next_state === FZ.StateDefs.GAME_STATE_NEXT_LEVEL ||
  578. this.m_next_state === FZ.StateDefs.GAME_STATE_GAME_WIN) {
  579. this.m_main_div.style.display = "inline";
  580. // hintDiv.value = "show game in next = " + this.m_next_state;
  581. }
  582. else {
  583. this.m_main_div.style.display = "none";
  584. // hintDiv.value = "exit game in";
  585. this.fade_out(2000, 0, 0);
  586. }
  587. },
  588. mouseHandler: function(evt){
  589. //evt.preventDefault();
  590. FZ.EventRemove(this, this.m_main_div, FZ.EVENT_DEF.T_START, this.m_call_tStart);
  591. FZ.EventRemove(this, this.m_main_div, FZ.EVENT_DEF.M_CLICK, this.m_call_mClick);
  592. this.m_levelStart = true;
  593. this.m_diamondMgr.showPets();
  594. for (var index = 0; index < this.UI_ARROW_KINDS; index++) {
  595. this.m_ui_list[this.UI_ARROW_START_INDEX + index].style.display = "none";
  596. }
  597. this.levelStartTime = (new Date()).getTime();
  598. this.levelCurrentTime = this.levelStartTime;
  599. this.levelPauseStartTime = this.levelStartTime;
  600. this.levelPauseEndTime = this.levelStartTime;
  601. this.levelPauseTime = 0;
  602. this.m_levelLeftTime = 0;
  603. this.m_diamondMgr.setParent(this.m_main_div);
  604. },
  605. checkOver: function(){
  606. var mySelf = this;
  607. //clearTimeout(this.m_timer);
  608. ////////////////////
  609. if (undefined === FZ.GameBase.CurrentState) {
  610. return;
  611. }
  612. if (FZ.StateDefs.GAME_STATE_GAME_IN !== FZ.GameBase.CurrentState.StateName) {
  613. clearTimeout(this.m_timer);
  614. return;
  615. }
  616. var index = 0;
  617. var level = this.m_diamondMgr.getLevel();
  618. if (!this.m_levelStart) {
  619. var time = Math.floor((new Date()).getTime() - this.levelCurrentTime) / 1000;
  620. var isTouched = false;
  621. // this.m_ui_list[this.UI_ARROW_START_INDEX + level - 3].style.display = "inline";
  622. var scoreNum = FZ.AG.SearchSpecialPath.setScoreNum(FZ.GameBase.SaveObject.score + this.m_diamondMgr.getScore());
  623. for(var index = 0; index < scoreNum.length; index++){
  624. this.m_ui_list[this.UI_SCORE_START_INDEX + 5 - scoreNum.length + index].style.backgroundImage = "url(imgs/NUM_LEVEL_" + scoreNum[scoreNum.length - 1- index] + ".png)";
  625. }
  626. if(scoreNum.length < 5){
  627. for(var index = 0; index < 5 - scoreNum.length ; index++){
  628. this.m_ui_list[this.UI_SCORE_START_INDEX + index].style.backgroundImage = "url(imgs/NUM_LEVEL_0.png)";
  629. }
  630. }
  631. switch(level){
  632. case 3:
  633. {
  634. this.m_levelStart = false;
  635. this.m_diamondMgr.hidePets();
  636. this.m_ui_list[this.UI_ARROW_START_INDEX].style.display = "inline";
  637. break;
  638. }
  639. case 5:
  640. {
  641. this.m_levelStart = false;
  642. this.m_diamondMgr.hidePets();
  643. this.m_ui_list[this.UI_ARROW_START_INDEX + 1].style.display = "inline";
  644. break;
  645. }
  646. case 7:
  647. {
  648. this.m_levelStart = false;
  649. this.m_diamondMgr.hidePets();
  650. this.m_ui_list[this.UI_ARROW_START_INDEX + 2].style.display = "inline";
  651. break;
  652. }
  653. case 8:
  654. {
  655. this.m_levelStart = false;
  656. this.m_diamondMgr.hidePets();
  657. this.m_ui_list[this.UI_ARROW_START_INDEX + 3].style.display = "inline";
  658. break;
  659. }
  660. case 9:
  661. {
  662. this.m_levelStart = false;
  663. this.m_diamondMgr.hidePets();
  664. this.m_ui_list[this.UI_ARROW_START_INDEX + 4].style.display = "inline";
  665. break;
  666. }
  667. case 10:
  668. {
  669. this.m_levelStart = false;
  670. this.m_diamondMgr.hidePets();
  671. this.m_ui_list[this.UI_ARROW_START_INDEX + 5].style.display = "inline";
  672. break;
  673. }
  674. default:
  675. {
  676. break;
  677. }
  678. }
  679. // FZ.EventRemove(this, this.m_main_div, FZ.EVENT_DEF.T_START, this.m_call_tStart);
  680. // FZ.EventRemove(this, this.m_main_div, FZ.EVENT_DEF.M_CLICK, this.m_call_mClick);
  681. if (FZ.TARGET_DEF.MOBILE === FZ.TargetPort) {
  682. if (null === this.m_call_tStart) {
  683. FZ.EventHandler(this, this.m_main_div, FZ.EVENT_DEF.T_START, this.mouseHandler);
  684. }
  685. }
  686. else {
  687. if (null === this.m_call_mClick) {
  688. FZ.EventHandler(this, this.m_main_div, FZ.EVENT_DEF.M_CLICK, this.mouseHandler);
  689. }
  690. }
  691. if (time > 3) {
  692. this.m_levelStart = true;
  693. this.m_diamondMgr.showPets();
  694. for (var index = 0; index < this.UI_ARROW_KINDS; index++) {
  695. this.m_ui_list[this.UI_ARROW_START_INDEX + index].style.display = "none";
  696. }
  697. this.levelStartTime = (new Date()).getTime();
  698. this.levelCurrentTime = this.levelStartTime;
  699. this.levelPauseStartTime = this.levelStartTime;
  700. this.levelPauseEndTime = this.levelStartTime;
  701. this.levelPauseTime = 0;
  702. this.m_levelLeftTime = 0;
  703. this.m_diamondMgr.setParent(this.m_main_div);
  704. }
  705. // this.m_timer = setTimeout(FZ.Tools.bind(this, this.checkOver), 200);
  706. this.m_timer = setTimeout(mySelf.m_call_time, 200);
  707. this.m_diamondMgr.setBubble(true);
  708. return;
  709. }
  710. if (this.m_isNoMatch === true) {
  711. this.m_str_nomatch_div.style.display = "inline";
  712. var curTime = (new Date()).getTime();
  713. if (Math.floor(curTime - this.levelCurrentTime)/1000 > 2) {
  714. this.m_diamondMgr.ResetPosition();
  715. if (!this.m_diamondMgr.searchHasMatch()) {
  716. this.m_diamondMgr.ResetTwoPosition();
  717. }
  718. this.m_isNoMatch = false;
  719. this.levelPauseTime += 3200;
  720. this.m_str_nomatch_div.style.display = "none";
  721. }
  722. // this.m_timer = setTimeout(FZ.Tools.bind(this, this.checkOver), 100);
  723. this.m_timer = setTimeout(mySelf.m_call_time, 200);
  724. return;
  725. }
  726. if (this.m_gamePause || this.pageHiddin) {
  727. this.m_timer = setTimeout(FZ.Tools.bind(this, this.checkOver), 100);
  728. return;
  729. }
  730. if(this.m_showPage === true && FZ.TargetMobile !== FZ.TARGET_DEF.ANDRIOD){
  731. this.m_showPage = false;
  732. this.levelPauseEndTime = (new Date()).getTime();
  733. this.levelPauseTime += this.levelPauseEndTime - this.levelPauseStartTime;
  734. }
  735. level = FZ.GameBase.SaveObject.m_cur_level;
  736. var time = Math.floor(((new Date()).getTime() - this.levelPauseTime - this.levelStartTime) / 1000 + this.curLevelUsedTime);
  737. var perSecLen = (this.m_time_bar_w / FZ.GameDefs.LEVEL_TIME[FZ.GameBase.SaveObject.m_cur_level]);
  738. time -= this.m_diamondMgr.getBonusTime();
  739. if (time >= FZ.GameDefs.LEVEL_TIME[FZ.GameBase.SaveObject.m_cur_level]) {
  740. time = FZ.GameDefs.LEVEL_TIME[FZ.GameBase.SaveObject.m_cur_level];
  741. }else if(time < 0){
  742. time = 0;
  743. }
  744. var showW = (FZ.GameDefs.LEVEL_TIME[level] - time) * perSecLen;
  745. this.m_time_bar_div.style.width = showW + "px";
  746. var scoreNum = FZ.AG.SearchSpecialPath.setScoreNum(FZ.GameBase.SaveObject.score + this.m_diamondMgr.getScore());
  747. for(var index = scoreNum.length - 1; index >= 0 ; index--){
  748. this.m_ui_list[this.UI_SCORE_START_INDEX + 5 - scoreNum.length + index].style.backgroundImage = "url(imgs/NUM_LEVEL_" + scoreNum[scoreNum.length - 1- index] + ".png)";
  749. }
  750. if(scoreNum.length < 5){
  751. for(var index = 0; index < 5 - scoreNum.length ; index++){
  752. this.m_ui_list[this.UI_SCORE_START_INDEX + index].style.backgroundImage = "url(imgs/NUM_LEVEL_0.png)";
  753. }
  754. }
  755. this.m_level_usedTime = time;
  756. if ((FZ.GameDefs.LEVEL_TIME[level] <= time)) {
  757. //game over.
  758. var score = FZ.GameBase.SaveObject.score;
  759. var levelscore = this.m_diamondMgr.getScore();
  760. this.m_timer = setTimeout(FZ.Tools.bind(this, this.setGameOver), levelscore + score);
  761. this.m_diamondMgr.setBubble(true);
  762. return;
  763. }
  764. else {
  765. this.m_timer = setTimeout(mySelf.m_call_time, 1500);
  766. this.m_diamondMgr.saveLevel();
  767. }
  768. },
  769. checkWin: function(){
  770. var level = this.m_diamondMgr.getLevel();
  771. //console.log(level);
  772. myPlayLevel = level;
  773. var time = (((new Date()).getTime() - this.levelPauseTime - this.levelStartTime) / 1000 + this.curLevelUsedTime);
  774. if (this.m_diamondMgr.getLeftPet() === 0) {
  775. //into next level
  776. var score = FZ.GameBase.SaveObject.score;
  777. var timeBonus = (FZ.GameDefs.LEVEL_TIME[level] - this.m_level_usedTime) * 30;
  778. var levelscore = this.m_diamondMgr.getScore() + timeBonus ;
  779. var totalUsedTime = FZ.GameBase.SaveObject.m_usedTime + this.m_level_usedTime;
  780. var levelUsedHint = FZ.GameBase.SaveObject.m_hint - this.m_diamondMgr.getHintCount();
  781. FZ.GameBase.SaveObject.m_usedTime = totalUsedTime;
  782. var totalUsedHint = FZ.GameBase.SaveObject.m_totalUsedHint + levelUsedHint;
  783. FZ.GameBase.SaveObject.m_totalUsedHint = totalUsedHint;
  784. var scoreNum = FZ.AG.SearchSpecialPath.setScoreNum(FZ.GameBase.SaveObject.score + levelscore);
  785. myPlayLevelScore = FZ.GameBase.SaveObject.score + levelscore;
  786. for(var index = scoreNum.length - 1; index >= 0 ; index--){
  787. this.m_ui_list[this.UI_SCORE_START_INDEX + 5 - scoreNum.length + index].style.backgroundImage = "url(imgs/NUM_LEVEL_" + scoreNum[scoreNum.length - 1- index] + ".png)";
  788. }
  789. if(scoreNum.length < 5){
  790. for(var index = 0; index < 5 - scoreNum.length ; index++){
  791. this.m_ui_list[this.UI_SCORE_START_INDEX + index].style.backgroundImage = "url(imgs/NUM_LEVEL_0.png)";
  792. }
  793. }
  794. if (level === FZ.GameDefs.MAX_LEVEL_RANK) {
  795. clearTimeout(this.m_timer);
  796. this.m_diamondMgr.setBubble(false);
  797. this.m_next_state = FZ.StateDefs.GAME_STATE_GAME_WIN;
  798. this.pause();
  799. FZ.GameBase.switchToState(FZ.StateDefs.GAME_STATE_GAME_WIN, levelscore + score, totalUsedTime, totalUsedHint);
  800. FZ.GameBase.SaveObject.pass = true;
  801. FZ.GameBase.SaveObject.score += levelscore;
  802. FZ.GameBase.SaveObject.m_hint = this.m_diamondMgr.getHintCount();// + FZ.GameDefs.LEVEL_HINT_NUMBER[level];
  803. FZ.GameBase.saveGame();
  804. return;
  805. }
  806. else {
  807. clearTimeout(this.m_timer);
  808. this.m_diamondMgr.setBubble(false);
  809. this.m_next_state = FZ.StateDefs.GAME_STATE_NEXT_LEVEL;
  810. this.pause();
  811. FZ.GameBase.pushState(this.StateName);
  812. FZ.GameBase.switchToState(FZ.StateDefs.GAME_STATE_NEXT_LEVEL, levelscore, timeBonus,levelUsedHint);
  813. FZ.GameBase.SaveObject.score += levelscore;
  814. FZ.GameBase.SaveObject.m_cur_level = level + 1;
  815. if(levelUsedHint < FZ.GameDefs.LEVEL_HINT_NUMBER[level]){
  816. FZ.GameBase.SaveObject.m_hint = 1 + FZ.GameDefs.LEVEL_HINT_NUMBER[level+1];
  817. }else{
  818. FZ.GameBase.SaveObject.m_hint = FZ.GameDefs.LEVEL_HINT_NUMBER[level+1];
  819. }
  820. FZ.GameBase.saveGame();
  821. return;
  822. }
  823. }
  824. },
  825. checkNoMatch: function(){
  826. if (!this.m_diamondMgr.searchHasMatch()) {
  827. this.m_isNoMatch = true;
  828. }
  829. if (this.m_isNoMatch) {
  830. this.levelCurrentTime = (new Date()).getTime();
  831. }
  832. },
  833. setGameOver: function(){
  834. this.m_diamondMgr.setBubble(false);
  835. clearTimeout(this.m_timer);
  836. this.m_next_state = FZ.StateDefs.GAME_STATE_OVER;
  837. this.pause();
  838. var levelscore = this.m_diamondMgr.getScore();
  839. var score = FZ.GameBase.SaveObject.score;
  840. var t_score = score + levelscore;
  841. FZ.GameBase.pushState(this.StateName);
  842. //FZ.GameBase.switchToState(FZ.StateDefs.GAME_STATE_OVER, levelscore + score);
  843. FZ.GameBase.SaveObject.score = 0;
  844. FZ.GameBase.SaveObject.m_cur_level = 1;
  845. FZ.GameBase.SaveObject.m_hint = FZ.GameDefs.LEVEL_HINT_NUMBER[1];
  846. FZ.GameBase.SaveObject.m_totalUsedHint = 0;
  847. FZ.GameBase.SaveObject.m_gamein = false;
  848. FZ.GameBase.SaveObject.m_cur_score = 0;
  849. FZ.GameBase.SaveObject.m_cur_hintCount = FZ.GameDefs.LEVEL_HINT_NUMBER[1];
  850. FZ.GameBase.SaveObject.m_cur_left_pet = FZ.GameDefs.ALL_PET_NUM;
  851. FZ.GameBase.SaveObject.m_level_usedTime = 0;
  852. FZ.GameBase.SaveObject.m_usedTime = 0;
  853. //FZ.GameBase.saveGame();
  854. Gamehub.Score.submit(t_score);
  855. },
  856. setNextLevel: function(levelscore, totalscore){
  857. clearTimeout(this.m_timer);
  858. this.m_diamondMgr.setBubble(false);
  859. this.m_next_state = FZ.StateDefs.GAME_STATE_NEXT_LEVEL;
  860. this.pause();
  861. FZ.GameBase.pushState(this.StateName);
  862. FZ.GameBase.switchToState(FZ.StateDefs.GAME_STATE_NEXT_LEVEL, levelscore, totalscore);
  863. },
  864. setGameWin: function(levelscore, totalscore){
  865. clearTimeout(this.m_timer);
  866. this.m_diamondMgr.setBubble(false);
  867. this.m_next_state = FZ.StateDefs.GAME_STATE_GAME_WIN;
  868. this.pause();
  869. FZ.GameBase.pushState(this.StateName);
  870. FZ.GameBase.switchToState(FZ.StateDefs.GAME_STATE_GAME_WIN, levelscore, totalscore);
  871. },
  872. buttonClick: function(btn){
  873. if (undefined === FZ.GameBase.CurrentState) {
  874. return;
  875. }
  876. if (FZ.StateDefs.GAME_STATE_GAME_IN !== FZ.GameBase.CurrentState.StateName) {
  877. return;
  878. }
  879. if (this.m_isNoMatch === true) {
  880. return;
  881. }
  882. /*if (this.m_btn_list[this.BTN_HOME_INDEX] === btn) {
  883. this.m_gamePause = !this.m_gamePause;
  884. //this.m_btn_list[this.BTN_HOME_INDEX].m_div.style.display = "none";
  885. this.m_btn_list[this.BTN_HINT_INDEX].m_div.style.display = "inline";
  886. var curHint = this.m_diamondMgr.getHintCount();
  887. if(curHint > 10){
  888. this.m_hint_num_div[0].style.visibility = "visible";
  889. this.m_hint_num_div[1].style.visibility = "visible";
  890. }else if(curHint === 0){
  891. this.m_hint_num_div[0].style.visibility = "hidden";
  892. this.m_hint_num_div[1].style.visibility = "hidden";
  893. }else{
  894. this.m_hint_num_div[0].style.visibility = "visible";
  895. this.m_hint_num_div[1].style.visibility = "hidden";
  896. }
  897. if (FZ.TargetMobile !== FZ.TARGET_DEF.ANDRIOD) {
  898. this.m_btn_list[this.BTN_SOUND_INDEX].m_div.style.display = "inline";
  899. }
  900. this.m_pause_div.style.display = "none";
  901. this.m_diamondMgr.m_reset_finished = true;
  902. if (FZ.TargetMobile !== FZ.TARGET_DEF.ANDRIOD) {
  903. if (FZ.Game.GameState.m_btn_list[FZ.Game.GameState.BTN_SOUND_INDEX].SWITCH_OFF === FZ.Game.GameState.m_btn_list[FZ.Game.GameState.BTN_SOUND_INDEX].m_btn_state) {
  904. FZ.Game.GameState.m_btn_list[FZ.Game.GameState.BTN_SOUND_INDEX].m_div.style.backgroundImage = "url(imgs/BTN_SOUND_OFF.png)";
  905. }
  906. if (FZ.Game.GameState.m_btn_list[FZ.Game.GameState.BTN_SOUND_INDEX].SWITCH_ON === FZ.Game.GameState.m_btn_list[FZ.Game.GameState.BTN_SOUND_INDEX].m_btn_state) {
  907. FZ.Game.GameState.m_btn_list[FZ.Game.GameState.BTN_SOUND_INDEX].m_div.style.backgroundImage = "url(imgs/BTN_SOUND.png)";
  908. }
  909. }
  910. this.m_btn_list[this.BTN_PAUSE_INDEX].setSwitchState(this.m_btn_list[this.BTN_PAUSE_INDEX].SWITCH_ON);
  911. this.levelPauseEndTime = (new Date()).getTime();
  912. this.levelPauseTime += this.levelPauseEndTime - this.levelPauseStartTime;
  913. //
  914. this.m_next_state = FZ.StateDefs.GAME_STATE_MAINMEN;
  915. this.m_diamondMgr.setBubble(false);
  916. this.levelPauseStartTime = (new Date()).getTime();
  917. FZ.GameBase.switchToState(FZ.StateDefs.GAME_STATE_MAINMEN);
  918. this.pause();
  919. FZ.GameBase.pushState(this.StateName);
  920. FZ.GameBase.switchToState(FZ.StateDefs.GAME_STATE_RESET);
  921. }
  922. else */
  923. if (this.m_btn_list[this.BTN_HINT_INDEX] === btn) {
  924. this.m_diamondMgr.setBubble(false);
  925. if (this.m_gamePause) {
  926. return;
  927. }
  928. if (this.m_diamondMgr.getHintCount() > 0) {
  929. if (true === this.m_diamondMgr.searchHint()) {
  930. var hint = this.m_diamondMgr.getHintCount();
  931. this.m_hint_num_div[0].style.visibility = "visible";
  932. this.m_hint_num_div[1].style.visibility = "visible";
  933. if (hint >= 10) {
  934. var num = Math.floor(hint % 10);
  935. this.m_hint_num_div[0].style.backgroundImage = "url(imgs/number_hint_" + num + ".png )";
  936. var num = Math.floor(hint / 10);
  937. this.m_hint_num_div[1].style.backgroundImage = "url(imgs/number_hint_" + num + ".png )";
  938. }
  939. else {
  940. this.m_hint_num_div[1].style.visibility = "hidden";
  941. this.m_hint_num_div[0].style.backgroundImage = "url(imgs/number_hint_" + hint + ".png )";
  942. }
  943. }
  944. }
  945. if ((this.m_diamondMgr.getHintCount()) === 0) {
  946. btn.setEnable(false);
  947. btn.m_div.style.backgroundImage = "url(imgs/BTN_HINT_GREY.png )";
  948. this.m_hint_num_div[0].style.visibility = "hidden";
  949. this.m_hint_num_div[1].style.visibility = "hidden";
  950. }
  951. }
  952. else
  953. if (this.m_btn_list[this.BTN_PAUSE_INDEX] === btn) {
  954. this.m_gamePause = !this.m_gamePause;
  955. if (this.m_gamePause === true) {
  956. //this.m_btn_list[this.BTN_HOME_INDEX].m_div.style.display = "inline";
  957. //this.m_btn_list[this.BTN_HOME_INDEX].setEnable(true);
  958. this.m_btn_list[this.BTN_HINT_INDEX].m_div.style.display = "none";
  959. this.m_hint_num_div[0].style.visibility = "hidden";
  960. this.m_hint_num_div[1].style.visibility = "hidden";
  961. /*if (FZ.TargetMobile !== FZ.TARGET_DEF.ANDRIOD) {
  962. this.m_btn_list[this.BTN_SOUND_INDEX].m_div.style.display = "none";
  963. }*/
  964. this.levelPauseStartTime = (new Date()).getTime();
  965. this.m_pause_div.style.display = "inline";
  966. btn.setSwitchState(btn.SWITCH_OFF);
  967. this.m_diamondMgr.m_reset_finished = false;
  968. this.m_diamondMgr.setBubble(false);
  969. this.m_diamondMgr.hidePets();
  970. }
  971. else {
  972. this.m_diamondMgr.showPets();
  973. // this.m_gamePause = false;
  974. //this.m_btn_list[this.BTN_HOME_INDEX].m_div.style.display = "none";
  975. this.m_btn_list[this.BTN_HINT_INDEX].m_div.style.display = "inline";
  976. var curHint = this.m_diamondMgr.getHintCount();
  977. if(curHint > 10){
  978. this.m_hint_num_div[0].style.visibility = "visible";
  979. this.m_hint_num_div[1].style.visibility = "visible";
  980. }else if(curHint === 0){
  981. this.m_hint_num_div[0].style.visibility = "hidden";
  982. this.m_hint_num_div[1].style.visibility = "hidden";
  983. }else{
  984. this.m_hint_num_div[0].style.visibility = "visible";
  985. this.m_hint_num_div[1].style.visibility = "hidden";
  986. }
  987. /*
  988. if (FZ.TargetMobile !== FZ.TARGET_DEF.ANDRIOD) {
  989. this.m_btn_list[this.BTN_SOUND_INDEX].m_div.style.display = "inline";
  990. }
  991. */ this.m_pause_div.style.display = "none";
  992. this.m_diamondMgr.m_reset_finished = true;
  993. // FZ.Game.GameState.m_btn_list[FZ.Game.GameState.BTN_HOME_INDEX].m_div.style.backgroundImage = "url(imgs/BTN_HOME.png)";
  994. if ((this.m_diamondMgr.getHintCount()) !== 0) {
  995. FZ.Game.GameState.m_btn_list[FZ.Game.GameState.BTN_HINT_INDEX].m_div.style.backgroundImage = "url(imgs/BTN_HINT.png)";
  996. }
  997. /*if (FZ.Game.GameState.BTN_SOUND_INDEX !== undefined) {
  998. if (FZ.Game.GameState.m_btn_list[FZ.Game.GameState.BTN_SOUND_INDEX].SWITCH_OFF === FZ.Game.GameState.m_btn_list[FZ.Game.GameState.BTN_SOUND_INDEX].m_btn_state) {
  999. FZ.Game.GameState.m_btn_list[FZ.Game.GameState.BTN_SOUND_INDEX].m_div.style.backgroundImage = "url(imgs/BTN_SOUND_OFF.png)";
  1000. }
  1001. if (FZ.Game.GameState.m_btn_list[FZ.Game.GameState.BTN_SOUND_INDEX].SWITCH_ON === FZ.Game.GameState.m_btn_list[FZ.Game.GameState.BTN_SOUND_INDEX].m_btn_state) {
  1002. FZ.Game.GameState.m_btn_list[FZ.Game.GameState.BTN_SOUND_INDEX].m_div.style.backgroundImage = "url(imgs/BTN_SOUND.png)";
  1003. }
  1004. }*/
  1005. btn.setSwitchState(btn.SWITCH_ON);
  1006. this.levelPauseEndTime = (new Date()).getTime();
  1007. this.levelPauseTime += this.levelPauseEndTime - this.levelPauseStartTime;
  1008. // btn.m_div.style.backgroundImage = "url(imgs/" + btn.m_img_list[0] + ")";
  1009. }
  1010. this.m_diamondMgr.saveLevel();
  1011. }/*
  1012. else
  1013. if (this.m_btn_list[this.BTN_SOUND_INDEX] !== undefined && this.m_btn_list[this.BTN_SOUND_INDEX] === btn) {
  1014. if (this.m_gamePause) {
  1015. return;
  1016. }
  1017. this.m_sound = !this.m_sound;
  1018. if (this.m_sound) {
  1019. btn.setSwitchState(btn.SWITCH_ON);
  1020. FZ.Music.setMute(false);
  1021. }
  1022. else {
  1023. btn.setSwitchState(btn.SWITCH_OFF);
  1024. FZ.Music.setMute(true);
  1025. }
  1026. FZ.GameBase.SaveObject.m_sound = this.m_sound;
  1027. FZ.GameBase.saveGame();
  1028. }*/
  1029. },
  1030. debugLevel: function(){
  1031. var level = this.m_diamondMgr.getLevel();
  1032. var levelscore = this.m_diamondMgr.getScore() + this.m_levelLeftTime * 20;
  1033. if (level < 9) {
  1034. FZ.GameBase.SaveObject.m_cur_level = level + 1;
  1035. }
  1036. if (level === 9) {
  1037. clearTimeout(this.m_timer);
  1038. this.m_diamondMgr.setBubble(false);
  1039. this.m_next_state = FZ.StateDefs.GAME_STATE_GAME_WIN;
  1040. this.pause();
  1041. FZ.GameBase.pushState(this.StateName);
  1042. FZ.GameBase.switchToState(FZ.StateDefs.GAME_STATE_GAME_WIN, this.m_levelLeftTime, levelscore);
  1043. return;
  1044. }
  1045. else {
  1046. clearTimeout(this.m_timer);
  1047. this.m_diamondMgr.setBubble(false);
  1048. this.m_next_state = FZ.StateDefs.GAME_STATE_NEXT_LEVEL;
  1049. this.pause();
  1050. FZ.GameBase.pushState(this.StateName);
  1051. FZ.GameBase.switchToState(FZ.StateDefs.GAME_STATE_NEXT_LEVEL, this.m_levelLeftTime, levelscore);
  1052. return;
  1053. }
  1054. },
  1055. // update : function() {
  1056. // var mySelf = this;
  1057. // switch(substate) {
  1058. // case "init":
  1059. // {
  1060. // //function_init();
  1061. // //{
  1062. // // if(time > 3) {
  1063. // // substate = "playing";
  1064. // // }
  1065. // //}
  1066. // break;
  1067. // }
  1068. // case "playing":
  1069. // {
  1070. // //function_playing();
  1071. // //{
  1072. // // this.checkover();
  1073. // // {
  1074. // // time < 0;
  1075. // // }
  1076. // //}
  1077. // break;
  1078. // }
  1079. // case "end":
  1080. // {
  1081. // //function_end();
  1082. // break;
  1083. // }
  1084. // default:
  1085. // {
  1086. // //function_default();
  1087. // //
  1088. // break;
  1089. // }
  1090. // }
  1091. // setTimeout(function() {
  1092. // mySelf.update();
  1093. // }, 1000);
  1094. // },
  1095. pageHide: function(e){
  1096. // var leftTimeDiv = document.getElementById("strLeftTime");
  1097. // leftTimeDiv.value = "HIde"+Math.random();
  1098. if (FZ.Game.GameState.m_diamondMgr === null) {
  1099. return;
  1100. }
  1101. FZ.Game.GameState.m_diamondMgr.m_reset_finished = false;
  1102. FZ.Game.GameState.m_diamondMgr.setBubble(false);
  1103. FZ.Game.GameState.levelPauseStartTime = (new Date()).getTime();
  1104. FZ.Game.GameState.pageHiddin = true;
  1105. },
  1106. pageShow: function(e){
  1107. FZ.Game.GameState.m_showPage = true;
  1108. // var leftTimeDiv = document.getElementById("strLeftTime");
  1109. // leftTimeDiv.value ="show"+Math.random();
  1110. if (FZ.Game.GameState.m_diamondMgr === null) {
  1111. return;
  1112. }
  1113. FZ.Game.GameState.m_diamondMgr.m_reset_finished = true;
  1114. // FZ.Game.GameState.levelPauseEndTime = (new Date()).getTime();
  1115. // FZ.Game.GameState.levelPauseTime += FZ.Game.GameState.levelPauseEndTime - FZ.Game.GameState.levelPauseStartTime;
  1116. FZ.Game.GameState.pageHiddin = false;
  1117. }
  1118. }, FZ.BaseState))();
  1119. if (FZ.TargetMobile !== FZ.TARGET_DEF.ANDRIOD) {
  1120. window.addEventListener("pagehide", FZ.Game.GameState.pageHide, false);
  1121. window.addEventListener("pageshow", FZ.Game.GameState.pageShow, false);
  1122. }
  1123. })();