crunch
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

84 lines
2.4 KiB

  1. let currentRoom = null;
  2. let dirButtons = [];
  3. function updateDisplay() {
  4. for (let i = 0; i < dirButtons.length; i++) {
  5. let button = dirButtons[i];
  6. if (currentRoom.exits[i] == null) {
  7. button.disabled = true;
  8. button.classList.remove("active-compass-button");
  9. button.classList.add("inactive-compass-button");
  10. button.innerHTML = "";
  11. } else {
  12. button.disabled = false;
  13. button.classList.remove("inactive-compass-button");
  14. button.classList.add("active-compass-button");
  15. button.innerHTML = currentRoom.exits[i].name;
  16. }
  17. }
  18. }
  19. function move(direction) {
  20. let target = currentRoom.exits[direction];
  21. if (target == null) {
  22. alert("Tried to move to an empty room!");
  23. return;
  24. } else {
  25. currentRoom = target;
  26. update(["You move to " + currentRoom.name,currentRoom.description]);
  27. updateDisplay();
  28. }
  29. }
  30. window.addEventListener('load', function(event) {
  31. loadCompass();
  32. currentRoom = createWorld();
  33. updateDisplay();
  34. });
  35. function update(lines=[]) {
  36. let log = document.getElementById("log");
  37. for (let i=0; i<lines.length; i++) {
  38. let div = document.createElement("div");
  39. div.innerHTML = lines[i];
  40. log.appendChild(div);
  41. }
  42. updateDisplay();
  43. }
  44. function loadCompass() {
  45. dirButtons[NORTH_WEST] = document.getElementById("compass-north-west");
  46. dirButtons[NORTH_WEST].addEventListener("click", function() {
  47. move(NORTH_WEST);
  48. });
  49. dirButtons[NORTH] = document.getElementById("compass-north");
  50. dirButtons[NORTH].addEventListener("click", function() {
  51. move(NORTH);
  52. });
  53. dirButtons[NORTH_EAST] = document.getElementById("compass-north-east");
  54. dirButtons[NORTH_EAST].addEventListener("click", function() {
  55. move(NORTH_EAST);
  56. });
  57. dirButtons[WEST] = document.getElementById("compass-west");
  58. dirButtons[WEST].addEventListener("click", function() {
  59. move(WEST);
  60. });
  61. dirButtons[EAST] = document.getElementById("compass-east");
  62. dirButtons[EAST].addEventListener("click", function() {
  63. move(EAST);
  64. });
  65. dirButtons[SOUTH_WEST] = document.getElementById("compass-south-west");
  66. dirButtons[SOUTH_WEST].addEventListener("click", function() {
  67. move(SOUTH_WEST);
  68. });
  69. dirButtons[SOUTH] = document.getElementById("compass-south");
  70. dirButtons[SOUTH].addEventListener("click", function() {
  71. move(SOUTH);
  72. });
  73. dirButtons[SOUTH_EAST] = document.getElementById("compass-south-east");
  74. dirButtons[SOUTH_EAST].addEventListener("click", function() {
  75. move(SOUTH_EAST);
  76. });
  77. }