mudlet-map-renderer 0.0.2 → 0.0.3

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/.prettierrc CHANGED
File without changes
package/CHANGELOG.md CHANGED
@@ -1,6 +1,10 @@
1
- # 0.0.2
2
- - add option to set font for text labels
3
- - fix README example
4
-
5
- # 0.0.1
1
+ # 0.0.3
2
+ - add option to set font and background color
3
+ - multiple fixes
4
+
5
+ # 0.0.2
6
+ - add option to set font for text labels
7
+ - fix README example
8
+
9
+ # 0.0.1
6
10
  - initial release
package/README.md CHANGED
@@ -1,54 +1,56 @@
1
- # Mudlet Map Renderer
2
-
3
- Mudlet map rendering library. Can be used in Node.js and in browser.
4
-
5
- Until version `1.0.0` API is subject of change. Use with caution!
6
-
7
- ## TODO
8
-
9
- - [ ] Publish some examples (with data)
10
- - [ ] Convert to .ts
11
- - [ ] Document functions
12
- - [ ] Add test
13
- - [ ] Add lint
14
- - [ ] Align model with mudlet-map-binary-reader
15
-
16
-
17
- ## Very basic example
18
-
19
- ```js
20
- const fs = require("fs");
21
- const { MudletMapReader } = require("mudlet-map-binary-reader") //npm mudlet-map-binary-reader
22
- const { Renderer, MapReader } = require("mudlet-map-renderer")
23
-
24
- let map = MudletMapReader.read("./data/map.dat");
25
- MudletMapReader.export(map, "./data");
26
- let mapData = require("./data/mapExport.json");
27
- let mapColors = require("./data/colors.json");
28
-
29
- let reader = new MapReader(mapData, mapColors);
30
-
31
- const roomId = 1;
32
- const scale = 40;
33
- let area = reader.getAreaByRoomId(roomId);
34
- let settings = { scale: scale}
35
- let options = new Renderer(null, reader, area, reader.getColors(), options);
36
- fs.writeFileSync("mapFull.svg", renderer.exportSvg());
37
- fs.writeFileSync("mapFragment.svg", renderer.exportSvg(roomId, 10));
38
- console.log("Map generated");
39
- ```
40
-
41
- ## Settings and their default values
42
- ```js
43
- class Settings {
44
- isRound = false;
45
- scale = 55;
46
- roomSize = 10;
47
- exitsSize = 2;
48
- borders = false;
49
- frameMode = false;
50
- areaName = true;
51
- showLabels = true;
52
- uniformLevelSize = false;
53
- }
1
+ # Mudlet Map Renderer
2
+
3
+ Mudlet map rendering library. Can be used in Node.js and in browser.
4
+
5
+ Until version `1.0.0` API is subject of change. Use with caution!
6
+
7
+ ## TODO
8
+
9
+ - [ ] Publish some examples (with data)
10
+ - [ ] Convert to .ts
11
+ - [ ] Document functions
12
+ - [ ] Add test
13
+ - [ ] Add lint
14
+ - [ ] Align model with mudlet-map-binary-reader
15
+
16
+
17
+ ## Very basic example
18
+
19
+ ```js
20
+ const fs = require("fs");
21
+ const { MudletMapReader } = require("mudlet-map-binary-reader") //npm mudlet-map-binary-reader
22
+ const { Renderer, MapReader } = require("mudlet-map-renderer")
23
+
24
+ let map = MudletMapReader.read("./data/map.dat");
25
+ MudletMapReader.export(map, "./data");
26
+ let mapData = require("./data/mapExport.json");
27
+ let mapColors = require("./data/colors.json");
28
+
29
+ let reader = new MapReader(mapData, mapColors);
30
+
31
+ const roomId = 1;
32
+ const scale = 40;
33
+ let area = reader.getAreaByRoomId(roomId);
34
+ let settings = { scale: scale}
35
+ let options = new Renderer(null, reader, area, reader.getColors(), options);
36
+ fs.writeFileSync("mapFull.svg", renderer.exportSvg());
37
+ fs.writeFileSync("mapFragment.svg", renderer.exportSvg(roomId, 10));
38
+ console.log("Map generated");
39
+ ```
40
+
41
+ ## Settings and their default values
42
+ ```js
43
+ class Settings {
44
+ isRound = false;
45
+ scale = 55;
46
+ roomSize = 10;
47
+ exitsSize = 2;
48
+ borders = false;
49
+ frameMode = false;
50
+ areaName = true;
51
+ showLabels = true;
52
+ uniformLevelSize = false;
53
+ fontFamily = 'sans-serif';
54
+ mapBackground = "#000000";
55
+ }
54
56
  ```
package/exports.js CHANGED
@@ -1,4 +1,5 @@
1
1
  module.exports = {
2
2
  Renderer: require("./map-fragment/draw/renderer").Renderer,
3
+ Renderer: require("./map-fragment/draw/renderer").Settings,
3
4
  MapReader: require("./map-fragment/reader/MapReader").MapReader,
4
5
  };
File without changes
@@ -21,7 +21,8 @@ class Settings {
21
21
  areaName = true;
22
22
  showLabels = true;
23
23
  uniformLevelSize = false;
24
- fontFamily = 'sans-serif'
24
+ fontFamily = 'sans-serif';
25
+ mapBackground = "#000000";
25
26
  }
26
27
 
27
28
  paper.Item.prototype.registerClick = function (callback) {
@@ -86,7 +87,7 @@ class Renderer {
86
87
  render(pngRender = false) {
87
88
  this.pngRender = pngRender;
88
89
  this.renderBackground(this.bounds.minX - padding, this.bounds.minY - padding, this.bounds.maxX + padding, this.bounds.maxY + padding);
89
- this.renderHeader();
90
+ this.renderHeader(this.bounds.minX - padding / 2, this.bounds.maxY + padding / 2);
90
91
  this.area.rooms
91
92
  .filter((room) => room.z == this.area.zIndex)
92
93
  .forEach((room) => {
@@ -94,7 +95,9 @@ class Renderer {
94
95
  });
95
96
  if (this.area.labels !== undefined && this.settings.showLabels) {
96
97
  this.bgLabels.activate();
97
- this.area.labels.forEach((value) => this.renderLabel(value), this);
98
+ this.area.labels
99
+ .filter((label) => label.Z == this.area.zIndex)
100
+ .forEach((value) => this.renderLabel(value), this);
98
101
  }
99
102
  this.matrix = new paper.Matrix(1, 0, 0, -1, -this.bounds.minX + padding, this.bounds.maxY + padding).scale(
100
103
  this.scale,
@@ -120,17 +123,16 @@ class Renderer {
120
123
  renderBackground(x1, y1, x2, y2) {
121
124
  this.backgroundLayer.activate();
122
125
  let background = new paper.Path.Rectangle(new paper.Point(x1, y1), new paper.Point(x2, y2));
123
- background.fillColor = new paper.Color(0, 0, 0);
126
+ background.fillColor = new paper.Color(this.settings.mapBackground);
124
127
  background.registerClick(() => {
125
128
  this.emitter.dispatchEvent(new CustomEvent("backgroundClick"));
126
129
  });
127
130
  }
128
131
 
129
- renderHeader() {
132
+ renderHeader(x, y) {
130
133
  if (this.settings.areaName) {
131
134
  this.backgroundLayer.activate();
132
- let bounds = this.getBounds();
133
- let header = new paper.PointText(bounds.x + 2.5, bounds.y + bounds.height - 2.5);
135
+ let header = new paper.PointText(x, y);
134
136
  header.fillColor = new paper.Color(1, 1, 1, 1);
135
137
  header.fontSize = 2.5;
136
138
  header.fontFamily = this.settings.fontFamily;
@@ -471,7 +473,7 @@ class Renderer {
471
473
  renderChar(room) {
472
474
  this.charsLayer.activate();
473
475
  if (room.roomChar) {
474
- let size = 0.85 * this.roomFactor;
476
+ let size = 0.85 * this.roomFactor / room.roomChar.length;
475
477
  let x = this.pngRender ? room.render.position.x - 0.1 : room.render.position.x;
476
478
  let text = new paper.PointText(x, room.render.position.y + size / 4);
477
479
  if (!room.userData || room.userData["system.fallback_symbol_color"] === undefined) {
File without changes
@@ -46,7 +46,13 @@ class MapReader {
46
46
  }
47
47
  return isWithinBounds;
48
48
  }),
49
- area.labels.filter((value) => value.Z === zIndex),
49
+ area.labels.filter((label) => {
50
+ let isWithinBounds = true;
51
+ if (limits) {
52
+ isWithinBounds = limits.xMin < label.X && limits.xMax > label.X && limits.yMin < label.Y && limits.yMax > label.Y;
53
+ }
54
+ return isWithinBounds;
55
+ }),
50
56
  zIndex,
51
57
  levels
52
58
  );
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "mudlet-map-renderer",
3
- "version": "0.0.2",
3
+ "version": "0.0.3",
4
4
  "keywords": [
5
5
  "mudlet",
6
6
  "map",
@@ -17,6 +17,5 @@
17
17
  "dependencies": {
18
18
  "paper-jsdom": "^0.12.15"
19
19
  },
20
- "devDependencies": {},
21
20
  "exports": "./exports.js"
22
- }
21
+ }