CLevelMenu.js 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144
  1. function CLevelMenu(oData) {
  2. var _bNumActive;
  3. var _oLevelText;
  4. var _aLevels = new Array();
  5. var _oModeNumOff;
  6. var _oModeNumOn;
  7. var _oBg;
  8. var _oButExit;
  9. var _oAudioToggle;
  10. var _oFade;
  11. var _pStartPosExit;
  12. var _pStartPosAudio;
  13. this._init = function () {
  14. _oBg = createBitmap(s_oSpriteLibrary.getSprite('bg_menu'));
  15. _oBg.x = 0;
  16. _oBg.y = 0;
  17. s_oStage.addChild(_oBg);
  18. _bNumActive = false;
  19. _oBg = createBitmap(s_oSpriteLibrary.getSprite('msg_box'));
  20. s_oStage.addChild(_oBg);
  21. _oLevelText = new CTLText(s_oStage,
  22. CANVAS_WIDTH/2-300, 360, 600, 60,
  23. 60, "center", "#fff", PRIMARY_FONT, 1,
  24. 0, 0,
  25. TEXT_SELECT_LEVEL,
  26. true, true, true,
  27. false );
  28. var oModePos = {x: CANVAS_WIDTH * 0.5 - 20, y: 425};
  29. var offset_x = 0;
  30. var offset_y = 50;
  31. for (var i = 0; i < BRICKS_LEVEL_POSITION.length; i++, offset_x += 110) {
  32. if (offset_x > 440) {
  33. offset_x = 0;
  34. offset_y += 100;
  35. }
  36. if (i < s_iLastLevel) {
  37. _aLevels[i] = new CLevelBut((oModePos.x - 200) + offset_x, oModePos.y + offset_y, s_oSpriteLibrary.getSprite('but_level'), true, i + 1);
  38. _aLevels[i].addEventListenerWithParams(ON_MOUSE_DOWN, this._onClick, this, i);
  39. } else {
  40. _aLevels[i] = new CLevelBut((oModePos.x - 200) + offset_x, oModePos.y + offset_y, s_oSpriteLibrary.getSprite('but_level'), false, i + 1);
  41. }
  42. s_bFirstTime = true;
  43. }
  44. var oButtonX;
  45. if (DISABLE_SOUND_MOBILE === false || s_bMobile === false) {
  46. var oSprite = s_oSpriteLibrary.getSprite('icon_audio');
  47. oButtonX = CANVAS_WIDTH - (oSprite.width / 2) - 60;
  48. _pStartPosAudio = {x: oButtonX, y: (oSprite.height / 2) + 10};
  49. _oAudioToggle = new CToggle(_pStartPosAudio.x, _pStartPosAudio.y, oSprite, s_bAudioActive);
  50. _oAudioToggle.addEventListener(ON_MOUSE_UP, this._onAudioToggle, this);
  51. }
  52. var oSpriteExit = s_oSpriteLibrary.getSprite('but_exit');
  53. oButtonX = CANVAS_WIDTH - (oSpriteExit.width / 2) - 100;
  54. _pStartPosExit = {x: oButtonX + 85, y: (oSpriteExit.height / 2) + 10};
  55. _oButExit = new CGfxButton(_pStartPosExit.x, _pStartPosExit.y, oSpriteExit,s_oStage);
  56. _oButExit.addEventListener(ON_MOUSE_UP, this._onExit, this);
  57. _oFade = new createjs.Shape();
  58. _oFade.graphics.beginFill("black").drawRect(0, 0, CANVAS_WIDTH, CANVAS_HEIGHT);
  59. s_oStage.addChild(_oFade);
  60. createjs.Tween.get(_oFade).to({alpha: 0}, 1000).call(function () {
  61. s_oStage.removeChild(_oFade);
  62. });
  63. this.refreshButtonPos(s_iOffsetX, s_iOffsetY);
  64. };
  65. this.unload = function () {
  66. for (var i = 0; i < BRICKS_LEVEL_POSITION.length; i++) {
  67. _aLevels[i].unload();
  68. }
  69. s_oLevelMenu = null;
  70. s_oStage.removeAllChildren();
  71. };
  72. this.refreshButtonPos = function (iNewX, iNewY) {
  73. if (DISABLE_SOUND_MOBILE === false || s_bMobile === false) {
  74. _oAudioToggle.setPosition(_pStartPosAudio.x - iNewX, _pStartPosAudio.y + iNewY);
  75. }
  76. _oButExit.setPosition(_pStartPosExit.x - iNewX, _pStartPosExit.y + iNewY);
  77. };
  78. this._onNumModeToggle = function (iData) {
  79. if (iData === NUM_ACTIVE) {
  80. _bNumActive = true;
  81. _oModeNumOff.setActive(false);
  82. _oModeNumOn.setActive(true);
  83. } else {
  84. _bNumActive = false;
  85. _oModeNumOff.setActive(true);
  86. _oModeNumOn.setActive(false);
  87. }
  88. };
  89. this._onAudioToggle = function () {
  90. Howler.mute(s_bAudioActive);
  91. s_bAudioActive = !s_bAudioActive;
  92. };
  93. this._onClick = function (i) {
  94. var iLevel = i;
  95. var clickable = _aLevels[i].ifClickable();
  96. if (clickable) {
  97. document.dispatchEvent(new CustomEvent("start_session"));
  98. s_oMain.levelSelected(iLevel+1);
  99. }
  100. };
  101. this._onExit = function () {
  102. s_oLevelMenu.unload();
  103. s_oMain.gotoMenu();
  104. };
  105. s_oLevelMenu = this;
  106. this._init();
  107. }
  108. ;
  109. var s_oLevelMenu = null;