mudlet-map-browser-script 0.0.7 → 0.0.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/bundle.min.js +1 -1
- package/index.js +57 -9
- package/package.json +1 -1
package/index.js
CHANGED
|
@@ -38,7 +38,7 @@ if (location.hostname !== "") {
|
|
|
38
38
|
translator.translatePageTo();
|
|
39
39
|
})
|
|
40
40
|
.catch(e => console.log(`Cannot fetch translations. ${e.message}`));
|
|
41
|
-
} else if (translations) {
|
|
41
|
+
} else if (typeof translations !== "undefined") {
|
|
42
42
|
let defaultLanguage = {};
|
|
43
43
|
document.querySelectorAll("[data-i18n]").forEach(item => {
|
|
44
44
|
defaultLanguage[item.getAttribute("data-i18n")] = item.innerHTML;
|
|
@@ -109,6 +109,7 @@ class PageControls {
|
|
|
109
109
|
this.languageSelector = document.querySelector(".lang-dropdown");
|
|
110
110
|
this.currentLanguageFlag = document.querySelector(".current-language-flag");
|
|
111
111
|
this.pathBox = document.querySelector(".path-box ul");
|
|
112
|
+
this.areaModal = document.getElementById("area-info")
|
|
112
113
|
this.zIndex = 0;
|
|
113
114
|
this.settings.optimizeDrag = true;
|
|
114
115
|
this.settings.preview = true;
|
|
@@ -187,6 +188,10 @@ class PageControls {
|
|
|
187
188
|
this.resetSettings();
|
|
188
189
|
});
|
|
189
190
|
|
|
191
|
+
this.areaModal?.addEventListener("show.bs.modal", () => {
|
|
192
|
+
this.populateAreaInfo(this.areaId, this.zIndex);
|
|
193
|
+
})
|
|
194
|
+
|
|
190
195
|
window.addEventListener("resize", () => {
|
|
191
196
|
this.render();
|
|
192
197
|
});
|
|
@@ -350,6 +355,49 @@ class PageControls {
|
|
|
350
355
|
});
|
|
351
356
|
}
|
|
352
357
|
|
|
358
|
+
populateAreaInfo(areaId, zIndex) {
|
|
359
|
+
let area = this.reader.getArea(areaId, zIndex);
|
|
360
|
+
this.areaModal.querySelector(".area-name").innerHTML = `${area.areaName} (id: ${area.areaId})`;
|
|
361
|
+
this.areaModal.querySelector(".area-room-count").innerHTML = Object.keys(area.rooms).length;
|
|
362
|
+
let areaExits = this.areaModal.querySelector(".area-exits");
|
|
363
|
+
areaExits.innerHTML = ""
|
|
364
|
+
Object.values(area.rooms).flatMap(room => this.getAreaExits(room)).forEach(([id, targetId]) => {
|
|
365
|
+
let targetArea = this.reader.getAreaByRoomId(targetId)
|
|
366
|
+
let li = document.createElement("li")
|
|
367
|
+
let roomLink = document.createElement("a")
|
|
368
|
+
roomLink.setAttribute("href", "#")
|
|
369
|
+
roomLink.setAttribute("data-room", id)
|
|
370
|
+
roomLink.appendChild(document.createTextNode(id))
|
|
371
|
+
roomLink.addEventListener("click", event => {
|
|
372
|
+
event.preventDefault();
|
|
373
|
+
this.findRoom(parseInt(event.currentTarget.getAttribute("data-room")));
|
|
374
|
+
});
|
|
375
|
+
let arrow = document.createTextNode(" -> ")
|
|
376
|
+
let targetLink = document.createElement("a")
|
|
377
|
+
targetLink.setAttribute("href", "#")
|
|
378
|
+
targetLink.setAttribute("data-room", targetId)
|
|
379
|
+
targetLink.appendChild(document.createTextNode(`${targetId} (${targetArea.areaName})`))
|
|
380
|
+
targetLink.addEventListener("click", event => {
|
|
381
|
+
event.preventDefault();
|
|
382
|
+
this.findRoom(parseInt(event.currentTarget.getAttribute("data-room")));
|
|
383
|
+
});
|
|
384
|
+
li.append(roomLink, arrow, targetLink)
|
|
385
|
+
areaExits.appendChild(li);
|
|
386
|
+
})
|
|
387
|
+
}
|
|
388
|
+
|
|
389
|
+
getAreaExits(room) {
|
|
390
|
+
let exits = [];
|
|
391
|
+
Object.values(room.exits).filter(target => this.isExitTarget(target)).forEach(exitId => exits.push([room.id, exitId]))
|
|
392
|
+
Object.values(room.specialExits).filter(target => this.isExitTarget(target)).forEach(exitId => exits.push([room.id, exitId]))
|
|
393
|
+
return exits
|
|
394
|
+
}
|
|
395
|
+
|
|
396
|
+
isExitTarget(destinationRoom) {
|
|
397
|
+
let destRoom = this.reader.getRoomById(destinationRoom);
|
|
398
|
+
return parseInt(destRoom.areaId) !== this.renderer.area.areaId;
|
|
399
|
+
}
|
|
400
|
+
|
|
353
401
|
populateSelectBox() {
|
|
354
402
|
this.select.querySelectorAll("option").forEach(item => item.remove());
|
|
355
403
|
this.reader
|
|
@@ -384,11 +432,9 @@ class PageControls {
|
|
|
384
432
|
});
|
|
385
433
|
|
|
386
434
|
if (formData.roomId !== undefined) {
|
|
387
|
-
let roomId = formData.roomId;
|
|
388
|
-
if (isNaN(roomId)) {
|
|
435
|
+
let roomId = formData.roomId.split(",");
|
|
436
|
+
if (isNaN(roomId[0])) {
|
|
389
437
|
roomId = findNpc(roomId);
|
|
390
|
-
} else {
|
|
391
|
-
roomId = [roomId];
|
|
392
438
|
}
|
|
393
439
|
this.findRooms(roomId);
|
|
394
440
|
}
|
|
@@ -424,17 +470,16 @@ class PageControls {
|
|
|
424
470
|
}
|
|
425
471
|
|
|
426
472
|
findRooms(rooms) {
|
|
427
|
-
//TODO Should actually use multiple rooms
|
|
428
473
|
let area = this.reader.getAreaByRoomId(rooms[0]);
|
|
429
474
|
if (area !== undefined) {
|
|
430
475
|
this.renderArea(area.areaId, area.zIndex).then(() => {
|
|
476
|
+
this.renderer.controls.centerRoom(rooms[0]);
|
|
431
477
|
this.renderer.controls.setZoom(1);
|
|
432
478
|
this.renderer.clearHighlight();
|
|
433
479
|
rooms.forEach(room => {
|
|
434
480
|
this.renderer.renderHighlight(room);
|
|
435
481
|
});
|
|
436
|
-
this.
|
|
437
|
-
this.renderer.controls.centerOnItem(this.renderer.highlights);
|
|
482
|
+
//this.renderer.controls.centerOnItem(this.renderer.highlights);
|
|
438
483
|
});
|
|
439
484
|
} else {
|
|
440
485
|
this.showToast(translator.translateForKey("location-not-found", translator.currentLanguage));
|
|
@@ -522,6 +567,8 @@ class PageControls {
|
|
|
522
567
|
}
|
|
523
568
|
|
|
524
569
|
showRoomInfo(room) {
|
|
570
|
+
let bgColor = this.reader.getColors()[room.env] ?? [114, 1, 0]
|
|
571
|
+
this.infoBox.style.border = `2px solid rgba(${bgColor[0]}, ${bgColor[1]}, ${bgColor[2]}, 0.5)`
|
|
525
572
|
this.infoBox.style.display = "initial";
|
|
526
573
|
this.infoBox.querySelector(".room-id").innerHTML = room.id;
|
|
527
574
|
this.infoBox.querySelector(".room-link").setAttribute("href", `${url}?loc=${room.id}`);
|
|
@@ -547,7 +594,8 @@ class PageControls {
|
|
|
547
594
|
for (let userDataKey in userData) {
|
|
548
595
|
show = true;
|
|
549
596
|
let dataElement = document.createElement("li");
|
|
550
|
-
dataElement.
|
|
597
|
+
dataElement.classList = ["user-data"]
|
|
598
|
+
dataElement.innerHTML = `<p>${userDataKey}:</p><p class="value">${userData[userDataKey].replaceAll("\\n", "\n")}</p>`;
|
|
551
599
|
containerList.append(dataElement);
|
|
552
600
|
}
|
|
553
601
|
container.style.display = show ? "initial" : "none";
|