dopaminejs 2.3.0 → 2.3.1

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 (2) hide show
  1. package/package.json +1 -1
  2. package/types/index.d.ts +23 -7
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "dopaminejs",
3
- "version": "2.3.0",
3
+ "version": "2.3.1",
4
4
  "description": "Progression mechanics for web apps: XP, levels, achievements and timezone-correct daily streaks, with the particles and sound to make them land. Zero dependencies.",
5
5
  "type": "module",
6
6
  "main": "./dist/dopamine.cjs",
package/types/index.d.ts CHANGED
@@ -218,12 +218,15 @@ export interface ParticleConfig {
218
218
  x: number;
219
219
  y: number;
220
220
  count?: number;
221
- color?: string;
221
+ /** One colour, or a list to pick from at random per particle. */
222
+ color?: string | string[];
222
223
  size?: number;
223
224
  life?: number;
224
225
  decay?: number;
225
226
  gravity?: number;
226
227
  spread?: number;
228
+ /** Direction in radians. */
229
+ angle?: number;
227
230
  speed?: number;
228
231
  type?: string;
229
232
  sprite?: string;
@@ -433,19 +436,29 @@ export class Component {
433
436
  render(ctx: CanvasRenderingContext2D): void;
434
437
  }
435
438
 
436
- export interface Bounds {
439
+ export interface BoxBounds {
440
+ left: number;
441
+ right: number;
442
+ top: number;
443
+ bottom: number;
444
+ }
445
+
446
+ export interface CircleBounds {
437
447
  x: number;
438
448
  y: number;
439
- width: number;
440
- height: number;
449
+ radius: number;
441
450
  }
442
451
 
452
+ /** A box collider returns edges, a circle collider returns centre and radius. */
453
+ export type Bounds = BoxBounds | CircleBounds;
454
+
443
455
  export class Collider extends Component {
444
456
  constructor(type?: 'box' | 'circle', width?: number, height?: number, radius?: number);
445
457
  type: 'box' | 'circle';
446
458
  width: number;
447
459
  height: number;
448
460
  radius: number;
461
+ tag: string | null;
449
462
  getBounds(): Bounds;
450
463
  }
451
464
 
@@ -462,11 +475,13 @@ export class Animator extends Component {
462
475
 
463
476
  export class GameObject {
464
477
  constructor(x?: number, y?: number);
465
- position: Vector2;
478
+ x: number;
479
+ y: number;
466
480
  rotation: number;
467
- scale: Vector2;
481
+ scale: { x: number; y: number };
468
482
  components: Component[];
469
483
  children: GameObject[];
484
+ parent: GameObject | null;
470
485
  kernel: DopamineKernel | null;
471
486
  tag?: string;
472
487
  addChild(child: GameObject): GameObject;
@@ -527,7 +542,8 @@ export class Physics {
527
542
  add(collider: Collider): void;
528
543
  remove(collider: Collider): void;
529
544
  step(): void;
530
- checkOverlap(source: Collider, targetTag: string): GameObject | null;
545
+ /** Every collider that overlaps `source`. With a tag, only colliders carrying it. */
546
+ checkOverlap(source: Collider, targetTag?: string): Collider[];
531
547
  addBody(body: Collider): void;
532
548
  removeBody(body: Collider): void;
533
549
  checkCollision(a: Collider, b: Collider): boolean;