UNPKG

castle-ravenloft-navigator

Version:
427 lines (426 loc) 22.5 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); // import dijkstrajs from "dijkstrajs"; // @ts-ignore const dijkstrajs_1 = __importDefault(require("dijkstrajs")); class MyRavenloftGraph { constructor() { this.mapColors = { "12": "#525252", "11": "#C9C9C9", "3": "#F2F2F2", "4": "#75140C", "5": "#F9DA78", "6": "#DCE3F1", "7": "#DCE3F1", "8": "#DCE3F1", "9": "#DCE3F1", }; this.graph = {}; this.secretDoors = {}; this.roomInformations = {}; } getGraph() { return this.graph; } getSecretDoors() { return this.secretDoors; } getMapColorOfRoom(room) { var _a; let roomInformation = this.roomInformations[room]; let map = roomInformation === null || roomInformation === void 0 ? void 0 : roomInformation.map; // @ts-ignore return (_a = this.mapColors) === null || _a === void 0 ? void 0 : _a[map]; } setSecretDoorsFound(secretDoorId) { let secretDoors = this.secretDoors[secretDoorId]; if (secretDoors) { secretDoors.forEach((secretDoor) => { this.graph[secretDoor.node1][secretDoor.node2] = secretDoor.weight; }); } } getRooms() { return Object.keys(this.graph); } addRoomsToMap(rooms, map) { rooms.forEach(room => { this.addMapToRoom(room, map); }); } addMapToRoom(room, map) { if (!this.roomInformations[room]) { this.roomInformations[room] = {}; } this.roomInformations[room]["map"] = map; } addNode(node) { this.graph[node] = {}; } doesNodeExist(node) { return this.graph[node] !== undefined; } addOneWayEdge(node1, node2, weight) { if (!this.doesNodeExist(node1)) { this.addNode(node1); } this.graph[node1][node2] = weight; } addOneWaySecretDoor(node1, node2, weight, id) { let registeredNodes = this.secretDoors[id] || []; registeredNodes.push({ node1: node1, node2: node2, weight: weight }); this.secretDoors[id] = registeredNodes; } addOneWayStair(node1, node2, weight) { //TODO: add stairs this.addOneWayEdge(node1, node2, weight); } addOneWayElevator(node1, node2, weight) { //TODO: add stairs //this.addOneWayEdge(node1, node2, weight); } addOneWayWindow(node1, node2, weight) { this.addOneWayEdge(node1, node2, weight); } } function getMyRavenloftGraph() { const myRavenloftGraph = new MyRavenloftGraph(); const MAP_12_to_Map_11 = 15; const MAP_11_to_Map_3 = 12; const MAP_3_to_Map_4 = 15; const MAP_4_to_Map_5 = 12; const MAP_5_to_Map_6 = 12; const MAP_6_to_Map_7 = 12; const MAP_7_to_Map_8 = 8; const MAP_8_to_Map_9 = 15; const MAP_9_to_Map_10 = 18; myRavenloftGraph.addOneWayEdge("K1", "K7", 1); myRavenloftGraph.addOneWayEdge("K3", "K24", 1); myRavenloftGraph.addOneWayEdge("K3", "K6", 1); myRavenloftGraph.addOneWayEdge("K6", "K3", 1); myRavenloftGraph.addOneWayEdge("K6", "K88", MAP_11_to_Map_3 + MAP_12_to_Map_11); myRavenloftGraph.addOneWayEdge("K7", "K1", 1); myRavenloftGraph.addOneWayEdge("K7", "K8", 1); myRavenloftGraph.addOneWayEdge("K8", "K7", 1); myRavenloftGraph.addOneWayEdge("K8", "K9", 1); myRavenloftGraph.addOneWayEdge("K8", "K14", 1); myRavenloftGraph.addOneWayEdge("K8", "K19", 1); myRavenloftGraph.addOneWayEdge("K9", "K8", 1); myRavenloftGraph.addOneWayEdge("K9", "K10", 1); myRavenloftGraph.addOneWayEdge("K9", "K21-F1", 1); myRavenloftGraph.addOneWayEdge("K10", "K9", 1); myRavenloftGraph.addOneWaySecretDoor("K10", "K11", 1, "Dining_Hall_(K10-K11)"); myRavenloftGraph.addOneWaySecretDoor("K11", "K10", 1, "Dining_Hall_(K10-K11)"); myRavenloftGraph.addOneWayEdge("K11", "K13-1S", 1); // South K12 Ground floor myRavenloftGraph.addOneWayEdge("K12-1S", "K13-1S", 1); // North K12 Ground floor myRavenloftGraph.addOneWayEdge("K12-1N", "K13-1N", 1); // South K12 2nd floor myRavenloftGraph.addOneWayEdge("K12-2S", "K13-2S", 1); // North K12 2nd floor myRavenloftGraph.addOneWayEdge("K12-2N", "K13-2N", 1); // South K13 Ground floor myRavenloftGraph.addOneWayEdge("K13-1S", "K11", 1); myRavenloftGraph.addOneWayEdge("K13-1S", "K12-1S", 1); myRavenloftGraph.addOneWayEdge("K13-1S", "K64-F1", 1); // South K13 2nd floor myRavenloftGraph.addOneWayEdge("K13-2S", "K12-2S", 1); myRavenloftGraph.addOneWayEdge("K13-2S", "K22-2S", 1); myRavenloftGraph.addOneWaySecretDoor("K13-2S", "K25", 1, "Audience_Hall_(K13-2S-K25)"); myRavenloftGraph.addOneWayEdge("K13-2S", "K64-F2", 1); // North K13 Ground floor myRavenloftGraph.addOneWayEdge("K13-1N", "K12-1S", 1); myRavenloftGraph.addOneWayEdge("K13-1N", "K22-1N", 1); myRavenloftGraph.addOneWayEdge("K13-1N", "K20-F2", 1); // North K13 2nd floor myRavenloftGraph.addOneWayEdge("K13-2N", "K12-2N", 1); myRavenloftGraph.addOneWayEdge("K13-2N", "K22-2N", 1); myRavenloftGraph.addOneWaySecretDoor("K13-2N", "K33", 1, "Kings_Apartment_(K13-2N-K33)"); myRavenloftGraph.addOneWayEdge("K14", "K8", 1); myRavenloftGraph.addOneWayEdge("K14", "K15", 1); myRavenloftGraph.addOneWayEdge("K15", "K14", 1); myRavenloftGraph.addOneWayEdge("K15", "K16", 1); myRavenloftGraph.addOneWayEdge("K15", "K17", 1); myRavenloftGraph.addOneWayEdge("K16", "K15", 1); myRavenloftGraph.addOneWayEdge("K16", "K29", MAP_3_to_Map_4); myRavenloftGraph.addOneWayEdge("K17", "K15", 1); myRavenloftGraph.addOneWayEdge("K17", "K18-F1", 1); myRavenloftGraph.addOneWayEdge("K18-F1", "K17", 1); myRavenloftGraph.addOneWayEdge("K18-F4", "K59", 1); myRavenloftGraph.addOneWaySecretDoor("K18-B1", "K63", 1, "Wine_Cellar_(K18-B1-K63)"); myRavenloftGraph.addOneWayEdge("K18-B2", "K84", 1); // K18 High Tower Staircase myRavenloftGraph.addOneWayStair("K18-B2", "K18-B1", MAP_12_to_Map_11); myRavenloftGraph.addOneWayStair("K18-B1", "K18-B2", MAP_12_to_Map_11); myRavenloftGraph.addOneWayStair("K18-B1", "K18-F1", MAP_11_to_Map_3); myRavenloftGraph.addOneWayStair("K18-F1", "K18-B1", MAP_11_to_Map_3); const K18_F1_F4 = MAP_3_to_Map_4 + MAP_4_to_Map_5 + MAP_5_to_Map_6 + MAP_6_to_Map_7 + MAP_7_to_Map_8 + MAP_8_to_Map_9 + MAP_9_to_Map_10; myRavenloftGraph.addOneWayStair("K18-F1", "K18-F4", K18_F1_F4); myRavenloftGraph.addOneWayStair("K18-F4", "K18-F1", K18_F1_F4); myRavenloftGraph.addOneWayEdge("K19", "K8", 1); myRavenloftGraph.addOneWayStair("K19", "K25", MAP_3_to_Map_4); myRavenloftGraph.addOneWayEdge("K20-F1", "K20a", 1); myRavenloftGraph.addOneWayEdge("K20-F3", "K46", 1); myRavenloftGraph.addOneWayEdge("K20-F3", "K45", 1); myRavenloftGraph.addOneWayEdge("K20-F4", "K58", 1); myRavenloftGraph.addOneWayEdge("K20-F4", "K60", 1); myRavenloftGraph.addOneWaySecretDoor("K20-F2", "K34", 1, "Upper_Servant_Floor_(K20-F2-K34)"); myRavenloftGraph.addOneWayEdge("K20-F2", "K13-1N", 1); // K20 Heart of Sorrows Staircase myRavenloftGraph.addOneWayStair("K20-F1", "K20-F2", MAP_3_to_Map_4); myRavenloftGraph.addOneWayStair("K20-F2", "K20-F1", MAP_3_to_Map_4); myRavenloftGraph.addOneWayStair("K20-F2", "K20-F3", MAP_4_to_Map_5); myRavenloftGraph.addOneWayStair("K20-F3", "K20-F2", MAP_4_to_Map_5); myRavenloftGraph.addOneWayStair("K20-F3", "K20-F4", MAP_5_to_Map_6 + MAP_6_to_Map_7 + MAP_7_to_Map_8); myRavenloftGraph.addOneWayStair("K20-F4", "K20-F3", MAP_5_to_Map_6 + MAP_6_to_Map_7 + MAP_7_to_Map_8); myRavenloftGraph.addOneWayEdge("K20a", "K20-F1", 1); myRavenloftGraph.addOneWayStair("K20a", "K71", MAP_11_to_Map_3); myRavenloftGraph.addOneWayEdge("K21-F1", "K9", 1); myRavenloftGraph.addOneWayEdge("K21-F2", "K30", 1); myRavenloftGraph.addOneWayEdge("K21-F3", "K35", 1); myRavenloftGraph.addOneWayEdge("K21-F4", "K47", 1); myRavenloftGraph.addOneWayEdge("K21-B1", "K61", 1); myRavenloftGraph.addOneWayEdge("K21-B2", "K73", 1); // K21 Castle Ravenloft South Tower Staircase myRavenloftGraph.addOneWayStair("K21-B2", "K21-B1", MAP_12_to_Map_11); myRavenloftGraph.addOneWayStair("K21-B1", "K21-B2", MAP_12_to_Map_11); myRavenloftGraph.addOneWayStair("K21-B1", "K21-F1", MAP_11_to_Map_3); myRavenloftGraph.addOneWayStair("K21-F1", "K21-B1", MAP_11_to_Map_3); myRavenloftGraph.addOneWayStair("K21-F1", "K21-F2", MAP_3_to_Map_4); myRavenloftGraph.addOneWayStair("K21-F2", "K21-F1", MAP_3_to_Map_4); myRavenloftGraph.addOneWayStair("K21-F2", "K21-F3", MAP_4_to_Map_5); myRavenloftGraph.addOneWayStair("K21-F3", "K21-F2", MAP_4_to_Map_5); const K21_F3_F4 = MAP_5_to_Map_6; myRavenloftGraph.addOneWayStair("K21-F3", "K21-F4", K21_F3_F4); myRavenloftGraph.addOneWayStair("K21-F4", "K21-F3", K21_F3_F4); myRavenloftGraph.addOneWayEdge("K22-1N", "K13-1N", 1); myRavenloftGraph.addOneWayEdge("K22-2N", "K13-2N", 1); myRavenloftGraph.addOneWayEdge("K22-2S", "K13-2S", 1); myRavenloftGraph.addOneWayEdge("K23", "K24", 1); myRavenloftGraph.addOneWayStair("K23", "K62", MAP_11_to_Map_3); myRavenloftGraph.addOneWayEdge("K24", "K3", 1); myRavenloftGraph.addOneWayEdge("K24", "K23", 1); myRavenloftGraph.addOneWayStair("K24", "K34", MAP_3_to_Map_4); myRavenloftGraph.addOneWaySecretDoor("K25", "K13-2S", 1, "AudienceHall_(K13-2S-K25)"); myRavenloftGraph.addOneWayStair("K25", "K19", MAP_3_to_Map_4); myRavenloftGraph.addOneWayEdge("K25", "K26", 1); myRavenloftGraph.addOneWayEdge("K25", "K30", 1); myRavenloftGraph.addOneWayEdge("K26", "K25", 1); myRavenloftGraph.addOneWayEdge("K26", "K27", 1); myRavenloftGraph.addOneWaySecretDoor("K26", "K33", 1, "Kings_Aprartment_(K26-K33)"); myRavenloftGraph.addOneWayEdge("K27", "K26", 1); myRavenloftGraph.addOneWayEdge("K27", "K28", 1); myRavenloftGraph.addOneWayEdge("K28", "K27", 1); myRavenloftGraph.addOneWayStair("K28", "K15", MAP_3_to_Map_4); myRavenloftGraph.addOneWayEdge("K28", "K29", 1); myRavenloftGraph.addOneWayStair("K29", "K16", MAP_3_to_Map_4); myRavenloftGraph.addOneWayEdge("K29", "K28", 1); myRavenloftGraph.addOneWayEdge("K30", "K25", 1); myRavenloftGraph.addOneWayEdge("K30", "K21-F2", 1); myRavenloftGraph.addOneWayElevator("K31", "Elevator", 1); myRavenloftGraph.addOneWaySecretDoor("K31b", "39", 1, "Hall_of_Webs_(K39-K31b)"); myRavenloftGraph.addOneWayElevator("K31b", "Elevator", 1); myRavenloftGraph.addOneWaySecretDoor("K31b", "47", 1, "Trapworks_to_Portrait_of_Strahd_(31b-K47)"); myRavenloftGraph.addOneWayEdge("K32", "K33", 1); myRavenloftGraph.addOneWayEdge("K33", "K32", 1); myRavenloftGraph.addOneWaySecretDoor("K33", "K13-2N", 1, "Kings_Apartment_(K13-2N-K33)"); myRavenloftGraph.addOneWaySecretDoor("K33", "K26", 1, "Kings_Aprartment_(K26-K33)"); myRavenloftGraph.addOneWayStair("K33", "K45", MAP_4_to_Map_5); myRavenloftGraph.addOneWayStair("K34", "K24", MAP_3_to_Map_4); myRavenloftGraph.addOneWaySecretDoor("K34", "K20-F2", 1, "Upper_Servant_Floor_(K20-F2-K34)"); myRavenloftGraph.addOneWayEdge("K35", "K21-F3", 1); myRavenloftGraph.addOneWayEdge("K35", "K36", 1); myRavenloftGraph.addOneWayEdge("K36", "K35", 1); myRavenloftGraph.addOneWayEdge("K36", "K37", 1); myRavenloftGraph.addOneWayEdge("K36", "K43", 1); myRavenloftGraph.addOneWayWindow("K36", "K46", 1); myRavenloftGraph.addOneWayEdge("K37", "K36", 1); myRavenloftGraph.addOneWaySecretDoor("K37", "K38", 1, "Study_to_False_Treasury_(K37-K38)"); myRavenloftGraph.addOneWayEdge("K37", "K42", 1); myRavenloftGraph.addOneWayEdge("K37", "K45", 1); myRavenloftGraph.addOneWayEdge("K37", "K83a", 1); myRavenloftGraph.addOneWaySecretDoor("K38", "K37", 1, "Study_to_False_Treasury_(K37-K38)"); myRavenloftGraph.addOneWaySecretDoor("K38", "K39", 1, "False_Treasury_to_Hall_of_Webs_(K38-K39)"); myRavenloftGraph.addOneWaySecretDoor("K39", "K31b", 1, "Hall_of_Webs_(K39-K31b)"); myRavenloftGraph.addOneWaySecretDoor("K39", "K38", 1, "False_Treasury_to_Hall_of_Webs_(K38-K39)"); myRavenloftGraph.addOneWayEdge("K39", "K40", 1); myRavenloftGraph.addOneWayEdge("K40", "K39", 1); myRavenloftGraph.addOneWaySecretDoor("K40", "K41", 1, "Belfry_to_Treasury_(K40-K41)"); myRavenloftGraph.addOneWaySecretDoor("K41", "K40", 1, "Belfry_to_Treasury_(K40-K41)"); myRavenloftGraph.addOneWayEdge("K42", "K37", 1); myRavenloftGraph.addOneWayEdge("K42", "K43", 1); myRavenloftGraph.addOneWaySecretDoor("K42", "K45", 1, "Kings_Bedchamber_to_Hall_of_Heroes_(K42-K45)"); myRavenloftGraph.addOneWayWindow("K42", "K46", 1); myRavenloftGraph.addOneWayEdge("K43", "K36", 1); myRavenloftGraph.addOneWayEdge("K43", "K42", 1); myRavenloftGraph.addOneWayEdge("K43", "K44", 1); myRavenloftGraph.addOneWayEdge("K44", "K43", 1); myRavenloftGraph.addOneWayWindow("K44", "K46", 1); myRavenloftGraph.addOneWaySecretDoor("K45", "K42", 1, "Kings_Bedchamber_to_Hall_of_Heroes_(K42-K45)"); myRavenloftGraph.addOneWayEdge("K45", "K20-F3", 1); myRavenloftGraph.addOneWayStair("K45", "K33", MAP_4_to_Map_5); myRavenloftGraph.addOneWayEdge("K45", "K46", 1); myRavenloftGraph.addOneWayEdge("K45", "K37", 1); myRavenloftGraph.addOneWayEdge("K46", "K20-F3", 1); myRavenloftGraph.addOneWayWindow("K46", "K36", 1); myRavenloftGraph.addOneWayWindow("K46", "K42", 1); myRavenloftGraph.addOneWayWindow("K46", "K44", 1); myRavenloftGraph.addOneWayEdge("K46", "K45", 1); myRavenloftGraph.addOneWayEdge("K46", "K64-F3", 1); myRavenloftGraph.addOneWaySecretDoor("K47", "K31b", 1, "Trapworks_to_Portrait_of_Strahd_(31b-K47)"); myRavenloftGraph.addOneWayEdge("K47", "K49", 1); myRavenloftGraph.addOneWayEdge("K47", "K21-F4", 1); myRavenloftGraph.addOneWayEdge("K47", "K48-M6", 1); myRavenloftGraph.addOneWayEdge("K48-M6", "K47", 1); myRavenloftGraph.addOneWayStair("K48-M7", "K54", 1); myRavenloftGraph.addOneWayEdge("K48-M8", "K57", 1); myRavenloftGraph.addOneWayStair("K48-M6", "K48-M7", MAP_6_to_Map_7); myRavenloftGraph.addOneWayStair("K48-M7", "K48-M6", MAP_6_to_Map_7); myRavenloftGraph.addOneWayStair("K48-M7", "K48-M8", MAP_7_to_Map_8); myRavenloftGraph.addOneWayStair("K48-M8", "K48-M7", MAP_7_to_Map_8); myRavenloftGraph.addOneWayEdge("K49", "K47", 1); myRavenloftGraph.addOneWayEdge("K49", "K50", 1); myRavenloftGraph.addOneWayEdge("K50", "K49", 1); myRavenloftGraph.addOneWayEdge("K50", "K51", 1); myRavenloftGraph.addOneWayEdge("K51", "K50", 1); myRavenloftGraph.addOneWaySecretDoor("K51", "K55", 1, "Closet_to_Element_Room_(K51-K55)"); myRavenloftGraph.addOneWayEdge("K52", "K53", 1); myRavenloftGraph.addOneWayEdge("K52", "K37", 1); myRavenloftGraph.addOneWayEdge("K53", "K45", 1); myRavenloftGraph.addOneWayEdge("K53", "K46", 1); myRavenloftGraph.addOneWayEdge("K53", "K52", 1); myRavenloftGraph.addOneWayEdge("K54", "K48-M7", 1); myRavenloftGraph.addOneWayEdge("K54", "K55", 1); myRavenloftGraph.addOneWaySecretDoor("K55", "K51", 1, "Closet_to_Element_Room_(K51-K55)"); myRavenloftGraph.addOneWayEdge("K55", "K54", 1); myRavenloftGraph.addOneWayEdge("K55", "K56", 1); myRavenloftGraph.addOneWayEdge("K56", "K55", 1); myRavenloftGraph.addOneWayEdge("K57", "K48-M8", 1); myRavenloftGraph.addOneWayEdge("K57", "K58", 1); myRavenloftGraph.addOneWayEdge("K58", "K57", 1); myRavenloftGraph.addOneWayEdge("K58", "K20-F4", 1); myRavenloftGraph.addOneWayEdge("K59", "K18-F4", 1); myRavenloftGraph.addOneWayEdge("K60", "K20-F4", 1); myRavenloftGraph.addOneWayEdge("K60", "K60a", 1); myRavenloftGraph.addOneWayEdge("K60a", "K60", 1); myRavenloftGraph.addOneWayEdge("K61", "K21-B1", 1); myRavenloftGraph.addOneWayEdge("K61", "K62", 1); myRavenloftGraph.addOneWayElevator("K61", "Elevator", 1); myRavenloftGraph.addOneWayStair("K62", "K23", MAP_11_to_Map_3); myRavenloftGraph.addOneWayEdge("K62", "K61", 1); myRavenloftGraph.addOneWayEdge("K62", "K63", 1); myRavenloftGraph.addOneWayEdge("K62", "K65", 1); myRavenloftGraph.addOneWayEdge("K62", "K66", 1); myRavenloftGraph.addOneWayEdge("K62", "K67", 1); myRavenloftGraph.addOneWayEdge("K63", "K62", 1); myRavenloftGraph.addOneWaySecretDoor("K63", "K18-B1", 1, "Wine_Cellar_(K18-B1-K63)"); myRavenloftGraph.addOneWayEdge("K64-B1", "K68", 1); myRavenloftGraph.addOneWayEdge("K64-F1", "K13-1S", 1); myRavenloftGraph.addOneWayEdge("K64-F2", "K13-2S", 1); myRavenloftGraph.addOneWayEdge("K64-F3", "K46", 1); // Guards Stairs myRavenloftGraph.addOneWayStair("K64-B1", "K64-F1", MAP_11_to_Map_3); myRavenloftGraph.addOneWayStair("K64-F1", "K64-B1", MAP_11_to_Map_3); myRavenloftGraph.addOneWayStair("K64-F1", "K64-F2", MAP_3_to_Map_4); myRavenloftGraph.addOneWayStair("K64-F2", "K64-F1", MAP_3_to_Map_4); myRavenloftGraph.addOneWayStair("K64-F2", "K64-F3", MAP_4_to_Map_5); myRavenloftGraph.addOneWayStair("K64-F3", "K64-F2", MAP_4_to_Map_5); myRavenloftGraph.addOneWayEdge("K65", "K62", 1); myRavenloftGraph.addOneWayEdge("K66", "K62", 1); myRavenloftGraph.addOneWayEdge("K67", "K62", 1); myRavenloftGraph.addOneWayEdge("K67", "K68", 1); myRavenloftGraph.addOneWayEdge("K67", "K70", 1); myRavenloftGraph.addOneWayEdge("K68", "K67", 1); myRavenloftGraph.addOneWayEdge("K68", "K64-B1", 1); myRavenloftGraph.addOneWayEdge("K68", "K69", 1); myRavenloftGraph.addOneWayEdge("K69", "K68", 1); myRavenloftGraph.addOneWayEdge("K70", "K67", 1); myRavenloftGraph.addOneWayEdge("K70", "K71", 1); myRavenloftGraph.addOneWayEdge("K70", "K72", 1); myRavenloftGraph.addOneWayEdge("K71", "K70", 1); myRavenloftGraph.addOneWayStair("K71", "K20a", MAP_11_to_Map_3); myRavenloftGraph.addOneWayEdge("K72", "K70", 1); myRavenloftGraph.addOneWayStair("K72", "K79", MAP_12_to_Map_11); myRavenloftGraph.addOneWayStair("K73", "K21-B3", 1); myRavenloftGraph.addOneWayEdge("K73", "K74", 1); myRavenloftGraph.addOneWayEdge("K73", "K75", 1); myRavenloftGraph.addOneWayEdge("K73", "K76", 1); myRavenloftGraph.addOneWayEdge("K74", "K73", 1); myRavenloftGraph.addOneWayEdge("K75", "K73", 1); myRavenloftGraph.addOneWayEdge("K76", "K73", 1); myRavenloftGraph.addOneWayEdge("K77", "K76", 1); myRavenloftGraph.addOneWayEdge("K77", "K78", 1); myRavenloftGraph.addOneWayEdge("K78", "K77", 1); myRavenloftGraph.addOneWayEdge("K78", "K79", 1); myRavenloftGraph.addOneWayEdge("K78", "K80", 1); myRavenloftGraph.addOneWayEdge("K78", "K83", 1); myRavenloftGraph.addOneWayEdge("K79", "K78", 1); myRavenloftGraph.addOneWayStair("K79", "K72", MAP_12_to_Map_11); myRavenloftGraph.addOneWayEdge("K80", "K78", 1); myRavenloftGraph.addOneWayEdge("K80", "K81", 1); myRavenloftGraph.addOneWayEdge("K81", "K80", 1); myRavenloftGraph.addOneWayEdge("K81", "K84", 1); myRavenloftGraph.addOneWaySecretDoor("K81", "K82", 1, "Tunnel_to_North_Dungeon_(K81-K82)"); myRavenloftGraph.addOneWayEdge("K82", "K74", 1); // Spiral Staircase myRavenloftGraph.addOneWayEdge("K83", "K78", 1); const K83_to_83a = MAP_12_to_Map_11 + MAP_11_to_Map_3 + MAP_3_to_Map_4 + MAP_4_to_Map_5; myRavenloftGraph.addOneWayStair("K83", "K83a", K83_to_83a); myRavenloftGraph.addOneWayStair("K83a", "K83", K83_to_83a); myRavenloftGraph.addOneWayEdge("K83a", "K37", 1); myRavenloftGraph.addOneWayEdge("K84", "K18-B2", 1); myRavenloftGraph.addOneWayEdge("K84", "K81", 1); myRavenloftGraph.addOneWayEdge("K84", "K85", 1); myRavenloftGraph.addOneWayEdge("K84", "K86", 1); myRavenloftGraph.addOneWayEdge("K84", "K87", 1); myRavenloftGraph.addOneWayEdge("K85", "K84", 1); myRavenloftGraph.addOneWayEdge("K86", "K84", 1); myRavenloftGraph.addOneWayEdge("K87", "K84", 1); myRavenloftGraph.addOneWayEdge("K87", "K88", 1); myRavenloftGraph.addOneWayEdge("K88", "K87", 1); // Set Room to Map names myRavenloftGraph.addRoomsToMap(["K79", "K83", "K83a", "K78", "K77", "K76", "K80", "K74", "K73", "K75", "K81", "K21-B2", "K85", "K84", "K86", "K87", "K88", "K18-B2"], "12"); myRavenloftGraph.addRoomsToMap(["K72", "K70", "K71", "K67", "K69", "K68", "K64-B1", "K66", "K65", "K61", "K62", "K63", "K18-B1"], "11"); myRavenloftGraph.addRoomsToMap(["K12-1S", "K12-1N", "K13-1S", "K13-1N", "K22", "K1", "K7", "K13", "K19", "K11", "K10", "K8", "K9", "K20a", "K14", "K24", "K23", "K3", "K16", "K15", "K17", "K6", "K18-F1", "K20-F1", "K64-F1"], "3"); myRavenloftGraph.addRoomsToMap(["K12-2S", "K12-SN", "K13-2S", "K13-2N", "K22-2S", "K22-2N", "K25", "K32", "K33", "K26", "K30", "K29", "K27", "K31", "K34", "K28", "K20-F1"], "4"); myRavenloftGraph.addRoomsToMap(["K42", "K43", "K44", "K45", "K46", "K35", "K36", "K37", "K38", "K39", "K31b", "K40", "K41", "K20-F2"], "5"); myRavenloftGraph.addRoomsToMap(["K47", "K48-M6", "K49", "K50", "K51", "K53", "K20-F3"], "6"); myRavenloftGraph.addRoomsToMap(["K52", "K54", "K55", "K56"], "7"); myRavenloftGraph.addRoomsToMap(["K57", "K58", "K20-F4"], "8"); myRavenloftGraph.addRoomsToMap(["K60", "K60a"], "9"); myRavenloftGraph.addRoomsToMap(["K59"], "10"); return myRavenloftGraph; } class MyGraph { constructor() { this.myRavenloftGraph = getMyRavenloftGraph(); } getRooms() { const graph = this.myRavenloftGraph.getGraph(); return Object.keys(graph); } getShortestPath(start, end) { const graph = this.myRavenloftGraph.getGraph(); const path = dijkstrajs_1.default.find_path(graph, start, end); return path; } activateSecretDoor(secretDoorId) { this.myRavenloftGraph.setSecretDoorsFound(secretDoorId); } getSecretDoors() { return this.myRavenloftGraph.getSecretDoors(); } getMapColorOfRoom(room) { return this.myRavenloftGraph.getMapColorOfRoom(room); } } exports.default = MyGraph;