munch
Ви не можете вибрати більше 25 тем Теми мають розпочинатися з літери або цифри, можуть містити дефіси (-) і не повинні перевищувати 35 символів.
 
 
 

117 рядки
3.3 KiB

  1. let currentRoom = null;
  2. let dirButtons = [];
  3. let mode = "explore";
  4. let player = {
  5. name: "Fen",
  6. height: 1.55,
  7. health: 75,
  8. maxHealth: 100,
  9. fullness: 35,
  10. maxFullness: 200
  11. };
  12. function updateExplore() {
  13. for (let i = 0; i < dirButtons.length; i++) {
  14. let button = dirButtons[i];
  15. if (currentRoom.exits[i] == null) {
  16. button.disabled = true;
  17. button.classList.remove("active-compass-button");
  18. button.classList.add("inactive-compass-button");
  19. button.innerHTML = "";
  20. } else {
  21. button.disabled = false;
  22. button.classList.remove("inactive-compass-button");
  23. button.classList.add("active-compass-button");
  24. button.innerHTML = currentRoom.exits[i].name;
  25. }
  26. }
  27. }
  28. function updateCombat() {
  29. }
  30. function updateDisplay() {
  31. switch(mode) {
  32. case "explore":
  33. document.getElementById("selector-explore").style.display = "flex";
  34. document.getElementById("selector-combat").style.display = "none";
  35. updateExplore();
  36. break;
  37. case "combat":
  38. document.getElementById("selector-explore").style.display = "none";
  39. document.getElementById("selector-combat").style.display = "flex";
  40. updateCombat();
  41. break;
  42. }
  43. document.getElementById("stat-name").innerHTML = "Name: " + player.name;
  44. document.getElementById("stat-health").innerHTML = "Health: " + player.health + "/" + player.maxHealth;
  45. document.getElementById("stat-fullness").innerHTML = "Fullness: " + player.fullness + "/" + player.maxFullness;
  46. }
  47. function move(direction) {
  48. let target = currentRoom.exits[direction];
  49. if (target == null) {
  50. alert("Tried to move to an empty room!");
  51. return;
  52. } else {
  53. currentRoom = target;
  54. update(["You move to " + currentRoom.name,currentRoom.description]);
  55. updateDisplay();
  56. }
  57. }
  58. window.addEventListener('load', function(event) {
  59. loadCompass();
  60. currentRoom = createWorld();
  61. updateDisplay();
  62. });
  63. function update(lines=[]) {
  64. let log = document.getElementById("log");
  65. for (let i=0; i<lines.length; i++) {
  66. let div = document.createElement("div");
  67. div.innerHTML = lines[i];
  68. log.appendChild(div);
  69. }
  70. updateDisplay();
  71. }
  72. function loadCompass() {
  73. dirButtons[NORTH_WEST] = document.getElementById("compass-north-west");
  74. dirButtons[NORTH_WEST].addEventListener("click", function() {
  75. move(NORTH_WEST);
  76. });
  77. dirButtons[NORTH] = document.getElementById("compass-north");
  78. dirButtons[NORTH].addEventListener("click", function() {
  79. move(NORTH);
  80. });
  81. dirButtons[NORTH_EAST] = document.getElementById("compass-north-east");
  82. dirButtons[NORTH_EAST].addEventListener("click", function() {
  83. move(NORTH_EAST);
  84. });
  85. dirButtons[WEST] = document.getElementById("compass-west");
  86. dirButtons[WEST].addEventListener("click", function() {
  87. move(WEST);
  88. });
  89. dirButtons[EAST] = document.getElementById("compass-east");
  90. dirButtons[EAST].addEventListener("click", function() {
  91. move(EAST);
  92. });
  93. dirButtons[SOUTH_WEST] = document.getElementById("compass-south-west");
  94. dirButtons[SOUTH_WEST].addEventListener("click", function() {
  95. move(SOUTH_WEST);
  96. });
  97. dirButtons[SOUTH] = document.getElementById("compass-south");
  98. dirButtons[SOUTH].addEventListener("click", function() {
  99. move(SOUTH);
  100. });
  101. dirButtons[SOUTH_EAST] = document.getElementById("compass-south-east");
  102. dirButtons[SOUTH_EAST].addEventListener("click", function() {
  103. move(SOUTH_EAST);
  104. });
  105. }