Pet.js 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458
  1. FZ.Diamond = FZ.newClass({
  2. BLOCK_SPR_LIST: ["farm_1", "farm_2", "farm_3", "farm_4", "farm_5", "farm_6", "farm_7", "farm_8", "farm_9", "farm_10", "farm_11",
  3. "farm_12", "farm_13", "farm_14", "farm_15", "farm_16", "farm_17", "farm_18", "farm_19", "farm_20", "farm_21",
  4. "farm_22", "farm_23", "farm_24", "farm_25", "farm_26", "farm_27", "farm_28", "farm_29", "farm_30", "farm_31","farm_32"
  5. ],
  6. m_state: FZ.GameDefs.DREAMPET_INIT,
  7. m_search_flag: FZ.GameDefs.SEARCH_NONE,
  8. m_style: -1,
  9. m_module: -1,
  10. m_line: 0,
  11. m_col: 0,
  12. m_x: 0,
  13. m_y: 0,
  14. m_dest_x: 0,
  15. m_dest_y: 0,
  16. m_fall_time: 0,
  17. m_fall_speed_x: 0,
  18. m_fall_speed_y: 0,
  19. m_fall_x: 0,
  20. m_fall_y: 0,
  21. m_turn: FZ.GameDefs.DIAMOND_RORATE_NONE,
  22. m_angle: 0,
  23. m_spr: null,
  24. m_flashTime: 0,
  25. m_worldMatrix: null,
  26. m_back_list: null,
  27. m_div: null,
  28. m_div_focus: null,
  29. m_div_hint: null,
  30. m_callback: null,
  31. m_anim_callback: null,
  32. m_flash_count: FZ.GameDefs.FLASH_COUNT,
  33. init: function(line, col, style, state){
  34. this.m_search_flag = FZ.GameDefs.SEARCH_NONE;
  35. this.m_line = line;
  36. this.m_col = col;
  37. this.m_x = this.m_col * FZ.GameDefs.GRID_WIDTH + FZ.GameDefs.DREAMPET_OFFSET_X;
  38. this.m_y = this.m_line * FZ.GameDefs.GRID_HEIGHT + FZ.GameDefs.DREAMPET_OFFSET_Y;
  39. this.m_dest_x = this.m_x;
  40. this.m_dest_y = this.m_y;
  41. this.m_fall_time = 0;
  42. this.m_fall_speed_x = 0;
  43. this.m_fall_speed_y = 0;
  44. this.m_fall_x = this.m_x;
  45. this.m_fall_y = this.m_y;
  46. this.m_turn = FZ.GameDefs.DIAMOND_RORATE_NONE;
  47. this.m_style = Math.floor(style);
  48. this.m_state = Math.floor(state);
  49. this.m_flashTime = 0;
  50. this.m_worldMatrix = new FZ.Math.Matrix3();
  51. this.m_worldMatrix.identity();
  52. switch (this.m_style) {
  53. case FZ.GameDefs.PET_TYPE_0:{
  54. this.m_module = FZ.GameDefs.PET_1;
  55. break;
  56. }
  57. case FZ.GameDefs.PET_TYPE_1:{
  58. this.m_module = FZ.GameDefs.PET_2;
  59. break;
  60. }
  61. case FZ.GameDefs.PET_TYPE_2:{
  62. this.m_module = FZ.GameDefs.PET_3;
  63. break;
  64. }
  65. case FZ.GameDefs.PET_TYPE_3:{
  66. this.m_module = FZ.GameDefs.PET_4;
  67. break;
  68. }
  69. case FZ.GameDefs.PET_TYPE_4:{
  70. this.m_module = FZ.GameDefs.PET_5;
  71. break;
  72. }
  73. case FZ.GameDefs.PET_TYPE_5:{
  74. this.m_module = FZ.GameDefs.PET_6;
  75. break;
  76. }
  77. case FZ.GameDefs.PET_TYPE_6:{
  78. this.m_module = FZ.GameDefs.PET_7;
  79. break;
  80. }
  81. case FZ.GameDefs.PET_TYPE_7:{
  82. this.m_module = FZ.GameDefs.PET_8;
  83. break;
  84. }
  85. case FZ.GameDefs.PET_TYPE_8:{
  86. this.m_module = FZ.GameDefs.PET_9;
  87. break;
  88. }
  89. case FZ.GameDefs.PET_TYPE_9:{
  90. this.m_module = FZ.GameDefs.PET_10;
  91. break;
  92. }
  93. case FZ.GameDefs.PET_TYPE_10:{
  94. this.m_module = FZ.GameDefs.PET_11;
  95. break;
  96. }
  97. case FZ.GameDefs.PET_TYPE_11:{
  98. this.m_module = FZ.GameDefs.PET_12;
  99. break;
  100. }
  101. case FZ.GameDefs.PET_TYPE_12:{
  102. this.m_module = FZ.GameDefs.PET_13;
  103. break;
  104. }
  105. case FZ.GameDefs.PET_TYPE_13:{
  106. this.m_module = FZ.GameDefs.PET_14;
  107. break;
  108. }
  109. case FZ.GameDefs.PET_TYPE_14:{
  110. this.m_module = FZ.GameDefs.PET_15;
  111. break;
  112. }
  113. case FZ.GameDefs.PET_TYPE_15:{
  114. this.m_module = FZ.GameDefs.PET_16;
  115. break;
  116. }
  117. case FZ.GameDefs.PET_TYPE_16:{
  118. this.m_module = FZ.GameDefs.PET_17;
  119. break;
  120. }
  121. case FZ.GameDefs.PET_TYPE_17:{
  122. this.m_module = FZ.GameDefs.PET_18;
  123. break;
  124. }
  125. case FZ.GameDefs.PET_TYPE_18:{
  126. this.m_module = FZ.GameDefs.PET_19;
  127. break;
  128. }
  129. case FZ.GameDefs.PET_TYPE_19:{
  130. this.m_module = FZ.GameDefs.PET_20;
  131. break;
  132. }
  133. case FZ.GameDefs.PET_TYPE_20:{
  134. this.m_module = FZ.GameDefs.PET_21;
  135. break;
  136. }
  137. case FZ.GameDefs.PET_TYPE_21:{
  138. this.m_module = FZ.GameDefs.PET_22;
  139. break;
  140. }
  141. case FZ.GameDefs.PET_TYPE_22:{
  142. this.m_module = FZ.GameDefs.PET_23;
  143. break;
  144. }
  145. case FZ.GameDefs.PET_TYPE_23:{
  146. this.m_module = FZ.GameDefs.PET_24;
  147. break;
  148. }
  149. case FZ.GameDefs.PET_TYPE_24:{
  150. this.m_module = FZ.GameDefs.PET_25;
  151. break;
  152. }
  153. case FZ.GameDefs.PET_TYPE_25:{
  154. this.m_module = FZ.GameDefs.PET_26;
  155. break;
  156. }
  157. case FZ.GameDefs.PET_TYPE_26:{
  158. this.m_module = FZ.GameDefs.PET_27;
  159. break;
  160. }
  161. case FZ.GameDefs.PET_TYPE_27:{
  162. this.m_module = FZ.GameDefs.PET_28;
  163. break;
  164. }
  165. case FZ.GameDefs.PET_TYPE_28:{
  166. this.m_module = FZ.GameDefs.PET_29;
  167. break;
  168. }
  169. case FZ.GameDefs.PET_TYPE_29:{
  170. this.m_module = FZ.GameDefs.PET_30;
  171. break;
  172. }
  173. case FZ.GameDefs.PET_TYPE_30:{
  174. this.m_module = FZ.GameDefs.PET_31;
  175. break;
  176. }
  177. case FZ.GameDefs.PET_TYPE_31:{
  178. this.m_module = FZ.GameDefs.PET_32;
  179. break;
  180. }
  181. case FZ.GameDefs.PET_TYPE_32:{
  182. this.m_module = FZ.GameDefs.PET_33;
  183. break;
  184. }
  185. case FZ.GameDefs.PET_TYPE_33:{
  186. this.m_module = FZ.GameDefs.PET_34;
  187. break;
  188. }
  189. case FZ.GameDefs.PET_TYPE_34:{
  190. this.m_module = FZ.GameDefs.PET_35;
  191. break;
  192. }
  193. case FZ.GameDefs.PET_TYPE_35:{
  194. this.m_module = FZ.GameDefs.PET_36;
  195. break;
  196. }
  197. case FZ.GameDefs.PET_TYPE_36:{
  198. this.m_module = FZ.GameDefs.PET_37;
  199. break;
  200. }
  201. case FZ.GameDefs.PET_TYPE_37:{
  202. this.m_module = FZ.GameDefs.PET_38;
  203. break;
  204. }
  205. case FZ.GameDefs.PET_TYPE_38:{
  206. this.m_module = FZ.GameDefs.PET_39;
  207. break;
  208. }
  209. case FZ.GameDefs.PET_TYPE_39:{
  210. this.m_module = FZ.GameDefs.PET_40;
  211. break;
  212. }
  213. default:
  214. {
  215. this.m_module = FZ.GameDefs.PET_1;
  216. break;
  217. }
  218. }
  219. var url = null;
  220. var info = null;
  221. this.m_back_list = [];
  222. info = FZ.getImgInfo(this.BLOCK_SPR_LIST[this.m_module]);
  223. url = "url(imgs/" + info.fileURL + ")";
  224. this.m_back_list.push(url);
  225. this.m_callback = null;
  226. if (FZ.GameDefs.DREAMPET_REMOVE === state) {
  227. this.m_div = document.createElement("div");
  228. this.m_div_focus = document.createElement("div");
  229. this.m_div_hint = document.createElement("div");
  230. return;
  231. }
  232. this.setCss();
  233. //create focus div
  234. var num = this.m_module + 1;
  235. this.m_div_focus = document.createElement("div");
  236. this.m_div_focus.style.width = FZ.GameDefs.GRID_WIDTH + "px";
  237. this.m_div_focus.style.height = FZ.GameDefs.GRID_HEIGHT + "px";
  238. this.m_div_focus.style.position = "absolute";
  239. this.m_div_focus.style.backgroundRepeat = "no-repeat";
  240. this.m_div_focus.style.backgroundImage = "url(imgs/farm/" + num + "_touch.png)";
  241. this.hidden();
  242. // this.m_div_focus.style.zIndex = 3;
  243. this.m_div_focus.style.webkitTransition = "opacity, translate";
  244. this.m_div.appendChild(this.m_div_focus);
  245. //create hint div
  246. this.m_div_hint = document.createElement("div");
  247. this.m_div_hint.style.width = FZ.GameDefs.GRID_WIDTH + "px";
  248. this.m_div_hint.style.height = FZ.GameDefs.GRID_HEIGHT + "px";
  249. this.m_div_hint.style.position = "absolute";
  250. this.m_div_hint.style.backgroundRepeat = "no-repeat";
  251. this.m_div_hint.style.backgroundImage = "url(imgs/farm/" + num + "_touch.png)";
  252. this.hiddenHint();
  253. // this.m_div_hint.style.zIndex = 3;
  254. this.m_div_hint.style.webkitTransition = "opacity, translate";
  255. this.m_div.appendChild(this.m_div_hint);
  256. this.setPetFocus();
  257. },
  258. setCss: function(){
  259. this.m_div = document.createElement("div");
  260. this.m_div.style.width = FZ.GameDefs.GRID_WIDTH + 2 + "px";
  261. this.m_div.style.height = FZ.GameDefs.GRID_HEIGHT +2+ "px";
  262. this.m_div.style.position = "absolute";
  263. this.m_div.style.webkitTransition = "opacity, left, top, translate";
  264. this.m_div.style.webkitTransition = "opacity, translate";
  265. // this.m_div.style.left = this.m_x + "px";
  266. // this.m_div.style.top = this.m_y + "px";
  267. this.m_div.style.backgroundRepeat = "no-repeat";
  268. // this.m_div.style.webkitTransform = "translate(" + (this.m_x) + "px, " + (this.m_y) + "px)";
  269. this.m_div.style.left = (this.m_x) + "px";
  270. this.m_div.style.top = (this.m_y) + "px";
  271. },
  272. fade_in: function(){
  273. this.m_div.style.webkitTransitionDuration = FZ.GameDefs.PET_FLICKER_TIME + "ms";
  274. this.m_div.style.opacity = 1;
  275. this.m_timer = setTimeout(FZ.Tools.bind(this, this.fade_out), FZ.GameDefs.PET_FLICKER_TIME);
  276. },
  277. flash: function(){
  278. if (this.m_flash_count > 0) {
  279. this.m_div_focus.style.webkitTransitionDuration = FZ.GameDefs.PET_FLICKER_FOCUS_TIME + "ms";
  280. this.m_div_focus.style.opacity = 0;
  281. this.m_flash_count--;
  282. this.m_timer = setTimeout(FZ.Tools.bind(this, this.flash_again), FZ.GameDefs.PET_FLICKER_FOCUS_TIME);
  283. }
  284. },
  285. flash_again: function(){
  286. this.m_div_focus.style.webkitTransitionDuration = FZ.GameDefs.PET_FLICKER_FOCUS_TIME + "ms";
  287. this.m_div_focus.style.opacity = 1;
  288. this.m_timer = setTimeout(FZ.Tools.bind(this, this.flash), FZ.GameDefs.PET_FLICKER_FOCUS_TIME);
  289. },
  290. fade_out: function(){
  291. if (this.m_flash_count > 0) {
  292. this.m_div.style.webkitTransitionDuration = FZ.GameDefs.PET_FLICKER_TIME + "ms";
  293. this.m_div.style.opacity = 0;
  294. this.m_flash_count--;
  295. this.m_timer = setTimeout(FZ.Tools.bind(this, this.fade_in), FZ.GameDefs.PET_FLICKER_TIME);
  296. }
  297. else {
  298. if (FZ.GameDefs.DREAMPET_FLASH_HINT === this.m_state) {
  299. this.setState(FZ.GameDefs.DREAMPET_INIT);
  300. this.hiddenHint();
  301. }
  302. }
  303. },
  304. fadeOut: function(){
  305. this.m_div.style.webkitTransitionDuration = "500ms";
  306. this.m_div.style.opacity = 0;
  307. this.m_timer = setTimeout(FZ.Tools.bind(this, this.fadeEnd), 500);
  308. },
  309. fadeEnd: function(){
  310. this.setState(FZ.GameDefs.DREAMPET_REMOVE);
  311. //this.m_div.style.display = "none";
  312. this.m_div.style.visibility = "hidden";
  313. },
  314. setPetFocus: function(){
  315. if (FZ.GameDefs.DREAMPET_FLASH === this.m_state) {
  316. this.m_div.style.backgroundImage = this.m_back_list[0];
  317. // this.m_div.style.webkitTransition = "opacity";
  318. // this.m_div.style.webkitTransitionDuration = "100ms";
  319. this.m_div.style.opacity = 1;
  320. // this.m_timer = setTimeout(FZ.Tools.bind(this, this.fadeOut), 200);
  321. this.fadeOut();
  322. }
  323. else
  324. if (FZ.GameDefs.DREAMPET_FLASH_HINT === this.m_state) {
  325. this.m_div.style.backgroundImage = this.m_back_list[0];
  326. // this.m_div.style.webkitTransition = "opacity";
  327. // this.m_div.style.webkitTransitionDuration = 1500 + "ms";
  328. // this.m_div.style.opacity = 1;
  329. this.showHint();
  330. // this.m_flash_count = FZ.GameDefs.FLASH_COUNT;
  331. this.m_timer = setTimeout(FZ.Tools.bind(this,function(){
  332. if (FZ.GameDefs.DREAMPET_FLASH_HINT === this.m_state) {
  333. this.setState(FZ.GameDefs.DREAMPET_INIT);
  334. this.hiddenHint();
  335. }else if(this.m_state === FZ.GameDefs.DREAMPET_FOCUS){
  336. this.hiddenHint();
  337. }
  338. }), 1500);
  339. }
  340. else
  341. if (this.m_state === FZ.GameDefs.DREAMPET_INIT) {
  342. this.m_div.style.backgroundImage = this.m_back_list[0];
  343. }
  344. else
  345. if (this.m_state === FZ.GameDefs.DREAMPET_FOCUS) {
  346. this.m_div.style.backgroundImage = this.m_back_list[0];
  347. // this.m_div_focus.style.display = "inline";
  348. this.m_div_focus.style.visibility = "visible";
  349. //this.m_div.style.webkitTransform = "translate(" + (this.m_x) + "px, " + (this.m_y) + "px)";
  350. this.m_div_focus.style.webkitTransitionDuration = FZ.GameDefs.PET_FLICKER_FOCUS_TIME + "ms";
  351. this.m_div_focus.style.opacity = 1;
  352. this.m_flash_count = FZ.GameDefs.FLASH_FOCUS_COUNT;
  353. // this.m_timer = setTimeout(FZ.Tools.bind(this, this.flash), FZ.GameDefs.PET_FLICKER_FOCUS_TIME +150);
  354. }
  355. else
  356. if (this.m_state === FZ.GameDefs.DREAMPET_REMOVE) {
  357. //this.m_div.style.display = "none";
  358. this.m_div.style.visibility = "hidden";
  359. // this.hidden();
  360. }
  361. },
  362. show: function(){
  363. this.m_div_focus.style.visibility = "visible";
  364. },
  365. hidden: function(){
  366. this.m_div_focus.style.visibility = "hidden";
  367. },
  368. showHint: function(){
  369. this.m_div_hint.style.visibility = "visible";
  370. },
  371. hiddenHint: function(){
  372. this.m_div_hint.style.visibility = "hidden";
  373. },
  374. destroy: function(){
  375. //this.m_state = FZ.GameDefs.DIAMOND_STATE_DESTORY;
  376. if ((this.m_div) && (this.m_div.parentNode)) {
  377. this.m_div.parentNode.removeChild(this.m_div);
  378. }
  379. },
  380. getLine: function(){
  381. return this.m_line;
  382. },
  383. getCol: function(){
  384. return this.m_col;
  385. },
  386. setLine: function(line){
  387. this.m_line = line;
  388. },
  389. setCol: function(col){
  390. this.m_col = col;
  391. },
  392. getStyle: function(){
  393. return this.m_style;
  394. },
  395. getState: function(){
  396. return this.m_state;
  397. },
  398. setStyle: function(style){
  399. this.m_style = style;
  400. },
  401. setState: function(state){
  402. this.m_state = state;
  403. },
  404. getSearchFlag: function(){
  405. return this.m_search_flag;
  406. },
  407. setSearchFlag: function(flag){
  408. this.m_search_flag = flag;
  409. },
  410. updatePos: function(){
  411. if (!this.m_div) {
  412. return;
  413. }
  414. this.m_x = FZ.GameDefs.DREAMPET_OFFSET_X + FZ.GameDefs.GRID_WIDTH * this.m_col;
  415. this.m_y = FZ.GameDefs.DREAMPET_OFFSET_Y + FZ.GameDefs.GRID_HEIGHT * this.m_line;
  416. this.m_div.style.backgroundImage = this.m_back_list[0];
  417. //this.m_div.style.webkitTransform = "translate(" + (this.m_x) + "px, " + (this.m_y) + "px)";
  418. this.m_div.style.left = (this.m_x) + "px";
  419. this.m_div.style.top = (this.m_y) + "px";
  420. }
  421. });