a munch adventure
No puede seleccionar más de 25 temas Los temas deben comenzar con una letra o número, pueden incluir guiones ('-') y pueden tener hasta 35 caracteres de largo.
 
 
 
 

135 líneas
3.5 KiB

  1. "use strict"
  2. let activeModal = null;
  3. const version = "pre-alpha";
  4. let state = {
  5. player: {
  6. items: {
  7. keys: [
  8. ]
  9. },
  10. rooms: {
  11. }
  12. }
  13. }
  14. function print(lines) {
  15. (lines.concat([String.fromCharCode(160)])).forEach(line => {
  16. const log = document.querySelector("#log");
  17. const div = document.createElement("div");
  18. div.textContent = line;
  19. log.appendChild(div);
  20. });
  21. log.scrollTop = log.scrollHeight;
  22. }
  23. function refresh() {
  24. updateRoom(state);
  25. updateWorldInfo(state);
  26. updatePlayerInfo(state);
  27. }
  28. function switchModal(to) {
  29. closeModal(activeModal);
  30. openModal(to);
  31. }
  32. function closeModal(modal) {
  33. const div = document.querySelector("#" + modal);
  34. div.classList.remove("modal");
  35. div.classList.add("hidden-modal");
  36. }
  37. function openModal(modal) {
  38. const div = document.querySelector("#" + modal);
  39. div.classList.remove("hidden-modal");
  40. div.classList.add("modal");
  41. activeModal = modal;
  42. }
  43. function returnToStart() {
  44. document.querySelector("#game").classList.remove("scene");
  45. document.querySelector("#game").classList.add("hidden-scene");
  46. document.querySelector("#pick").classList.remove("hidden-scene");
  47. document.querySelector("#pick").classList.add("scene");
  48. }
  49. // set up the game
  50. function init(story) {
  51. initWorld(story, state);
  52. initAudio(story, state);
  53. initGame(story, state);
  54. goToRoom("Home", state);
  55. }
  56. // set up the load screen
  57. function initStart() {
  58. const versionFields = document.querySelectorAll(".version");
  59. const select = document.querySelector("#game-select");
  60. const options = {};
  61. versionFields.forEach(field => {
  62. field.textContent = "Version: " + version;
  63. });
  64. stories.forEach(story => {
  65. const option = document.createElement("option");
  66. option.value = story.id;
  67. option.textContent = story.name;
  68. select.appendChild(option);
  69. options[story.id] = story;
  70. })
  71. const start = document.querySelector("#start-button");
  72. start.addEventListener("click", (event) => {
  73. init(options[select.value]);
  74. document.querySelector("#pick").classList.remove("scene");
  75. document.querySelector("#pick").classList.add("hidden-scene");
  76. document.querySelector("#game").classList.remove("hidden-scene");
  77. document.querySelector("#game").classList.add("scene");
  78. });
  79. const gameMenuButton = document.querySelector("#game-menu-button");
  80. const menuSettings = document.querySelector("#menu-button-settings");
  81. const menuQuit = document.querySelector("#menu-button-quit");
  82. const menuResume = document.querySelector("#menu-button-resume");
  83. const menuSettingsVolume = document.querySelector("#menu-slider-volume");
  84. const menuSettingsClose = document.querySelector("#menu-button-settings-close");
  85. const menuQuitYes = document.querySelector("#menu-button-quit-yes");
  86. const menuQuitNo = document.querySelector("#menu-button-quit-no");
  87. gameMenuButton.addEventListener("click", () => openModal("menu"));
  88. menuSettings.addEventListener("click", () => switchModal("settings"));
  89. menuQuit.addEventListener("click", () => switchModal("quit"));
  90. menuResume.addEventListener("click", () => closeModal("menu"));
  91. menuSettingsVolume.addEventListener("input", () => {
  92. setVolume(parseFloat(menuSettingsVolume.value));
  93. })
  94. menuSettingsClose.addEventListener("click", () => switchModal("menu"));
  95. menuQuitYes.addEventListener("click", () => {
  96. closeModal("quit");
  97. returnToStart();
  98. });
  99. menuQuitNo.addEventListener("click", () => switchModal("menu"));
  100. }
  101. window.addEventListener("load", initStart);