1681-engine 0.6.7 → 0.6.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.
@@ -1,4 +1,4 @@
1
- import { Rectangle as k } from "./Rectangle.js";
1
+ import { Rectangle as m } from "./Rectangle.js";
2
2
  class g {
3
3
  constructor(t, s) {
4
4
  this.world = t, this.screen = s;
@@ -104,8 +104,8 @@ class g {
104
104
  this.followers.delete(t);
105
105
  }
106
106
  /** Full-screen colour flash starting at `peak` alpha and fading out over `ms`. */
107
- flash(t, s, h, e, r = !1, o = 1) {
108
- (!this.flashRect || this.flashRect.destroyed) && (this.flashRect = new k(1, 1, 16777215).setOrigin(0, 0), this.screen.addChild(this.flashRect)), this.flashRect.resize(this.width, this.height).setFillStyle(s << 16 | h << 8 | e).setAlpha(o).setVisible(!0), this.flashStart = performance.now(), this.flashMs = t, this.flashPeak = o;
107
+ flash(t, s, h, e, n = !1, o = 1) {
108
+ (!this.flashRect || this.flashRect.destroyed) && (this.flashRect = new m(1, 1, 16777215).setOrigin(0, 0), this.screen.addChild(this.flashRect)), this.flashRect.resize(this.width, this.height).setFillStyle(s << 16 | h << 8 | e).setAlpha(o).setVisible(!0), this.flashStart = performance.now(), this.flashMs = t, this.flashPeak = o;
109
109
  }
110
110
  /**
111
111
  * Keeps `target` (anything with `x` and `y`, read every frame: an entity's position, a sprite) in view, inside the
@@ -121,7 +121,7 @@ class g {
121
121
  follow1(t) {
122
122
  const s = this.target;
123
123
  if (!s) return;
124
- const h = this.trackOpts, e = this.width / this.zoom, r = this.height / this.zoom, o = this.scrollX + e / 2, n = this.scrollY + r / 2, i = s.x + h.offsetX, l = s.y + h.offsetY, a = h.deadzoneWidth / 2, c = h.deadzoneHeight / 2, f = i - o > a ? i - o - a : i - o < -a ? i - o + a : 0, u = l - n > c ? l - n - c : l - n < -c ? l - n + c : 0, d = h.lerp >= 1 ? 1 : 1 - Math.pow(1 - Math.max(0, h.lerp), t / (1e3 / 60));
124
+ const h = this.trackOpts, e = this.width / this.zoom, n = this.height / this.zoom, o = this.scrollX + e / 2, r = this.scrollY + n / 2, i = s.x + h.offsetX, l = s.y + h.offsetY, a = h.deadzoneWidth / 2, c = h.deadzoneHeight / 2, f = i - o > a ? i - o - a : i - o < -a ? i - o + a : 0, u = l - r > c ? l - r - c : l - r < -c ? l - r + c : 0, d = h.lerp >= 1 ? 1 : 1 - Math.pow(1 - Math.max(0, h.lerp), t / (1e3 / 60));
125
125
  this.scrollX += f * d, this.scrollY += u * d, this.clamp();
126
126
  }
127
127
  /** Writes the camera into the world layer; called once per frame after the scene updated. */
@@ -138,8 +138,8 @@ class g {
138
138
  h = Math.round((Math.random() * 2 - 1) * this.shakeIntensity * this.width * i), e = Math.round((Math.random() * 2 - 1) * this.shakeIntensity * this.height * i);
139
139
  }
140
140
  this.world.scale.set(this.zoom);
141
- const r = this.zoom * this.resolution, o = this.roundPixels ? Math.round(this.scrollX * r) / this.resolution : this.scrollX * this.zoom, n = this.roundPixels ? Math.round(this.scrollY * r) / this.resolution : this.scrollY * this.zoom;
142
- this.world.position.set(-o + h, -n + e);
141
+ const n = this.zoom * this.resolution, o = this.pixelGrid ? Math.round(this.scrollX) * this.zoom : this.roundPixels ? Math.round(this.scrollX * n) / this.resolution : this.scrollX * this.zoom, r = this.pixelGrid ? Math.round(this.scrollY) * this.zoom : this.roundPixels ? Math.round(this.scrollY * n) / this.resolution : this.scrollY * this.zoom;
142
+ this.world.position.set(-o + h, -r + e);
143
143
  for (const i of this.followers)
144
144
  i.scale.set(this.zoom), i.position.copyFrom(this.world.position);
145
145
  if (this.flashRect?.visible) {
@@ -1 +1 @@
1
- {"version":3,"file":"Camera.d.ts","sourceRoot":"","sources":["../../../src/core/Camera.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Camera.d.ts","sourceRoot":"","sources":["../../../src/core/Camera.ts"],"names":[],"mappings":"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"}
@@ -3,8 +3,10 @@ import type { Camera } from './Camera.js';
3
3
  import { SharpText } from './SharpText.js';
4
4
  /**
5
5
  * A pixel-perfect world (`Stage.pixelPerfect`): the world layer is taken off the stage and drawn each frame into a
6
- * texture of one texel per world pixel (`Stage.pixelDensity` texels, when the art is finer), whose origin sits on a whole world pixel, then shown at the camera's zoom and
7
- * moved by the scroll's fraction, so the camera still glides one backing pixel at a time. Everything turned, scaled or
6
+ * texture of one texel per world pixel (`Stage.pixelDensity` texels, when the art is finer), whose origin sits on a whole world pixel, then shown at the camera's zoom.
7
+ * The camera scrolls by whole world pixels meanwhile (`Camera.apply`), the grid the roots are snapped to: it glided a
8
+ * backing pixel at a time until 0.6.8, and the followed body, snapped to world pixels under it, jittered and read as
9
+ * blurred. Everything turned, scaled or
8
10
  * placed between pixels lands on the same grid as the rest of the art, so no pixel on screen is drawn at another size
9
11
  * ("mixels"); the world is also filled at 1/zoom² of the screen's pixels. Roots placed with `Camera.snapRoot` land on
10
12
  * whole world pixels meanwhile, and text stays at screen resolution (`SharpText`).
@@ -1 +1 @@
1
- {"version":3,"file":"PixelGrid.d.ts","sourceRoot":"","sources":["../../../src/core/PixelGrid.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiC,KAAK,WAAW,EAAE,KAAK,SAAS,EAAE,MAAM,SAAS,CAAC;AAC1F,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAEvC,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAExC;;;;;;;GAOG;AACH,qBAAa,SAAS;IAQlB,OAAO,CAAC,QAAQ,CAAC,GAAG;IACpB,OAAO,CAAC,QAAQ,CAAC,KAAK;IARxB,OAAO,CAAC,OAAO,CAA8B;IAC7C,OAAO,CAAC,MAAM,CAAuB;IACrC,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IACzB,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAgB;IAC1C,OAAO,CAAC,EAAE,CAAS;gBAGA,GAAG,EAAE,WAAW,EAChB,KAAK,EAAE,SAAS;IAKnC,IAAI,OAAO,IAAI,OAAO,CAErB;IAED,mGAAmG;IACnG,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,SAAI,GAAG,IAAI;IAmBxD,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAK1B,OAAO,CAAC,MAAM;IAWd,OAAO,CAAC,OAAO;IAef;;;OAGG;IACH,OAAO,CAAC,GAAG;CAQZ"}
1
+ {"version":3,"file":"PixelGrid.d.ts","sourceRoot":"","sources":["../../../src/core/PixelGrid.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiC,KAAK,WAAW,EAAE,KAAK,SAAS,EAAE,MAAM,SAAS,CAAC;AAC1F,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAEvC,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAExC;;;;;;;;;GASG;AACH,qBAAa,SAAS;IAQlB,OAAO,CAAC,QAAQ,CAAC,GAAG;IACpB,OAAO,CAAC,QAAQ,CAAC,KAAK;IARxB,OAAO,CAAC,OAAO,CAA8B;IAC7C,OAAO,CAAC,MAAM,CAAuB;IACrC,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IACzB,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAgB;IAC1C,OAAO,CAAC,EAAE,CAAS;gBAGA,GAAG,EAAE,WAAW,EAChB,KAAK,EAAE,SAAS;IAKnC,IAAI,OAAO,IAAI,OAAO,CAErB;IAED,mGAAmG;IACnG,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,SAAI,GAAG,IAAI;IAmBxD,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAK1B,OAAO,CAAC,MAAM;IAWd,OAAO,CAAC,OAAO;IAef;;;OAGG;IACH,OAAO,CAAC,GAAG;CAQZ"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "1681-engine",
3
- "version": "0.6.7",
3
+ "version": "0.6.8",
4
4
  "description": "A 2D game engine on PixiJS 8 for any art style: scenes and a fast ECS, a fixed-step loop, asset loading, Tiled maps, sprite animation, input actions, camera follow, audio and deterministic, server-replayable movement, plus Dither, an optional pixel-art module (pixel-perfect effects, dithered lighting).",
5
5
  "type": "module",
6
6
  "types": "./dist/types/index.d.ts",