|
|
|
@@ -11,6 +11,14 @@ dirs = { |
|
|
|
"descend": "Down" |
|
|
|
} |
|
|
|
|
|
|
|
moveListeners = { |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
actionListeners = { |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
function initWorld(story, state) { |
|
|
|
state.world = story["world"]; |
|
|
|
initRoomState(state); |
|
|
|
@@ -23,6 +31,25 @@ function initRoomState(state) { |
|
|
|
}); |
|
|
|
} |
|
|
|
|
|
|
|
function resetControls(state) { |
|
|
|
const moveHolder = document.querySelector("#move-holder"); |
|
|
|
|
|
|
|
moveHolder.innerHTML = ""; |
|
|
|
|
|
|
|
Object.entries(dirs).forEach(([dir, name]) => { |
|
|
|
const button = document.createElement("button"); |
|
|
|
button.classList.add("move-button") |
|
|
|
button.id = "move-" + dir; |
|
|
|
button.classList.add("disabled"); |
|
|
|
button.setAttribute("disabled", "true"); |
|
|
|
button.textContent = dirs[dir]; |
|
|
|
moveHolder.appendChild(button); |
|
|
|
|
|
|
|
moveListeners[dir] = undefined; |
|
|
|
}); |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
function showActionDescription(desc) { |
|
|
|
const descHolder = document.querySelector("#desc"); |
|
|
|
|
|
|
|
@@ -69,6 +96,8 @@ function moveToRoom(src, exit, dest, state) { |
|
|
|
|
|
|
|
state.player.location = dest; |
|
|
|
|
|
|
|
resetControls(); |
|
|
|
|
|
|
|
refresh(); |
|
|
|
} |
|
|
|
|
|
|
|
@@ -92,6 +121,8 @@ function goToRoom(dest, state) { |
|
|
|
|
|
|
|
state.player.location = dest; |
|
|
|
|
|
|
|
resetControls(); |
|
|
|
|
|
|
|
refresh(); |
|
|
|
} |
|
|
|
|
|
|
|
@@ -109,18 +140,11 @@ function updateRoom(state) { |
|
|
|
areaName.textContent = room.name; |
|
|
|
areaDesc.textContent = room.desc; |
|
|
|
|
|
|
|
const moveHolder = document.querySelector("#move-holder"); |
|
|
|
|
|
|
|
moveHolder.innerHTML = ""; |
|
|
|
|
|
|
|
Object.entries(dirs).forEach(([dir, name]) => { |
|
|
|
const button = document.createElement("button"); |
|
|
|
button.classList.add("move-button") |
|
|
|
button.id = "move-" + dir; |
|
|
|
const button = document.querySelector("#move-" + dir); |
|
|
|
button.classList.add("disabled"); |
|
|
|
button.setAttribute("disabled", "true"); |
|
|
|
button.textContent = dirs[dir]; |
|
|
|
moveHolder.appendChild(button); |
|
|
|
}); |
|
|
|
|
|
|
|
if (room.exits) { |
|
|
|
@@ -148,11 +172,19 @@ function updateRoom(state) { |
|
|
|
button.classList.remove("disabled"); |
|
|
|
button.removeAttribute("disabled"); |
|
|
|
|
|
|
|
button.addEventListener("click", () => { |
|
|
|
// todo: log |
|
|
|
if (moveListeners[dir]) { |
|
|
|
button.removeEventListener("click", moveListeners[dir]); |
|
|
|
moveListeners[dir] = undefined; |
|
|
|
} |
|
|
|
|
|
|
|
moveFunc = () => { |
|
|
|
moveToRoom(room, exit, exit.target, state); |
|
|
|
}) |
|
|
|
}; |
|
|
|
|
|
|
|
button.addEventListener("click", moveFunc); |
|
|
|
|
|
|
|
moveListeners[dir] = moveFunc; |
|
|
|
|
|
|
|
button.addEventListener("mouseenter", () => { |
|
|
|
showActionDescription(exit.desc); |
|
|
|
}); |
|
|
|
|