RebusLevelSelector.js 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103
  1. /************************************************************************
  2. * RebusLevelSelector.js
  3. ************************************************************************
  4. * Copyright (c) 2021 Pedro Tonini Rosenberg Schneider.
  5. *
  6. * This file is part of Alfabetiza.
  7. *
  8. * Alfabetiza is free software: you can redistribute it and/or modify
  9. * it under the terms of the GNU General Public License as published by
  10. * the Free Software Foundation, either version 3 of the License, or
  11. * (at your option) any later version.
  12. *
  13. * Alfabetiza is distributed in the hope that it will be useful,
  14. * but WITHOUT ANY WARRANTY; without even the implied warranty of
  15. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  16. * GNU General Public License for more details.
  17. *
  18. * You should have received a copy of the GNU General Public License
  19. * along with Alfabetiza. If not, see <https://www.gnu.org/licenses/>.
  20. *************************************************************************/
  21. class RebusLevelSelector extends Object2D
  22. {
  23. /** @type {Object} */
  24. gridMargins = {
  25. left: 0,
  26. right: 0,
  27. up: 500,
  28. down: 0
  29. };
  30. /** @type {number} */
  31. gridCols = 5;
  32. _setup()
  33. {
  34. var b = new RebusLevelButton("Tutorial");
  35. b.levelData = REBUS_LEVELS.tutorial;
  36. b.setLabel("Tutorial");
  37. b.setFontSize(40);
  38. this.addChild(b);
  39. b.setSize(200, 100);
  40. b.setPosition((1920 - b.getSize().x) / 2, 300);
  41. b.connect("levelSelected", this, "_onTutorialSelected");
  42. var i = 1;
  43. while (REBUS_LEVELS[`level${i}`])
  44. {
  45. var b = new RebusLevelButton(`level${i}`);
  46. b.levelData = REBUS_LEVELS[`level${i}`];
  47. b.setLabel(`${i}`);
  48. b.setFontSize(40);
  49. this.addChild(b);
  50. b.setSize(100, 100);
  51. b.setPosition((((i - 1) % this.gridCols) + 1) * 1920 / (this.gridCols + 1) - b.getSize().x / 2, this.gridMargins.up + 200 * int((i - 1) / this.gridCols));
  52. b.connect("levelSelected", this, "_onLevelSelected");
  53. i++;
  54. }
  55. this.backButton = new Button("BackButton");
  56. this.backButton.setLabel("Voltar");
  57. this.backButton.setFontSize(30);
  58. this.backButton.setPosition(20, 20);
  59. this.backButton.setSize(110, 75);
  60. this.backButton.connect("mouseClicked", this, "_onBackClicked");
  61. this.addChild(this.backButton);
  62. }
  63. _draw( /** @type {number} */ delta, /** @type {p5.Graphics} */ db)
  64. {
  65. background(52);
  66. db.textAlign(CENTER, CENTER);
  67. db.fill(255);
  68. db.textSize(100);
  69. db.text("RÉBUS", 1920 / 2, 125);
  70. db.textSize(40);
  71. db.text("Escolha o nível", 1920 / 2, 200);
  72. }
  73. _onTutorialSelected( /** @type {Object} */ levelData)
  74. {
  75. var rg = new RebusTutorial("RebusTutorial");
  76. rg.levelData = levelData;
  77. GameHandler.addRootObject(rg);
  78. this.queueFree();
  79. }
  80. _onLevelSelected( /** @type {Object} */ levelData)
  81. {
  82. var rg = new RebusGame("RebusGame");
  83. rg.levelData = levelData;
  84. GameHandler.addRootObject(rg);
  85. this.queueFree();
  86. }
  87. _onBackClicked()
  88. {
  89. var ems = new EarthMinigameSelector("EarthMinigameSelector");
  90. GameHandler.addRootObject(ems);
  91. this.queueFree();
  92. }
  93. }