@bloopjs/web 0.0.103 → 0.0.105

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/dist/mod.js CHANGED
@@ -82,6 +82,8 @@ __export2(exports_engine, {
82
82
  SNAPSHOT_HEADER_LEN: () => SNAPSHOT_HEADER_LEN,
83
83
  SNAPSHOT_HEADER_ENGINE_LEN_OFFSET: () => SNAPSHOT_HEADER_ENGINE_LEN_OFFSET,
84
84
  SCREEN_CTX_OFFSET: () => SCREEN_CTX_OFFSET,
85
+ RandContext: () => RandContext,
86
+ RAND_CTX_OFFSET: () => RAND_CTX_OFFSET,
85
87
  PlayerInputContext: () => PlayerInputContext,
86
88
  PLAYER_INPUTS_SIZE: () => PLAYER_INPUTS_SIZE,
87
89
  PLAYER_INPUTS_MOUSE_CTX_OFFSET: () => PLAYER_INPUTS_MOUSE_CTX_OFFSET,
@@ -421,6 +423,7 @@ var SCREEN_CTX_HEIGHT_OFFSET = 4;
421
423
  var SCREEN_CTX_PHYSICAL_WIDTH_OFFSET = 8;
422
424
  var SCREEN_CTX_PHYSICAL_HEIGHT_OFFSET = 12;
423
425
  var SCREEN_CTX_PIXEL_RATIO_OFFSET = 16;
426
+ var RAND_CTX_SEED_OFFSET = 0;
424
427
  var MOUSE_CTX_X_OFFSET = 0;
425
428
  var MOUSE_CTX_Y_OFFSET = 4;
426
429
  var MOUSE_CTX_WHEEL_X_OFFSET = 8;
@@ -1354,6 +1357,57 @@ class NetContext {
1354
1357
  }
1355
1358
  }
1356
1359
 
1360
+ class RandContext {
1361
+ dataView;
1362
+ constructor(dataView) {
1363
+ this.dataView = dataView;
1364
+ }
1365
+ seed(value) {
1366
+ if (!this.dataView) {
1367
+ throw new Error("RandContext not initialized");
1368
+ }
1369
+ this.dataView.setUint32(RAND_CTX_SEED_OFFSET, value >>> 0, true);
1370
+ }
1371
+ getSeed() {
1372
+ if (!this.dataView) {
1373
+ throw new Error("RandContext not initialized");
1374
+ }
1375
+ return this.dataView.getUint32(RAND_CTX_SEED_OFFSET, true);
1376
+ }
1377
+ next() {
1378
+ if (!this.dataView) {
1379
+ throw new Error("RandContext not initialized");
1380
+ }
1381
+ let seed = this.dataView.getUint32(RAND_CTX_SEED_OFFSET, true);
1382
+ seed = seed + 1831565813 | 0;
1383
+ let t = Math.imul(seed ^ seed >>> 15, 1 | seed);
1384
+ t = t + Math.imul(t ^ t >>> 7, 61 | t) ^ t;
1385
+ this.dataView.setUint32(RAND_CTX_SEED_OFFSET, seed >>> 0, true);
1386
+ return ((t ^ t >>> 14) >>> 0) / 4294967296;
1387
+ }
1388
+ coinFlip() {
1389
+ return this.next() < 0.5;
1390
+ }
1391
+ rollDice(sides = 6) {
1392
+ return Math.floor(this.next() * sides) + 1;
1393
+ }
1394
+ int(min, max) {
1395
+ return Math.floor(this.next() * (max - min + 1)) + min;
1396
+ }
1397
+ float(min, max) {
1398
+ return this.next() * (max - min) + min;
1399
+ }
1400
+ shuffle(array) {
1401
+ for (let i = array.length - 1;i > 0; i--) {
1402
+ const j = Math.floor(this.next() * (i + 1));
1403
+ const temp = array[i];
1404
+ array[i] = array[j];
1405
+ array[j] = temp;
1406
+ }
1407
+ return array;
1408
+ }
1409
+ }
1410
+
1357
1411
  class ScreenContext {
1358
1412
  dataView;
1359
1413
  constructor(dataView) {
@@ -1450,13 +1504,14 @@ function readTapeHeader(tape) {
1450
1504
  eventCount: view.getUint16(14, true)
1451
1505
  };
1452
1506
  }
1453
- var DEFAULT_WASM_URL = new URL("https://unpkg.com/@bloopjs/engine@0.0.103/wasm/bloop.wasm");
1507
+ var DEFAULT_WASM_URL = new URL("https://unpkg.com/@bloopjs/engine@0.0.105/wasm/bloop.wasm");
1454
1508
  var MAX_ROLLBACK_FRAMES = 500;
1455
1509
  var TIME_CTX_OFFSET = 0;
1456
1510
  var INPUT_CTX_OFFSET = TIME_CTX_OFFSET + 4;
1457
1511
  var EVENTS_OFFSET = INPUT_CTX_OFFSET + 4;
1458
1512
  var NET_CTX_OFFSET = EVENTS_OFFSET + 4;
1459
1513
  var SCREEN_CTX_OFFSET = NET_CTX_OFFSET + 4;
1514
+ var RAND_CTX_OFFSET = SCREEN_CTX_OFFSET + 4;
1460
1515
  var SNAPSHOT_HEADER_LEN = 16;
1461
1516
  var SNAPSHOT_HEADER_USER_LEN_OFFSET = 4;
1462
1517
  var SNAPSHOT_HEADER_ENGINE_LEN_OFFSET = 8;
@@ -1858,6 +1913,7 @@ class Bloop {
1858
1913
  #systems = [];
1859
1914
  #context;
1860
1915
  #engineBuffer = new ArrayBuffer(0);
1916
+ #randSeeded = false;
1861
1917
  static create(opts = {}) {
1862
1918
  return new Bloop(opts, "dontCallMeDirectly");
1863
1919
  }
@@ -1868,6 +1924,7 @@ class Bloop {
1868
1924
  const inputs = new InputContext;
1869
1925
  const net = new NetContext;
1870
1926
  const screen = new ScreenContext;
1927
+ const rand = new RandContext;
1871
1928
  this.#context = {
1872
1929
  bag: opts.bag ?? {},
1873
1930
  time: new TimeContext,
@@ -1875,7 +1932,8 @@ class Bloop {
1875
1932
  players: new Players(inputs, net),
1876
1933
  rawPointer: -1,
1877
1934
  net,
1878
- screen
1935
+ screen,
1936
+ rand
1879
1937
  };
1880
1938
  }
1881
1939
  get bag() {
@@ -1937,6 +1995,14 @@ class Bloop {
1937
1995
  if (this.#context.screen.dataView?.buffer !== this.#engineBuffer || this.#context.screen.dataView?.byteOffset !== screenCtxPtr) {
1938
1996
  this.#context.screen.dataView = new DataView(this.#engineBuffer, screenCtxPtr);
1939
1997
  }
1998
+ const randCtxPtr = dv.getUint32(RAND_CTX_OFFSET, true);
1999
+ if (this.#context.rand.dataView?.buffer !== this.#engineBuffer || this.#context.rand.dataView?.byteOffset !== randCtxPtr) {
2000
+ this.#context.rand.dataView = new DataView(this.#engineBuffer, randCtxPtr);
2001
+ }
2002
+ if (!this.#randSeeded) {
2003
+ this.#context.rand.seed(Date.now() & 4294967295);
2004
+ this.#randSeeded = true;
2005
+ }
1940
2006
  },
1941
2007
  systemsCallback: (system_handle, ptr) => {
1942
2008
  this.hooks.setContext(ptr);
@@ -3324,12 +3390,13 @@ function readTapeHeader2(tape) {
3324
3390
  eventCount: view.getUint16(14, true)
3325
3391
  };
3326
3392
  }
3327
- var DEFAULT_WASM_URL2 = new URL("https://unpkg.com/@bloopjs/engine@0.0.103/wasm/bloop.wasm");
3393
+ var DEFAULT_WASM_URL2 = new URL("https://unpkg.com/@bloopjs/engine@0.0.105/wasm/bloop.wasm");
3328
3394
  var TIME_CTX_OFFSET2 = 0;
3329
3395
  var INPUT_CTX_OFFSET2 = TIME_CTX_OFFSET2 + 4;
3330
3396
  var EVENTS_OFFSET2 = INPUT_CTX_OFFSET2 + 4;
3331
3397
  var NET_CTX_OFFSET2 = EVENTS_OFFSET2 + 4;
3332
3398
  var SCREEN_CTX_OFFSET2 = NET_CTX_OFFSET2 + 4;
3399
+ var RAND_CTX_OFFSET2 = SCREEN_CTX_OFFSET2 + 4;
3333
3400
 
3334
3401
  // src/debugui/mod.ts
3335
3402
  var exports_mod = {};
@@ -7825,5 +7892,5 @@ export {
7825
7892
  App
7826
7893
  };
7827
7894
 
7828
- //# debugId=A1466E71356AC5F764756E2164756E21
7895
+ //# debugId=0BC38D81E8CCB55464756E2164756E21
7829
7896
  //# sourceMappingURL=mod.js.map