@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 +71 -4
- package/dist/mod.js.map +4 -4
- package/package.json +3 -3
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.
|
|
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.
|
|
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=
|
|
7895
|
+
//# debugId=0BC38D81E8CCB55464756E2164756E21
|
|
7829
7896
|
//# sourceMappingURL=mod.js.map
|