cafe-utility 16.3.0 → 16.4.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 (3) hide show
  1. package/index.d.ts +8 -0
  2. package/index.js +10 -1
  3. package/package.json +1 -1
package/index.d.ts CHANGED
@@ -18,6 +18,13 @@ declare function makeSeededRng(seed: number): () => number;
18
18
  declare function intBetween(min: number, max: number, generator?: () => number): number;
19
19
  declare function floatBetween(min: number, max: number, generator?: () => number): number;
20
20
  declare function signedRandom(): number;
21
+ interface Rectangle {
22
+ x: number;
23
+ y: number;
24
+ width: number;
25
+ height: number;
26
+ }
27
+ declare function randomPoint(width: number, height: number, exclude?: Rectangle, generator?: () => number): [number, number];
21
28
  declare function chance(threshold: number, generator?: () => number): boolean;
22
29
  declare function pick<T>(array: T[], generator?: () => number): T;
23
30
  declare function pickMany<T>(array: T[], count: number, generator?: () => number): T[];
@@ -401,6 +408,7 @@ export declare const Random: {
401
408
  chance: typeof chance;
402
409
  signed: typeof signedRandom;
403
410
  makeSeededRng: typeof makeSeededRng;
411
+ point: typeof randomPoint;
404
412
  };
405
413
  export declare const Arrays: {
406
414
  countUnique: typeof countUnique;
package/index.js CHANGED
@@ -105,6 +105,15 @@ function floatBetween(n, e, t = Math.random) {
105
105
  function signedRandom() {
106
106
  return Math.random() * 2 - 1
107
107
  }
108
+ function containsPoint(n, e, t) {
109
+ return e >= n.x && e < n.x + n.width && t >= n.y && t < n.y + n.height
110
+ }
111
+ function randomPoint(n, e, t, r = Math.random) {
112
+ let o, i
113
+ do (o = intBetween(0, n - 1, r)), (i = intBetween(0, e - 1, r))
114
+ while (t && containsPoint(t, o, i))
115
+ return [o, i]
116
+ }
108
117
  function chance(n, e = Math.random) {
109
118
  return e() < n
110
119
  }
@@ -1985,7 +1994,7 @@ function raycastCircle(n, e, t) {
1985
1994
  }
1986
1995
  return i
1987
1996
  }
1988
- ;(exports.Random = { intBetween, floatBetween, chance, signed: signedRandom, makeSeededRng }),
1997
+ ;(exports.Random = { intBetween, floatBetween, chance, signed: signedRandom, makeSeededRng, point: randomPoint }),
1989
1998
  (exports.Arrays = {
1990
1999
  countUnique,
1991
2000
  makeUnique,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "cafe-utility",
3
- "version": "16.3.0",
3
+ "version": "16.4.1",
4
4
  "description": "",
5
5
  "main": "index.js",
6
6
  "exports": {