@4bitlabs/sci0 2.4.4 → 2.4.6

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.
Files changed (39) hide show
  1. package/README.md +1 -2
  2. package/dist/screen/render-pic.d.ts.map +1 -1
  3. package/dist/screen/render-pic.js +2 -4
  4. package/dist/screen/render-pic.js.map +1 -1
  5. package/dist/screen/sci0-screen-impl.d.ts.map +1 -1
  6. package/dist/screen/sci0-screen-impl.js +62 -15
  7. package/dist/screen/sci0-screen-impl.js.map +1 -1
  8. package/dist/screen/screen-buffer.d.ts.map +1 -1
  9. package/dist/screen/screen-buffer.js +4 -4
  10. package/dist/screen/screen-buffer.js.map +1 -1
  11. package/dist/screen/tools/circles.d.ts +3 -0
  12. package/dist/screen/tools/circles.d.ts.map +1 -0
  13. package/dist/screen/tools/circles.js +87 -0
  14. package/dist/screen/tools/circles.js.map +1 -0
  15. package/dist/screen/tools/create-brush.d.ts +4 -0
  16. package/dist/screen/tools/create-brush.d.ts.map +1 -0
  17. package/dist/screen/tools/create-brush.js +37 -0
  18. package/dist/screen/tools/create-brush.js.map +1 -0
  19. package/dist/screen/tools/create-flood-fill.d.ts +4 -0
  20. package/dist/screen/tools/create-flood-fill.d.ts.map +1 -0
  21. package/dist/screen/tools/create-flood-fill.js +63 -0
  22. package/dist/screen/tools/create-flood-fill.js.map +1 -0
  23. package/dist/screen/tools/create-line.d.ts +3 -0
  24. package/dist/screen/tools/create-line.d.ts.map +1 -0
  25. package/dist/screen/tools/create-line.js +46 -0
  26. package/dist/screen/tools/create-line.js.map +1 -0
  27. package/dist/screen/tools/create-marker.d.ts +3 -0
  28. package/dist/screen/tools/create-marker.d.ts.map +1 -0
  29. package/dist/screen/tools/create-marker.js +11 -0
  30. package/dist/screen/tools/create-marker.js.map +1 -0
  31. package/dist/screen/tools/index.d.ts +5 -0
  32. package/dist/screen/tools/index.d.ts.map +1 -0
  33. package/dist/screen/tools/index.js +12 -0
  34. package/dist/screen/tools/index.js.map +1 -0
  35. package/dist/screen/tools/noise.d.ts +3 -0
  36. package/dist/screen/tools/noise.d.ts.map +1 -0
  37. package/dist/screen/tools/noise.js +24 -0
  38. package/dist/screen/tools/noise.js.map +1 -0
  39. package/package.json +3 -4
package/README.md CHANGED
@@ -1,10 +1,9 @@
1
- # @4bitlabs/sci0 [![License][license]][npm] [![NPM Version][version]][npm] ![Size][size] [![NPM Downloads][dl]][npm]
1
+ # @4bitlabs/sci0 [![License][license]][npm] [![NPM Version][version]][npm] [![NPM Downloads][dl]][npm]
2
2
 
3
3
  [npm]: https://www.npmjs.com/package/@4bitlabs/sci0
4
4
  [version]: https://img.shields.io/npm/v/%404bitlabs%2Fsci0
5
5
  [license]: https://img.shields.io/npm/l/%404bitlabs%2Fsci0
6
6
  [dl]: https://img.shields.io/npm/dy/%404bitlabs%2Fsci0
7
- [size]: https://img.shields.io/bundlephobia/min/%404bitlabs/sci0
8
7
 
9
8
  Library for parsing and rendering assets from [Sierra On-line's][sierra] [<abbr title="Sierra Creative Interpreter">SCI</abbr>-engine][sci0].
10
9
 
@@ -1 +1 @@
1
- {"version":3,"file":"render-pic.d.ts","sourceRoot":"","sources":["../../src/screen/render-pic.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAY,MAAM,wBAAwB,CAAC;AAC/D,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAE/C,UAAU,aAAa;IACrB,QAAQ,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC;CACtC;AAED,eAAO,MAAM,SAAS,aACV,WAAW,EAAE,YACd,aAAa,KACrB,YA2EF,CAAC"}
1
+ {"version":3,"file":"render-pic.d.ts","sourceRoot":"","sources":["../../src/screen/render-pic.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAY,MAAM,wBAAwB,CAAC;AAC/D,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAE/C,UAAU,aAAa;IACrB,QAAQ,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC;CACtC;AAED,eAAO,MAAM,SAAS,aACV,WAAW,EAAE,YACd,aAAa,KACrB,YAyEF,CAAC"}
@@ -18,15 +18,13 @@ const renderPic = (commands, options = {}) => {
18
18
  switch (mode) {
19
19
  case 'SET_PALETTE': {
20
20
  const [, idx, palette] = cmd;
21
- palettes[idx] = palette;
21
+ palettes[idx].set(palette);
22
22
  break;
23
23
  }
24
24
  case 'UPDATE_PALETTE': {
25
25
  const [, entries] = cmd;
26
26
  entries.forEach(([pal, idx, color]) => {
27
- const palette = Uint8Array.from(palettes[pal]);
28
- palette[idx] = color;
29
- palettes[pal] = palette;
27
+ palettes[pal][idx] = color;
30
28
  });
31
29
  break;
32
30
  }
@@ -1 +1 @@
1
- {"version":3,"file":"render-pic.js","sourceRoot":"","sources":["../../src/screen/render-pic.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"render-pic.js","sourceRoot":"","sources":["../../src/screen/render-pic.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"sci0-screen-impl.d.ts","sourceRoot":"","sources":["../../src/screen/sci0-screen-impl.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AACvE,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAG5C,eAAO,MAAM,UAAU,SAAU,OAAO,KAAG,KAoDxC,CAAC;AAEJ,eAAO,MAAM,eAAe,SACpB,OAAO,WACJ,UAAU,kCAElB,MAkCF,CAAC;AAEF,eAAO,MAAM,WAAW,SAChB,OAAO,4CAEZ,OAmCA,CAAC;AAEJ,eAAO,MAAM,YAAY,SAAU,OAAO,KAAG,MAW1C,CAAC"}
1
+ {"version":3,"file":"sci0-screen-impl.d.ts","sourceRoot":"","sources":["../../src/screen/sci0-screen-impl.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AACvE,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAG5C,eAAO,MAAM,UAAU,SAAU,OAAO,KAAG,KAoDxC,CAAC;AAEJ,eAAO,MAAM,eAAe,SACpB,OAAO,WACJ,UAAU,kCAElB,MA2FF,CAAC;AAEF,eAAO,MAAM,WAAW,SAChB,OAAO,4CAEZ,OAmCA,CAAC;AAEJ,eAAO,MAAM,YAAY,SAAU,OAAO,KAAG,MAW1C,CAAC"}
@@ -50,31 +50,78 @@ const createLine = (plot) => function line(x0, y0, x1, y1, drawMode, drawCodes)
50
50
  };
51
51
  exports.createLine = createLine;
52
52
  const createFloodFill = (plot, isLegal, [width, height]) => {
53
- const visited = new Set();
53
+ const visited = new Uint8ClampedArray(width * height);
54
54
  const stack = new numeric_deque_1.NumericDeque(width * height, Uint32Array);
55
- return function floodFill(sx, sy, drawMode, drawCodes) {
56
- const startI = sy * width + sx;
57
- stack.push(startI);
55
+ return function floodFill(ix, iy, drawMode, drawCodes) {
56
+ visited.fill(0);
57
+ stack.clear();
58
+ const start = iy * width + ix;
59
+ stack.push(start);
58
60
  while (!stack.isEmpty()) {
59
61
  const i = stack.shift();
60
- if (visited.has(i))
62
+ if (visited[i])
61
63
  continue;
62
- visited.add(i);
64
+ visited[i] = 0xff;
63
65
  const x = i % width;
64
66
  const y = (i / width) >>> 0;
65
67
  if (!isLegal(x, y, drawMode))
66
68
  continue;
67
69
  plot(x, y, drawMode, drawCodes);
68
- if (y - 1 >= 0 && !visited.has(i - width))
69
- stack.push(i - width);
70
- if (y + 1 < height && !visited.has(i + width))
71
- stack.push(i + width);
72
- if (x - 1 >= 0 && !visited.has(i - 1))
73
- stack.push(i - 1);
74
- if (x + 1 < width && !visited.has(i + 1))
75
- stack.push(i + 1);
70
+ if (y - 1 >= 0) {
71
+ if (!visited[i - width]) {
72
+ if (isLegal(x, y - 1, drawMode)) {
73
+ stack.push(i - width);
74
+ }
75
+ }
76
+ }
77
+ if (y + 1 < height) {
78
+ if (!visited[i + width]) {
79
+ if (isLegal(x, y + 1, drawMode)) {
80
+ stack.push(i + width);
81
+ }
82
+ }
83
+ }
84
+ // scan right
85
+ for (let sx = x + 1; sx < width && isLegal(sx, y, drawMode); sx++) {
86
+ const idx = i + (sx - x);
87
+ visited[idx] = 0xff;
88
+ plot(sx, y, drawMode, drawCodes);
89
+ if (y - 1 >= 0) {
90
+ if (!visited[idx - width]) {
91
+ if (isLegal(sx, y - 1, drawMode)) {
92
+ stack.push(idx - width);
93
+ }
94
+ }
95
+ }
96
+ if (y + 1 < height) {
97
+ if (!visited[idx + width]) {
98
+ if (isLegal(sx, y + 1, drawMode)) {
99
+ stack.push(idx + width);
100
+ }
101
+ }
102
+ }
103
+ }
104
+ // scan right
105
+ for (let sx = x - 1; sx >= 0 && isLegal(sx, y, drawMode); sx--) {
106
+ const idx = i + (sx - x);
107
+ visited[idx] = 0xff;
108
+ plot(sx, y, drawMode, drawCodes);
109
+ if (y - 1 >= 0) {
110
+ if (!visited[idx - width]) {
111
+ if (isLegal(sx, y - 1, drawMode)) {
112
+ stack.push(idx - width);
113
+ }
114
+ }
115
+ }
116
+ if (y + 1 < height) {
117
+ if (!visited[idx + width]) {
118
+ if (isLegal(sx, y + 1, drawMode)) {
119
+ stack.push(idx + width);
120
+ }
121
+ }
122
+ }
123
+ }
76
124
  }
77
- visited.clear();
78
125
  };
79
126
  };
80
127
  exports.createFloodFill = createFloodFill;
@@ -1 +1 @@
1
- {"version":3,"file":"sci0-screen-impl.js","sourceRoot":"","sources":["../../src/screen/sci0-screen-impl.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sci0-screen-impl.js","sourceRoot":"","sources":["../../src/screen/sci0-screen-impl.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"screen-buffer.d.ts","sourceRoot":"","sources":["../../src/screen/screen-buffer.ts"],"names":[],"mappings":"AAEA,OAAO,EAAwC,KAAK,MAAM,EAAE,MAAM,UAAU,CAAC;AAE7E,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAKpD,eAAO,MAAM,kBAAkB,aACnB,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,SAAS,YACzB,CAAC,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,CAAC,KACzD,CAAC,YAAY,EAAE,MAAM,CAmEvB,CAAC"}
1
+ {"version":3,"file":"screen-buffer.d.ts","sourceRoot":"","sources":["../../src/screen/screen-buffer.ts"],"names":[],"mappings":"AACA,OAAO,EAAwC,KAAK,MAAM,EAAE,MAAM,UAAU,CAAC;AAE7E,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAMpD,eAAO,MAAM,kBAAkB,aACnB,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,SAAS,YACzB,CAAC,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,CAAC,KACzD,CAAC,YAAY,EAAE,MAAM,CAmEvB,CAAC"}
@@ -2,8 +2,8 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.createScreenBuffer = void 0;
4
4
  const image_1 = require("@4bitlabs/image");
5
- const sci0_screen_impl_1 = require("./sci0-screen-impl");
6
5
  const draw_command_1 = require("../models/draw-command");
6
+ const tools_1 = require("./tools");
7
7
  const bufferWidth = 320;
8
8
  const bufferHeight = 190;
9
9
  const createScreenBuffer = (forcePal, palettes) => {
@@ -56,9 +56,9 @@ const createScreenBuffer = (forcePal, palettes) => {
56
56
  { visible, priority, control, alpha },
57
57
  {
58
58
  setPixel,
59
- brush: (0, sci0_screen_impl_1.createBrush)(plot, [bufferWidth, bufferHeight]),
60
- fill: (0, sci0_screen_impl_1.createFloodFill)(plot, isFillable, [bufferWidth, bufferHeight]),
61
- line: (0, sci0_screen_impl_1.createLine)(plot),
59
+ brush: (0, tools_1.createBrush)(plot, [bufferWidth, bufferHeight]),
60
+ fill: (0, tools_1.createFloodFill)(plot, isFillable, [bufferWidth, bufferHeight]),
61
+ line: (0, tools_1.createLine)(plot),
62
62
  },
63
63
  ];
64
64
  };
@@ -1 +1 @@
1
- {"version":3,"file":"screen-buffer.js","sourceRoot":"","sources":["../../src/screen/screen-buffer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"screen-buffer.js","sourceRoot":"","sources":["../../src/screen/screen-buffer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ declare const circleBitmaps: number[][];
2
+ export default circleBitmaps;
3
+ //# sourceMappingURL=circles.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"circles.d.ts","sourceRoot":"","sources":["../../../src/screen/tools/circles.ts"],"names":[],"mappings":"AACA,QAAA,MAAM,aAAa,EAAE,MAAM,EAAE,EAoF5B,CAAC;AAEF,eAAe,aAAa,CAAC"}
@@ -0,0 +1,87 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ // prettier-ignore
4
+ const circleBitmaps = [
5
+ [
6
+ 0b1
7
+ ],
8
+ [
9
+ 0b010,
10
+ 0b111,
11
+ 0b010,
12
+ ],
13
+ [
14
+ 0b01110,
15
+ 0b11111,
16
+ 0b11111,
17
+ 0b11111,
18
+ 0b01110,
19
+ ],
20
+ [
21
+ 0b0011100,
22
+ 0b0111110,
23
+ 0b1111111,
24
+ 0b1111111,
25
+ 0b1111111,
26
+ 0b0111110,
27
+ 0b0011100,
28
+ ],
29
+ [
30
+ 0b000111000,
31
+ 0b011111110,
32
+ 0b111111111,
33
+ 0b111111111,
34
+ 0b111111111,
35
+ 0b111111111,
36
+ 0b111111111,
37
+ 0b011111110,
38
+ 0b000111000,
39
+ ],
40
+ [
41
+ 0b00001110000,
42
+ 0b00111111100,
43
+ 0b01111111110,
44
+ 0b01111111110,
45
+ 0b11111111111,
46
+ 0b11111111111,
47
+ 0b11111111111,
48
+ 0b01111111110,
49
+ 0b01111111110,
50
+ 0b00111111100,
51
+ 0b00011111000,
52
+ ],
53
+ [
54
+ 0b0000111110000,
55
+ 0b0011111111100,
56
+ 0b0111111111110,
57
+ 0b0111111111110,
58
+ 0b1111111111111,
59
+ 0b1111111111111,
60
+ 0b1111111111111,
61
+ 0b1111111111111,
62
+ 0b1111111111111,
63
+ 0b0111111111110,
64
+ 0b0111111111110,
65
+ 0b0011111111100,
66
+ 0b0000111110000,
67
+ ],
68
+ [
69
+ 0b000001111100000,
70
+ 0b000111111111000,
71
+ 0b001111111111100,
72
+ 0b011111111111110,
73
+ 0b011111111111110,
74
+ 0b111111111111111,
75
+ 0b111111111111111,
76
+ 0b111111111111111,
77
+ 0b111111111111111,
78
+ 0b111111111111111,
79
+ 0b011111111111110,
80
+ 0b011111111111110,
81
+ 0b001111111111100,
82
+ 0b000111111111000,
83
+ 0b000001111100000,
84
+ ],
85
+ ];
86
+ exports.default = circleBitmaps;
87
+ //# sourceMappingURL=circles.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"circles.js","sourceRoot":"","sources":["../../../src/screen/tools/circles.ts"],"names":[],"mappings":";;AAAA,kBAAkB;AAClB,MAAM,aAAa,GAAe;IAChC;QACE,GAAG;KACJ;IACD;QACE,KAAK;QACL,KAAK;QACL,KAAK;KACN;IAED;QACE,OAAO;QACP,OAAO;QACP,OAAO;QACP,OAAO;QACP,OAAO;KACR;IAED;QACE,SAAS;QACT,SAAS;QACT,SAAS;QACT,SAAS;QACT,SAAS;QACT,SAAS;QACT,SAAS;KACV;IAED;QACE,WAAW;QACX,WAAW;QACX,WAAW;QACX,WAAW;QACX,WAAW;QACX,WAAW;QACX,WAAW;QACX,WAAW;QACX,WAAW;KACZ;IACD;QACE,aAAa;QACb,aAAa;QACb,aAAa;QACb,aAAa;QACb,aAAa;QACb,aAAa;QACb,aAAa;QACb,aAAa;QACb,aAAa;QACb,aAAa;QACb,aAAa;KACd;IACD;QACE,eAAe;QACf,eAAe;QACf,eAAe;QACf,eAAe;QACf,eAAe;QACf,eAAe;QACf,eAAe;QACf,eAAe;QACf,eAAe;QACf,eAAe;QACf,eAAe;QACf,eAAe;QACf,eAAe;KAChB;IACD;QACE,iBAAiB;QACjB,iBAAiB;QACjB,iBAAiB;QACjB,iBAAiB;QACjB,iBAAiB;QACjB,iBAAiB;QACjB,iBAAiB;QACjB,iBAAiB;QACjB,iBAAiB;QACjB,iBAAiB;QACjB,iBAAiB;QACjB,iBAAiB;QACjB,iBAAiB;QACjB,iBAAiB;QACjB,iBAAiB;KAClB;CACF,CAAC;AAEF,kBAAe,aAAa,CAAC"}
@@ -0,0 +1,4 @@
1
+ import { Brusher, Plotter } from '../screen';
2
+ import { StaticVec2 } from '../../models/vec2';
3
+ export declare const createBrush: (plot: Plotter, [stageWidth, stageHeight]: StaticVec2) => Brusher;
4
+ //# sourceMappingURL=create-brush.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-brush.d.ts","sourceRoot":"","sources":["../../../src/screen/tools/create-brush.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAK/C,eAAO,MAAM,WAAW,SAChB,OAAO,4CAEZ,OAmCA,CAAC"}
@@ -0,0 +1,37 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.createBrush = void 0;
7
+ const noise_1 = require("./noise");
8
+ const circles_1 = __importDefault(require("./circles"));
9
+ const createBrush = (plot, [stageWidth, stageHeight]) => function brush(cx, cy, size, isRect, isSpray, textureCode, drawMode, drawCodes) {
10
+ const baseWidth = isRect ? 2 : 1;
11
+ const width = baseWidth + size * 2;
12
+ const height = 1 + size * 2;
13
+ let top = Math.max(0, cy - size);
14
+ let left = Math.max(0, cx - size);
15
+ const bottom = top + height;
16
+ const right = left + width;
17
+ if (right >= stageWidth)
18
+ left = stageWidth - width;
19
+ if (bottom >= stageHeight)
20
+ top = stageHeight - height;
21
+ let noiseIdx = noise_1.NOISE_OFFSETS[textureCode];
22
+ for (let py = top; py < bottom; py += 1)
23
+ for (let px = left; px < right; px += 1) {
24
+ if (!isRect) {
25
+ const sprite = circles_1.default[size];
26
+ const row = sprite[py - top];
27
+ const shift = width - (px - left) - 1;
28
+ if (((row >>> shift) & 0b1) === 0)
29
+ continue;
30
+ }
31
+ if (isSpray && !noise_1.NOISE[noiseIdx++ & 0xff])
32
+ continue;
33
+ plot(px, py, drawMode, drawCodes);
34
+ }
35
+ };
36
+ exports.createBrush = createBrush;
37
+ //# sourceMappingURL=create-brush.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-brush.js","sourceRoot":"","sources":["../../../src/screen/tools/create-brush.ts"],"names":[],"mappings":";;;;;;AAGA,mCAA+C;AAC/C,wDAAgC;AAEzB,MAAM,WAAW,GAAG,CACzB,IAAa,EACb,CAAC,UAAU,EAAE,WAAW,CAAa,EAC5B,EAAE,CACX,SAAS,KAAK,CACZ,EAAE,EACF,EAAE,EACF,IAAI,EACJ,MAAM,EACN,OAAO,EACP,WAAW,EACX,QAAkB,EAClB,SAAoB;IAEpB,MAAM,SAAS,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACjC,MAAM,KAAK,GAAG,SAAS,GAAG,IAAI,GAAG,CAAC,CAAC;IACnC,MAAM,MAAM,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC;IAE5B,IAAI,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,GAAG,IAAI,CAAC,CAAC;IACjC,IAAI,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,GAAG,IAAI,CAAC,CAAC;IAClC,MAAM,MAAM,GAAG,GAAG,GAAG,MAAM,CAAC;IAC5B,MAAM,KAAK,GAAG,IAAI,GAAG,KAAK,CAAC;IAC3B,IAAI,KAAK,IAAI,UAAU;QAAE,IAAI,GAAG,UAAU,GAAG,KAAK,CAAC;IACnD,IAAI,MAAM,IAAI,WAAW;QAAE,GAAG,GAAG,WAAW,GAAG,MAAM,CAAC;IAEtD,IAAI,QAAQ,GAAG,qBAAa,CAAC,WAAW,CAAC,CAAC;IAE1C,KAAK,IAAI,EAAE,GAAG,GAAG,EAAE,EAAE,GAAG,MAAM,EAAE,EAAE,IAAI,CAAC;QACrC,KAAK,IAAI,EAAE,GAAG,IAAI,EAAE,EAAE,GAAG,KAAK,EAAE,EAAE,IAAI,CAAC,EAAE,CAAC;YACxC,IAAI,CAAC,MAAM,EAAE,CAAC;gBACZ,MAAM,MAAM,GAAG,iBAAO,CAAC,IAAI,CAAC,CAAC;gBAC7B,MAAM,GAAG,GAAG,MAAM,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC;gBAC7B,MAAM,KAAK,GAAG,KAAK,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;gBACtC,IAAI,CAAC,CAAC,GAAG,KAAK,KAAK,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC;oBAAE,SAAS;YAC9C,CAAC;YACD,IAAI,OAAO,IAAI,CAAC,aAAK,CAAC,QAAQ,EAAE,GAAG,IAAI,CAAC;gBAAE,SAAS;YACnD,IAAI,CAAC,EAAE,EAAE,EAAE,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;QACpC,CAAC;AACL,CAAC,CAAC;AAtCS,QAAA,WAAW,eAsCpB"}
@@ -0,0 +1,4 @@
1
+ import { Filler, IsFillable, Plotter } from '../screen';
2
+ import { StaticVec2 } from '../../models/vec2';
3
+ export declare const createFloodFill: (plot: Plotter, isLegal: IsFillable, [width, height]: StaticVec2) => Filler;
4
+ //# sourceMappingURL=create-flood-fill.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-flood-fill.d.ts","sourceRoot":"","sources":["../../../src/screen/tools/create-flood-fill.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACxD,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAG/C,eAAO,MAAM,eAAe,SACpB,OAAO,WACJ,UAAU,kCAElB,MAuEF,CAAC"}
@@ -0,0 +1,63 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createFloodFill = void 0;
4
+ const numeric_deque_1 = require("@4bitlabs/numeric-deque");
5
+ const createFloodFill = (plot, isLegal, [width, height]) => {
6
+ const visited = new Uint8ClampedArray(width * height);
7
+ const stack = new numeric_deque_1.NumericDeque(width * height, Uint32Array);
8
+ return function floodFill(ix, iy, drawMode, drawCodes) {
9
+ visited.fill(0);
10
+ stack.clear();
11
+ const start = iy * width + ix;
12
+ stack.push(start);
13
+ do {
14
+ const i = stack.shift();
15
+ if (visited[i])
16
+ continue;
17
+ visited[i] = 0xff;
18
+ const x = i % width;
19
+ const y = (i / width) >>> 0;
20
+ if (!isLegal(x, y, drawMode))
21
+ continue;
22
+ plot(x, y, drawMode, drawCodes);
23
+ const initialAbove = y - 1 >= 0 && !visited[i - width] && isLegal(x, y - 1, drawMode);
24
+ const initialBelow = y + 1 < height && !visited[i + width] && isLegal(x, y + 1, drawMode);
25
+ if (initialAbove)
26
+ stack.push(i - width);
27
+ if (initialBelow)
28
+ stack.push(i + width);
29
+ // scan right and left
30
+ for (let dir = 1; dir >= -1; dir -= 2) {
31
+ let visitedAbove = initialAbove;
32
+ let visitedBelow = initialBelow;
33
+ for (let sx = x + dir; (dir > 0 ? sx < width : sx >= 0) && isLegal(sx, y, drawMode); sx += dir) {
34
+ const idx = i + (sx - x);
35
+ visited[idx] = 0xff;
36
+ plot(sx, y, drawMode, drawCodes);
37
+ if (y - 1 >= 0 && !visited[idx - width]) {
38
+ if (isLegal(sx, y - 1, drawMode)) {
39
+ if (!visitedAbove)
40
+ stack.push(idx - width);
41
+ visitedAbove = true;
42
+ }
43
+ else {
44
+ visitedAbove = false;
45
+ }
46
+ }
47
+ if (y + 1 < height && !visited[idx + width]) {
48
+ if (isLegal(sx, y + 1, drawMode)) {
49
+ if (!visitedBelow)
50
+ stack.push(idx + width);
51
+ visitedBelow = true;
52
+ }
53
+ else {
54
+ visitedBelow = false;
55
+ }
56
+ }
57
+ }
58
+ }
59
+ } while (!stack.isEmpty());
60
+ };
61
+ };
62
+ exports.createFloodFill = createFloodFill;
63
+ //# sourceMappingURL=create-flood-fill.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-flood-fill.js","sourceRoot":"","sources":["../../../src/screen/tools/create-flood-fill.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { Liner, Plotter } from '../screen';
2
+ export declare const createLine: (plot: Plotter) => Liner;
3
+ //# sourceMappingURL=create-line.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-line.d.ts","sourceRoot":"","sources":["../../../src/screen/tools/create-line.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAG3C,eAAO,MAAM,UAAU,SAAU,OAAO,KAAG,KAoDxC,CAAC"}
@@ -0,0 +1,46 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createLine = void 0;
4
+ const createLine = (plot) => function line(x0, y0, x1, y1, drawMode, drawCodes) {
5
+ if (x0 === x1) {
6
+ for (let y = Math.min(y0, y1); y <= Math.max(y0, y1); y++)
7
+ plot(x0, y, drawMode, drawCodes);
8
+ return;
9
+ }
10
+ if (y0 === y1) {
11
+ for (let x = Math.min(x0, x1); x <= Math.max(x0, x1); x++)
12
+ plot(x, y0, drawMode, drawCodes);
13
+ return;
14
+ }
15
+ plot(x0, y0, drawMode, drawCodes);
16
+ plot(x1, y1, drawMode, drawCodes);
17
+ const dx = x1 - x0;
18
+ const dy = y1 - y0;
19
+ const adx = Math.abs(dx);
20
+ const ady = Math.abs(dy);
21
+ const sx = dx > 0 ? 1 : -1;
22
+ const sy = dy > 0 ? 1 : -1;
23
+ let eps = 0;
24
+ if (adx > ady) {
25
+ for (let x = x0, y = y0; sx < 0 ? x >= x1 : x <= x1; x += sx) {
26
+ plot(x, y, drawMode, drawCodes);
27
+ eps += ady;
28
+ if (eps << 1 >= adx) {
29
+ y += sy;
30
+ eps -= adx;
31
+ }
32
+ }
33
+ }
34
+ else {
35
+ for (let x = x0, y = y0; sy < 0 ? y >= y1 : y <= y1; y += sy) {
36
+ plot(x, y, drawMode, drawCodes);
37
+ eps += adx;
38
+ if (eps << 1 >= ady) {
39
+ x += sx;
40
+ eps -= ady;
41
+ }
42
+ }
43
+ }
44
+ };
45
+ exports.createLine = createLine;
46
+ //# sourceMappingURL=create-line.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-line.js","sourceRoot":"","sources":["../../../src/screen/tools/create-line.ts"],"names":[],"mappings":";;;AAGO,MAAM,UAAU,GAAG,CAAC,IAAa,EAAS,EAAE,CACjD,SAAS,IAAI,CACX,EAAU,EACV,EAAU,EACV,EAAU,EACV,EAAU,EACV,QAAkB,EAClB,SAAoB;IAEpB,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;QACd,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE;YACvD,IAAI,CAAC,EAAE,EAAE,CAAC,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;QACnC,OAAO;IACT,CAAC;IAED,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;QACd,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE;YACvD,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;QACnC,OAAO;IACT,CAAC;IAED,IAAI,CAAC,EAAE,EAAE,EAAE,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;IAClC,IAAI,CAAC,EAAE,EAAE,EAAE,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;IAElC,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;IACnB,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;IACnB,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IACzB,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IACzB,MAAM,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC3B,MAAM,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAE3B,IAAI,GAAG,GAAG,CAAC,CAAC;IAEZ,IAAI,GAAG,GAAG,GAAG,EAAE,CAAC;QACd,KAAK,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC;YAC7D,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;YAChC,GAAG,IAAI,GAAG,CAAC;YACX,IAAI,GAAG,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC;gBACpB,CAAC,IAAI,EAAE,CAAC;gBACR,GAAG,IAAI,GAAG,CAAC;YACb,CAAC;QACH,CAAC;IACH,CAAC;SAAM,CAAC;QACN,KAAK,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC;YAC7D,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;YAChC,GAAG,IAAI,GAAG,CAAC;YACX,IAAI,GAAG,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC;gBACpB,CAAC,IAAI,EAAE,CAAC;gBACR,GAAG,IAAI,GAAG,CAAC;YACb,CAAC;QACH,CAAC;IACH,CAAC;AACH,CAAC,CAAC;AApDS,QAAA,UAAU,cAoDnB"}
@@ -0,0 +1,3 @@
1
+ import { Filler, Plotter } from '../screen';
2
+ export declare const createMarker: (plot: Plotter) => Filler;
3
+ //# sourceMappingURL=create-marker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-marker.d.ts","sourceRoot":"","sources":["../../../src/screen/tools/create-marker.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAG5C,eAAO,MAAM,YAAY,SAAU,OAAO,KAAG,MAW1C,CAAC"}
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createMarker = void 0;
4
+ const createMarker = (plot) => function marker(x, y, drawMode, drawCodes) {
5
+ plot(x - 1, y, drawMode, drawCodes);
6
+ plot(x, y - 1, drawMode, drawCodes);
7
+ plot(x + 1, y, drawMode, drawCodes);
8
+ plot(x, y + 1, drawMode, drawCodes);
9
+ };
10
+ exports.createMarker = createMarker;
11
+ //# sourceMappingURL=create-marker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-marker.js","sourceRoot":"","sources":["../../../src/screen/tools/create-marker.ts"],"names":[],"mappings":";;;AAGO,MAAM,YAAY,GAAG,CAAC,IAAa,EAAU,EAAE,CACpD,SAAS,MAAM,CACb,CAAS,EACT,CAAS,EACT,QAAkB,EAClB,SAAoB;IAEpB,IAAI,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;IACpC,IAAI,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;IACpC,IAAI,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;IACpC,IAAI,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;AACtC,CAAC,CAAC;AAXS,QAAA,YAAY,gBAWrB"}
@@ -0,0 +1,5 @@
1
+ export { createBrush } from './create-brush';
2
+ export { createFloodFill } from './create-flood-fill';
3
+ export { createLine } from './create-line';
4
+ export { createMarker } from './create-marker';
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/screen/tools/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC"}
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createMarker = exports.createLine = exports.createFloodFill = exports.createBrush = void 0;
4
+ var create_brush_1 = require("./create-brush");
5
+ Object.defineProperty(exports, "createBrush", { enumerable: true, get: function () { return create_brush_1.createBrush; } });
6
+ var create_flood_fill_1 = require("./create-flood-fill");
7
+ Object.defineProperty(exports, "createFloodFill", { enumerable: true, get: function () { return create_flood_fill_1.createFloodFill; } });
8
+ var create_line_1 = require("./create-line");
9
+ Object.defineProperty(exports, "createLine", { enumerable: true, get: function () { return create_line_1.createLine; } });
10
+ var create_marker_1 = require("./create-marker");
11
+ Object.defineProperty(exports, "createMarker", { enumerable: true, get: function () { return create_marker_1.createMarker; } });
12
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/screen/tools/index.ts"],"names":[],"mappings":";;;AAAA,+CAA6C;AAApC,2GAAA,WAAW,OAAA;AACpB,yDAAsD;AAA7C,oHAAA,eAAe,OAAA;AACxB,6CAA2C;AAAlC,yGAAA,UAAU,OAAA;AACnB,iDAA+C;AAAtC,6GAAA,YAAY,OAAA"}
@@ -0,0 +1,3 @@
1
+ export declare const NOISE: boolean[];
2
+ export declare const NOISE_OFFSETS: number[];
3
+ //# sourceMappingURL=noise.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"noise.d.ts","sourceRoot":"","sources":["../../../src/screen/tools/noise.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,KAAK,EAAE,OAAO,EAI6C,CAAC;AAEzE,eAAO,MAAM,aAAa,EAAE,MAAM,EAWjC,CAAC"}
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.NOISE_OFFSETS = exports.NOISE = void 0;
4
+ const BYTE = Array(8)
5
+ .fill(0)
6
+ .map((_, i) => i);
7
+ exports.NOISE = [
8
+ 0x20, 0x94, 0x02, 0x24, 0x90, 0x82, 0xa4, 0xa2, 0x82, 0x09, 0x0a, 0x22, 0x12,
9
+ 0x10, 0x42, 0x14, 0x91, 0x4a, 0x91, 0x11, 0x08, 0x12, 0x25, 0x10, 0x22, 0xa8,
10
+ 0x14, 0x24, 0x00, 0x50, 0x24, 0x04,
11
+ ].flatMap((it) => BYTE.map((idx) => ((it >>> (7 - idx)) & 0b1) === 0b1));
12
+ exports.NOISE_OFFSETS = [
13
+ 0x00, 0x18, 0x30, 0xc4, 0xdc, 0x65, 0xeb, 0x48, 0x60, 0xbd, 0x89, 0x04, 0x0a,
14
+ 0xf4, 0x7d, 0x6d, 0x85, 0xb0, 0x8e, 0x95, 0x1f, 0x22, 0x0d, 0xdf, 0x2a, 0x78,
15
+ 0xd5, 0x73, 0x1c, 0xb4, 0x40, 0xa1, 0xb9, 0x3c, 0xca, 0x58, 0x92, 0x34, 0xcc,
16
+ 0xce, 0xd7, 0x42, 0x90, 0x0f, 0x8b, 0x7f, 0x32, 0xed, 0x5c, 0x9d, 0xc8, 0x99,
17
+ 0xad, 0x4e, 0x56, 0xa6, 0xf7, 0x68, 0xb7, 0x25, 0x82, 0x37, 0x3a, 0x51, 0x69,
18
+ 0x26, 0x38, 0x52, 0x9e, 0x9a, 0x4f, 0xa7, 0x43, 0x10, 0x80, 0xee, 0x3d, 0x59,
19
+ 0x35, 0xcf, 0x79, 0x74, 0xb5, 0xa2, 0xb1, 0x96, 0x23, 0xe0, 0xbe, 0x05, 0xf5,
20
+ 0x6e, 0x19, 0xc5, 0x66, 0x49, 0xf0, 0xd1, 0x54, 0xa9, 0x70, 0x4b, 0xa4, 0xe2,
21
+ 0xe6, 0xe5, 0xab, 0xe4, 0xd2, 0xaa, 0x4c, 0xe3, 0x06, 0x6f, 0xc6, 0x4a, 0x75,
22
+ 0xa3, 0x97, 0xe1,
23
+ ];
24
+ //# sourceMappingURL=noise.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"noise.js","sourceRoot":"","sources":["../../../src/screen/tools/noise.ts"],"names":[],"mappings":";;;AAAA,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC;KAClB,IAAI,CAAC,CAAC,CAAC;KACP,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;AAEP,QAAA,KAAK,GAAc;IAC9B,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;IAC5E,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;IAC5E,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;CACnC,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;AAE5D,QAAA,aAAa,GAAa;IACrC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;IAC5E,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;IAC5E,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;IAC5E,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;IAC5E,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;IAC5E,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;IAC5E,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;IAC5E,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;IAC5E,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;IAC5E,IAAI,EAAE,IAAI,EAAE,IAAI;CACjB,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@4bitlabs/sci0",
3
- "version": "2.4.4",
3
+ "version": "2.4.6",
4
4
  "description": "Library for parsing and rendering assets from Sierra On-line's SCI-engine.",
5
5
  "main": "./dist/index.js",
6
6
  "types": "./dist/index.d.ts",
@@ -25,9 +25,8 @@
25
25
  "license": "ISC",
26
26
  "dependencies": {
27
27
  "@4bitlabs/codecs": "^1.0.4",
28
- "@4bitlabs/image": "^3.3.5",
28
+ "@4bitlabs/image": "^3.3.6",
29
29
  "@4bitlabs/numeric-deque": "^1.1.3",
30
30
  "@4bitlabs/readers": "^2.0.4"
31
- },
32
- "gitHead": "ee84739fa7dd59d9370a061e45510ddb3bd79d4f"
31
+ }
33
32
  }