mudlet-map-renderer 1.0.0 → 1.1.0
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/README.md +520 -0
- package/dist/AreaMapRenderer.d.ts +125 -0
- package/dist/CullingManager.d.ts +15 -0
- package/dist/ExitRenderer.d.ts +109 -0
- package/dist/InteractionHandler.d.ts +47 -0
- package/dist/MapGraph.d.ts +28 -0
- package/dist/MapReader-mU_4JWv_.js +224 -0
- package/dist/MapReader-mU_4JWv_.js.map +1 -0
- package/dist/MapState.d.ts +110 -0
- package/dist/PathData.d.ts +18 -0
- package/dist/PathFinder.d.ts +12 -0
- package/dist/ScenePipeline.d.ts +226 -0
- package/dist/SvgTypes.d.ts +21 -0
- package/dist/TypedEventEmitter.d.ts +17 -0
- package/dist/binary/BinaryMapReader.d.ts +36 -0
- package/dist/binary/index.d.ts +2 -0
- package/dist/binary.mjs +34 -0
- package/dist/binary.mjs.map +1 -0
- package/dist/camera/Camera.d.ts +106 -0
- package/dist/coord/CoordFn.d.ts +13 -0
- package/dist/directions.d.ts +25 -0
- package/dist/draw/DrawCommand.d.ts +104 -0
- package/dist/draw/DrawCommandBuilder.d.ts +19 -0
- package/dist/export/CanvasExporter.d.ts +71 -0
- package/dist/export/Exporter.d.ts +58 -0
- package/dist/export/PngExporter.d.ts +23 -0
- package/dist/export/SvgExporter.d.ts +19 -0
- package/dist/export/canvasToBytes.d.ts +19 -0
- package/dist/export/clipSceneToViewport.d.ts +48 -0
- package/dist/export/flushSceneShapes.d.ts +21 -0
- package/dist/export/sceneBounds.d.ts +24 -0
- package/dist/hit/HitTester.d.ts +101 -0
- package/dist/index.d.ts +61 -0
- package/dist/index.mjs +6656 -0
- package/dist/index.mjs.map +1 -0
- package/dist/lens/ExplorationLens.d.ts +29 -0
- package/dist/lens/RoomLens.d.ts +47 -0
- package/dist/lens/composeLenses.d.ts +31 -0
- package/dist/lens/index.d.ts +5 -0
- package/dist/overlay/AmbientLightOverlay.d.ts +32 -0
- package/dist/overlay/LiveEffect.d.ts +33 -0
- package/dist/overlay/SceneOverlay.d.ts +68 -0
- package/dist/reader/Area.d.ts +63 -0
- package/dist/reader/Exit.d.ts +15 -0
- package/dist/reader/MapReader.d.ts +34 -0
- package/dist/reader/Plane.d.ts +33 -0
- package/dist/render/CanvasRenderer.d.ts +17 -0
- package/dist/render/RecordingLayer.d.ts +158 -0
- package/dist/render/SvgRenderer.d.ts +7 -0
- package/dist/render/shapeToRecording.d.ts +3 -0
- package/dist/rendering/KonvaRenderBackend.d.ts +122 -0
- package/dist/rendering/MapRenderer.d.ts +213 -0
- package/dist/rendering/SceneManager.d.ts +54 -0
- package/dist/scene/AmbientLightStyle.d.ts +29 -0
- package/dist/scene/GridStyle.d.ts +21 -0
- package/dist/scene/InnerExitStyle.d.ts +24 -0
- package/dist/scene/OverlayStyle.d.ts +47 -0
- package/dist/scene/RoomStyle.d.ts +32 -0
- package/dist/scene/Shape.d.ts +151 -0
- package/dist/scene/SpecialExitStyle.d.ts +37 -0
- package/dist/scene/StubStyle.d.ts +15 -0
- package/dist/scene/elements/ExitLayout.d.ts +22 -0
- package/dist/scene/elements/GridLayout.d.ts +24 -0
- package/dist/scene/elements/LabelLayout.d.ts +11 -0
- package/dist/scene/elements/OverlayLayout.d.ts +14 -0
- package/dist/scene/elements/RoomLayout.d.ts +19 -0
- package/dist/scene/elements/SpecialExitLayout.d.ts +19 -0
- package/dist/scene/elements/StubLayout.d.ts +19 -0
- package/dist/style/Style.d.ts +60 -0
- package/dist/style/applyStyle.d.ts +3 -0
- package/dist/style/index.d.ts +21 -0
- package/dist/style/shape/BlueprintStyle.d.ts +11 -0
- package/dist/style/shape/ConstructionStyle.d.ts +17 -0
- package/dist/style/shape/IsometricStyle.d.ts +32 -0
- package/dist/style/shape/NeonStyle.d.ts +17 -0
- package/dist/style/shape/ParchmentStyle.d.ts +13 -0
- package/dist/style/shape/SciFiStyle.d.ts +16 -0
- package/dist/style/shape/SketchyStyle.d.ts +22 -0
- package/dist/style/shape/index.d.ts +25 -0
- package/dist/style/shape/paintMap.d.ts +25 -0
- package/dist/style/shape/wobble.d.ts +24 -0
- package/{src/types/MapData.ts → dist/types/MapData.d.ts} +70 -90
- package/dist/types/Settings.d.ts +206 -0
- package/dist/utils/color.d.ts +12 -0
- package/dist/utils/textMeasure.d.ts +38 -0
- package/package.json +67 -37
- package/demo/colors.json +0 -1
- package/demo/index.html +0 -102
- package/demo/main.ts +0 -389
- package/demo/mapExport.json +0 -1
- package/demo/tsconfig.json +0 -11
- package/src/ExitRenderer.ts +0 -275
- package/src/PathFinder.ts +0 -93
- package/src/PathRenderer.ts +0 -129
- package/src/Renderer.ts +0 -374
- package/src/directions.ts +0 -66
- package/src/index.ts +0 -4
- package/src/reader/Area.ts +0 -96
- package/src/reader/Exit.ts +0 -36
- package/src/reader/ExplorationArea.ts +0 -132
- package/src/reader/MapReader.ts +0 -123
- package/src/reader/Plane.ts +0 -42
- package/tsconfig.json +0 -17
- package/vercel.json +0 -5
- package/vite.config.ts +0 -29
- package/vite.demo.config.ts +0 -15
package/src/reader/MapReader.ts
DELETED
|
@@ -1,123 +0,0 @@
|
|
|
1
|
-
import Area from "./Area";
|
|
2
|
-
import ExplorationArea from "./ExplorationArea";
|
|
3
|
-
|
|
4
|
-
interface Color {
|
|
5
|
-
rgb: number[];
|
|
6
|
-
rgbValue: string;
|
|
7
|
-
symbolColor: number[];
|
|
8
|
-
symbolColorValue: string,
|
|
9
|
-
}
|
|
10
|
-
|
|
11
|
-
const defaultColor: Color = {
|
|
12
|
-
rgb: [114, 1, 0],
|
|
13
|
-
rgbValue: 'rgb(114, 1, 0)',
|
|
14
|
-
symbolColor: [225, 225, 225],
|
|
15
|
-
symbolColorValue: 'rgb(225,225,225)'
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
function calculateLuminance(rgb: number[]) {
|
|
19
|
-
const rn = rgb[0] / 255;
|
|
20
|
-
const gn = rgb[1] / 255;
|
|
21
|
-
const bn = rgb[2] / 255;
|
|
22
|
-
|
|
23
|
-
const max = Math.max(rn, gn, bn);
|
|
24
|
-
const min = Math.min(rn, gn, bn);
|
|
25
|
-
|
|
26
|
-
return (max + min) / 2;
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
export default class MapReader {
|
|
30
|
-
|
|
31
|
-
private rooms: Record<number, MapData.Room> = {};
|
|
32
|
-
private areas: Record<number, Area> = {};
|
|
33
|
-
private areaSources: Record<number, MapData.Area> = {};
|
|
34
|
-
private visitedRooms?: Set<number>;
|
|
35
|
-
private explorationEnabled = false;
|
|
36
|
-
private colors: Record<number, Color> = {};
|
|
37
|
-
|
|
38
|
-
constructor(map: MapData.Map, envs: MapData.Env[]) {
|
|
39
|
-
map.forEach(area => {
|
|
40
|
-
area.rooms.forEach(room => {
|
|
41
|
-
room.y = -room.y;
|
|
42
|
-
this.rooms[room.id] = room;
|
|
43
|
-
})
|
|
44
|
-
const areaId = parseInt(area.areaId);
|
|
45
|
-
this.areas[areaId] = new Area(area);
|
|
46
|
-
this.areaSources[areaId] = area;
|
|
47
|
-
})
|
|
48
|
-
this.colors = envs.reduce((acc, c) => ({
|
|
49
|
-
...acc,
|
|
50
|
-
[c.envId]: {
|
|
51
|
-
rgb: c.colors,
|
|
52
|
-
rgbValue: `rgb(${c.colors.join(',')}`,
|
|
53
|
-
symbolColor: calculateLuminance(c.colors) > 0.41 ? [25, 25, 25] : [225, 255, 255],
|
|
54
|
-
symbolColorValue: calculateLuminance(c.colors) > 0.41 ? 'rgb(25,25,25)' : 'rgb(225,255,255)'
|
|
55
|
-
}
|
|
56
|
-
}), {});
|
|
57
|
-
}
|
|
58
|
-
|
|
59
|
-
getArea(areaId: number) {
|
|
60
|
-
return this.areas[areaId];
|
|
61
|
-
}
|
|
62
|
-
|
|
63
|
-
getExplorationArea(areaId: number) {
|
|
64
|
-
const area = this.areas[areaId];
|
|
65
|
-
if (area instanceof ExplorationArea) {
|
|
66
|
-
return area;
|
|
67
|
-
}
|
|
68
|
-
return undefined;
|
|
69
|
-
}
|
|
70
|
-
|
|
71
|
-
getAreas() {
|
|
72
|
-
return Object.values(this.areas);
|
|
73
|
-
}
|
|
74
|
-
|
|
75
|
-
getRooms() {
|
|
76
|
-
return Object.values(this.rooms);
|
|
77
|
-
}
|
|
78
|
-
|
|
79
|
-
getRoom(roomId: number) {
|
|
80
|
-
return this.rooms[roomId];
|
|
81
|
-
}
|
|
82
|
-
|
|
83
|
-
decorateWithExploration(visitedRooms?: Iterable<number> | Set<number>) {
|
|
84
|
-
this.visitedRooms = visitedRooms instanceof Set ? visitedRooms : new Set(visitedRooms ?? []);
|
|
85
|
-
Object.entries(this.areaSources).forEach(([id, area]) => {
|
|
86
|
-
const numericId = parseInt(id, 10);
|
|
87
|
-
this.areas[numericId] = new ExplorationArea(area, this.visitedRooms!);
|
|
88
|
-
});
|
|
89
|
-
this.explorationEnabled = true;
|
|
90
|
-
return this.visitedRooms;
|
|
91
|
-
}
|
|
92
|
-
|
|
93
|
-
getVisitedRooms() {
|
|
94
|
-
return this.visitedRooms;
|
|
95
|
-
}
|
|
96
|
-
|
|
97
|
-
clearExplorationDecoration() {
|
|
98
|
-
Object.entries(this.areaSources).forEach(([id, area]) => {
|
|
99
|
-
const numericId = parseInt(id, 10);
|
|
100
|
-
this.areas[numericId] = new Area(area);
|
|
101
|
-
});
|
|
102
|
-
this.explorationEnabled = false;
|
|
103
|
-
}
|
|
104
|
-
|
|
105
|
-
isExplorationEnabled() {
|
|
106
|
-
return this.explorationEnabled;
|
|
107
|
-
}
|
|
108
|
-
|
|
109
|
-
getColorValue(envId: number): string {
|
|
110
|
-
return this.colors[envId]?.rgbValue ?? defaultColor.rgbValue;
|
|
111
|
-
}
|
|
112
|
-
|
|
113
|
-
getSymbolColor(envId: number, opacity?: number): string {
|
|
114
|
-
const color = this.colors[envId]?.symbolColor ?? defaultColor.symbolColor;
|
|
115
|
-
const normalizedOpacity = Math.min(Math.max(opacity ?? 1, 0), 1);
|
|
116
|
-
const value = color.join(',');
|
|
117
|
-
if (normalizedOpacity != 1) {
|
|
118
|
-
return `rgba(${value}, ${normalizedOpacity})`;
|
|
119
|
-
}
|
|
120
|
-
return `rgba(${value})`;
|
|
121
|
-
}
|
|
122
|
-
|
|
123
|
-
}
|
package/src/reader/Plane.ts
DELETED
|
@@ -1,42 +0,0 @@
|
|
|
1
|
-
export default class Plane {
|
|
2
|
-
|
|
3
|
-
private readonly bounds: { minX: number, maxX: number, minY: number, maxY: number }
|
|
4
|
-
private readonly rooms: MapData.Room[] = [];
|
|
5
|
-
private readonly labels: MapData.Label[] = [];
|
|
6
|
-
|
|
7
|
-
constructor(rooms: MapData.Room[], labels: MapData.Label[]) {
|
|
8
|
-
this.rooms = rooms
|
|
9
|
-
this.bounds = this.createBounds();
|
|
10
|
-
this.labels = labels
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
getRooms() {
|
|
14
|
-
return this.rooms;
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
getLabels() {
|
|
18
|
-
return this.labels;
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
getBounds() {
|
|
22
|
-
return this.bounds;
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
private createBounds() {
|
|
26
|
-
return this.rooms.reduce(
|
|
27
|
-
(acc, r) => ({
|
|
28
|
-
minX: Math.min(acc.minX, r.x),
|
|
29
|
-
maxX: Math.max(acc.maxX, r.x),
|
|
30
|
-
minY: Math.min(acc.minY, r.y),
|
|
31
|
-
maxY: Math.max(acc.maxY, r.y),
|
|
32
|
-
}),
|
|
33
|
-
{
|
|
34
|
-
minX: Number.POSITIVE_INFINITY,
|
|
35
|
-
maxX: Number.NEGATIVE_INFINITY,
|
|
36
|
-
minY: Number.POSITIVE_INFINITY,
|
|
37
|
-
maxY: Number.NEGATIVE_INFINITY,
|
|
38
|
-
}
|
|
39
|
-
);
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
}
|
package/tsconfig.json
DELETED
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"compilerOptions": {
|
|
3
|
-
"target": "ES2021",
|
|
4
|
-
"lib": ["ES2021", "DOM"],
|
|
5
|
-
"module": "ES2020",
|
|
6
|
-
"moduleResolution": "Bundler",
|
|
7
|
-
"declaration": true,
|
|
8
|
-
"declarationDir": "dist",
|
|
9
|
-
"outDir": "dist",
|
|
10
|
-
"strict": true,
|
|
11
|
-
"esModuleInterop": true,
|
|
12
|
-
"skipLibCheck": true,
|
|
13
|
-
"resolveJsonModule": true,
|
|
14
|
-
"sourceMap": true,
|
|
15
|
-
},
|
|
16
|
-
"include": ["src"]
|
|
17
|
-
}
|
package/vercel.json
DELETED
package/vite.config.ts
DELETED
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
import { defineConfig } from 'vite';
|
|
2
|
-
import dts from 'vite-plugin-dts';
|
|
3
|
-
|
|
4
|
-
export default defineConfig(({ command }) => ({
|
|
5
|
-
root: command === 'serve' ? 'demo' : '.',
|
|
6
|
-
plugins: [
|
|
7
|
-
dts({
|
|
8
|
-
include: ['src'],
|
|
9
|
-
outDir: 'dist'
|
|
10
|
-
})
|
|
11
|
-
],
|
|
12
|
-
build: {
|
|
13
|
-
lib: {
|
|
14
|
-
entry: 'src/index.ts',
|
|
15
|
-
name: 'mudlet-map-renderer',
|
|
16
|
-
fileName: (format) => (format === 'es' ? 'index.mjs' : 'index.cjs'),
|
|
17
|
-
formats: ['es', 'cjs']
|
|
18
|
-
},
|
|
19
|
-
rollupOptions: {
|
|
20
|
-
external: ['konva', 'canvas']
|
|
21
|
-
},
|
|
22
|
-
sourcemap: true,
|
|
23
|
-
emptyOutDir: true
|
|
24
|
-
},
|
|
25
|
-
server: {
|
|
26
|
-
open: true,
|
|
27
|
-
port: 5173
|
|
28
|
-
}
|
|
29
|
-
}));
|
package/vite.demo.config.ts
DELETED
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
import { defineConfig } from 'vite';
|
|
2
|
-
import path from 'node:path';
|
|
3
|
-
|
|
4
|
-
export default defineConfig({
|
|
5
|
-
root: 'demo',
|
|
6
|
-
resolve: {
|
|
7
|
-
alias: {
|
|
8
|
-
'@src': path.resolve(__dirname, 'src')
|
|
9
|
-
}
|
|
10
|
-
},
|
|
11
|
-
build: {
|
|
12
|
-
outDir: 'dist',
|
|
13
|
-
emptyOutDir: true
|
|
14
|
-
}
|
|
15
|
-
});
|