quake2ts 0.0.74 → 0.0.76
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/package.json +1 -1
- package/packages/client/dist/browser/index.global.js +1 -1
- package/packages/client/dist/browser/index.global.js.map +1 -1
- package/packages/client/dist/cjs/index.cjs.map +1 -1
- package/packages/client/dist/esm/index.js.map +1 -1
- package/packages/client/dist/tsconfig.tsbuildinfo +1 -1
- package/packages/engine/dist/browser/index.global.js +10 -10
- package/packages/engine/dist/browser/index.global.js.map +1 -1
- package/packages/engine/dist/cjs/index.cjs.map +1 -1
- package/packages/engine/dist/esm/index.js.map +1 -1
- package/packages/engine/dist/tsconfig.tsbuildinfo +1 -1
- package/packages/engine/dist/types/demo/parser.d.ts +45 -0
- package/packages/engine/dist/types/demo/parser.d.ts.map +1 -0
- package/packages/engine/dist/types/demo/playback.d.ts +22 -0
- package/packages/engine/dist/types/demo/playback.d.ts.map +1 -0
- package/packages/engine/dist/types/demo/reader.d.ts +15 -0
- package/packages/engine/dist/types/demo/reader.d.ts.map +1 -0
- package/packages/game/dist/browser/index.global.js +1 -1
- package/packages/game/dist/browser/index.global.js.map +1 -1
- package/packages/game/dist/cjs/index.cjs +751 -602
- package/packages/game/dist/cjs/index.cjs.map +1 -1
- package/packages/game/dist/esm/index.js +749 -602
- package/packages/game/dist/esm/index.js.map +1 -1
- package/packages/game/dist/tsconfig.tsbuildinfo +1 -1
- package/packages/game/dist/types/ai/index.d.ts +1 -0
- package/packages/game/dist/types/ai/index.d.ts.map +1 -1
- package/packages/game/dist/types/ai/monster.d.ts +4 -0
- package/packages/game/dist/types/ai/monster.d.ts.map +1 -0
- package/packages/game/dist/types/entities/entity.d.ts +21 -0
- package/packages/game/dist/types/entities/entity.d.ts.map +1 -1
- package/packages/game/dist/types/entities/monsters/soldier.d.ts +3 -0
- package/packages/game/dist/types/entities/monsters/soldier.d.ts.map +1 -0
- package/packages/game/dist/types/entities/spawn.d.ts.map +1 -1
- package/packages/shared/dist/browser/index.global.js +1 -1
- package/packages/shared/dist/browser/index.global.js.map +1 -1
- package/packages/shared/dist/cjs/index.cjs +209 -0
- package/packages/shared/dist/cjs/index.cjs.map +1 -1
- package/packages/shared/dist/esm/index.js +205 -0
- package/packages/shared/dist/esm/index.js.map +1 -1
- package/packages/shared/dist/tsconfig.tsbuildinfo +1 -1
- package/packages/shared/dist/types/index.d.ts +1 -0
- package/packages/shared/dist/types/index.d.ts.map +1 -1
- package/packages/shared/dist/types/io/binaryStream.d.ts +31 -0
- package/packages/shared/dist/types/io/binaryStream.d.ts.map +1 -0
- package/packages/shared/dist/types/protocol/index.d.ts +2 -0
- package/packages/shared/dist/types/protocol/index.d.ts.map +1 -1
- package/packages/shared/dist/types/protocol/ops.d.ts +31 -0
- package/packages/shared/dist/types/protocol/ops.d.ts.map +1 -0
- package/packages/shared/dist/types/protocol/tempEntity.d.ts +59 -0
- package/packages/shared/dist/types/protocol/tempEntity.d.ts.map +1 -0
- package/packages/tools/dist/tsconfig.tsbuildinfo +1 -1
|
@@ -20,6 +20,7 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
|
|
|
20
20
|
// src/index.ts
|
|
21
21
|
var index_exports = {};
|
|
22
22
|
__export(index_exports, {
|
|
23
|
+
BinaryStream: () => BinaryStream,
|
|
23
24
|
CGAME_EXPORT_KEYS: () => CGAME_EXPORT_KEYS,
|
|
24
25
|
CGAME_IMPORT_KEYS: () => CGAME_IMPORT_KEYS,
|
|
25
26
|
CONTENTS_AREAPORTAL: () => CONTENTS_AREAPORTAL,
|
|
@@ -52,6 +53,7 @@ __export(index_exports, {
|
|
|
52
53
|
CONTENTS_WINDOW: () => CONTENTS_WINDOW,
|
|
53
54
|
CS_MAX_STRING_LENGTH: () => CS_MAX_STRING_LENGTH,
|
|
54
55
|
CS_MAX_STRING_LENGTH_OLD: () => CS_MAX_STRING_LENGTH_OLD,
|
|
56
|
+
ClientCommand: () => ClientCommand,
|
|
55
57
|
CollisionEntityIndex: () => CollisionEntityIndex,
|
|
56
58
|
ConfigStringIndex: () => ConfigStringIndex,
|
|
57
59
|
CvarFlags: () => CvarFlags,
|
|
@@ -122,6 +124,8 @@ __export(index_exports, {
|
|
|
122
124
|
SURF_TRANS33: () => SURF_TRANS33,
|
|
123
125
|
SURF_TRANS66: () => SURF_TRANS66,
|
|
124
126
|
SURF_WARP: () => SURF_WARP,
|
|
127
|
+
ServerCommand: () => ServerCommand,
|
|
128
|
+
TempEntity: () => TempEntity,
|
|
125
129
|
WaterLevel: () => WaterLevel,
|
|
126
130
|
YAW: () => YAW,
|
|
127
131
|
ZERO_VEC3: () => ZERO_VEC3,
|
|
@@ -3302,6 +3306,101 @@ function mouseDeltaToViewDelta(delta, options) {
|
|
|
3302
3306
|
};
|
|
3303
3307
|
}
|
|
3304
3308
|
|
|
3309
|
+
// src/protocol/ops.ts
|
|
3310
|
+
var ServerCommand = /* @__PURE__ */ ((ServerCommand2) => {
|
|
3311
|
+
ServerCommand2[ServerCommand2["bad"] = 0] = "bad";
|
|
3312
|
+
ServerCommand2[ServerCommand2["muzzleflash"] = 1] = "muzzleflash";
|
|
3313
|
+
ServerCommand2[ServerCommand2["muzzleflash2"] = 2] = "muzzleflash2";
|
|
3314
|
+
ServerCommand2[ServerCommand2["temp_entity"] = 3] = "temp_entity";
|
|
3315
|
+
ServerCommand2[ServerCommand2["layout"] = 4] = "layout";
|
|
3316
|
+
ServerCommand2[ServerCommand2["inventory"] = 5] = "inventory";
|
|
3317
|
+
ServerCommand2[ServerCommand2["nop"] = 6] = "nop";
|
|
3318
|
+
ServerCommand2[ServerCommand2["disconnect"] = 7] = "disconnect";
|
|
3319
|
+
ServerCommand2[ServerCommand2["reconnect"] = 8] = "reconnect";
|
|
3320
|
+
ServerCommand2[ServerCommand2["sound"] = 9] = "sound";
|
|
3321
|
+
ServerCommand2[ServerCommand2["print"] = 10] = "print";
|
|
3322
|
+
ServerCommand2[ServerCommand2["stufftext"] = 11] = "stufftext";
|
|
3323
|
+
ServerCommand2[ServerCommand2["serverdata"] = 12] = "serverdata";
|
|
3324
|
+
ServerCommand2[ServerCommand2["configstring"] = 13] = "configstring";
|
|
3325
|
+
ServerCommand2[ServerCommand2["spawnbaseline"] = 14] = "spawnbaseline";
|
|
3326
|
+
ServerCommand2[ServerCommand2["centerprint"] = 15] = "centerprint";
|
|
3327
|
+
ServerCommand2[ServerCommand2["download"] = 16] = "download";
|
|
3328
|
+
ServerCommand2[ServerCommand2["playerinfo"] = 17] = "playerinfo";
|
|
3329
|
+
ServerCommand2[ServerCommand2["packetentities"] = 18] = "packetentities";
|
|
3330
|
+
ServerCommand2[ServerCommand2["deltapacketentities"] = 19] = "deltapacketentities";
|
|
3331
|
+
ServerCommand2[ServerCommand2["frame"] = 20] = "frame";
|
|
3332
|
+
return ServerCommand2;
|
|
3333
|
+
})(ServerCommand || {});
|
|
3334
|
+
var ClientCommand = /* @__PURE__ */ ((ClientCommand2) => {
|
|
3335
|
+
ClientCommand2[ClientCommand2["bad"] = 0] = "bad";
|
|
3336
|
+
ClientCommand2[ClientCommand2["nop"] = 1] = "nop";
|
|
3337
|
+
ClientCommand2[ClientCommand2["move"] = 2] = "move";
|
|
3338
|
+
ClientCommand2[ClientCommand2["userinfo"] = 3] = "userinfo";
|
|
3339
|
+
ClientCommand2[ClientCommand2["stringcmd"] = 4] = "stringcmd";
|
|
3340
|
+
return ClientCommand2;
|
|
3341
|
+
})(ClientCommand || {});
|
|
3342
|
+
|
|
3343
|
+
// src/protocol/tempEntity.ts
|
|
3344
|
+
var TempEntity = /* @__PURE__ */ ((TempEntity2) => {
|
|
3345
|
+
TempEntity2[TempEntity2["GUNSHOT"] = 0] = "GUNSHOT";
|
|
3346
|
+
TempEntity2[TempEntity2["BLOOD"] = 1] = "BLOOD";
|
|
3347
|
+
TempEntity2[TempEntity2["BLASTER"] = 2] = "BLASTER";
|
|
3348
|
+
TempEntity2[TempEntity2["RAILTRAIL"] = 3] = "RAILTRAIL";
|
|
3349
|
+
TempEntity2[TempEntity2["SHOTGUN"] = 4] = "SHOTGUN";
|
|
3350
|
+
TempEntity2[TempEntity2["EXPLOSION1"] = 5] = "EXPLOSION1";
|
|
3351
|
+
TempEntity2[TempEntity2["EXPLOSION2"] = 6] = "EXPLOSION2";
|
|
3352
|
+
TempEntity2[TempEntity2["ROCKET_EXPLOSION"] = 7] = "ROCKET_EXPLOSION";
|
|
3353
|
+
TempEntity2[TempEntity2["GRENADE_EXPLOSION"] = 8] = "GRENADE_EXPLOSION";
|
|
3354
|
+
TempEntity2[TempEntity2["SPARKS"] = 9] = "SPARKS";
|
|
3355
|
+
TempEntity2[TempEntity2["SPLASH"] = 10] = "SPLASH";
|
|
3356
|
+
TempEntity2[TempEntity2["BUBBLETRAIL"] = 11] = "BUBBLETRAIL";
|
|
3357
|
+
TempEntity2[TempEntity2["SCREEN_SPARKS"] = 12] = "SCREEN_SPARKS";
|
|
3358
|
+
TempEntity2[TempEntity2["SHIELD_SPARKS"] = 13] = "SHIELD_SPARKS";
|
|
3359
|
+
TempEntity2[TempEntity2["BULLET_SPARKS"] = 14] = "BULLET_SPARKS";
|
|
3360
|
+
TempEntity2[TempEntity2["LASER_SPARKS"] = 15] = "LASER_SPARKS";
|
|
3361
|
+
TempEntity2[TempEntity2["PARASITE_ATTACK"] = 16] = "PARASITE_ATTACK";
|
|
3362
|
+
TempEntity2[TempEntity2["ROCKET_EXPLOSION_WATER"] = 17] = "ROCKET_EXPLOSION_WATER";
|
|
3363
|
+
TempEntity2[TempEntity2["GRENADE_EXPLOSION_WATER"] = 18] = "GRENADE_EXPLOSION_WATER";
|
|
3364
|
+
TempEntity2[TempEntity2["MEDIC_CABLE_ATTACK"] = 19] = "MEDIC_CABLE_ATTACK";
|
|
3365
|
+
TempEntity2[TempEntity2["BFG_EXPLOSION"] = 20] = "BFG_EXPLOSION";
|
|
3366
|
+
TempEntity2[TempEntity2["BFG_BIGEXPLOSION"] = 21] = "BFG_BIGEXPLOSION";
|
|
3367
|
+
TempEntity2[TempEntity2["BOSSTPORT"] = 22] = "BOSSTPORT";
|
|
3368
|
+
TempEntity2[TempEntity2["BFG_LASER"] = 23] = "BFG_LASER";
|
|
3369
|
+
TempEntity2[TempEntity2["GRAPPLE_CABLE"] = 24] = "GRAPPLE_CABLE";
|
|
3370
|
+
TempEntity2[TempEntity2["WELDING_SPARKS"] = 25] = "WELDING_SPARKS";
|
|
3371
|
+
TempEntity2[TempEntity2["GREENBLOOD"] = 26] = "GREENBLOOD";
|
|
3372
|
+
TempEntity2[TempEntity2["BLUEHYPERBLASTER"] = 27] = "BLUEHYPERBLASTER";
|
|
3373
|
+
TempEntity2[TempEntity2["PLASMA_EXPLOSION"] = 28] = "PLASMA_EXPLOSION";
|
|
3374
|
+
TempEntity2[TempEntity2["TUNNEL_SPARKS"] = 29] = "TUNNEL_SPARKS";
|
|
3375
|
+
TempEntity2[TempEntity2["BLASTER2"] = 30] = "BLASTER2";
|
|
3376
|
+
TempEntity2[TempEntity2["RAILTRAIL2"] = 31] = "RAILTRAIL2";
|
|
3377
|
+
TempEntity2[TempEntity2["FLAME"] = 32] = "FLAME";
|
|
3378
|
+
TempEntity2[TempEntity2["LIGHTNING"] = 33] = "LIGHTNING";
|
|
3379
|
+
TempEntity2[TempEntity2["DEBUGTRAIL"] = 34] = "DEBUGTRAIL";
|
|
3380
|
+
TempEntity2[TempEntity2["PLAIN_EXPLOSION"] = 35] = "PLAIN_EXPLOSION";
|
|
3381
|
+
TempEntity2[TempEntity2["FLASHLIGHT"] = 36] = "FLASHLIGHT";
|
|
3382
|
+
TempEntity2[TempEntity2["FORCEWALL"] = 37] = "FORCEWALL";
|
|
3383
|
+
TempEntity2[TempEntity2["HEATBEAM"] = 38] = "HEATBEAM";
|
|
3384
|
+
TempEntity2[TempEntity2["MONSTER_HEATBEAM"] = 39] = "MONSTER_HEATBEAM";
|
|
3385
|
+
TempEntity2[TempEntity2["STEAM"] = 40] = "STEAM";
|
|
3386
|
+
TempEntity2[TempEntity2["BUBBLETRAIL2"] = 41] = "BUBBLETRAIL2";
|
|
3387
|
+
TempEntity2[TempEntity2["MOREBLOOD"] = 42] = "MOREBLOOD";
|
|
3388
|
+
TempEntity2[TempEntity2["HEATBEAM_SPARKS"] = 43] = "HEATBEAM_SPARKS";
|
|
3389
|
+
TempEntity2[TempEntity2["HEATBEAM_STEAM"] = 44] = "HEATBEAM_STEAM";
|
|
3390
|
+
TempEntity2[TempEntity2["CHAINFIST_SMOKE"] = 45] = "CHAINFIST_SMOKE";
|
|
3391
|
+
TempEntity2[TempEntity2["ELECTRIC_SPARKS"] = 46] = "ELECTRIC_SPARKS";
|
|
3392
|
+
TempEntity2[TempEntity2["TRACKER_EXPLOSION"] = 47] = "TRACKER_EXPLOSION";
|
|
3393
|
+
TempEntity2[TempEntity2["TELEPORT_EFFECT"] = 48] = "TELEPORT_EFFECT";
|
|
3394
|
+
TempEntity2[TempEntity2["DBALL_GOAL"] = 49] = "DBALL_GOAL";
|
|
3395
|
+
TempEntity2[TempEntity2["WIDOWBEAMOUT"] = 50] = "WIDOWBEAMOUT";
|
|
3396
|
+
TempEntity2[TempEntity2["NUKEBLAST"] = 51] = "NUKEBLAST";
|
|
3397
|
+
TempEntity2[TempEntity2["WIDOWSPLASH"] = 52] = "WIDOWSPLASH";
|
|
3398
|
+
TempEntity2[TempEntity2["EXPLOSION1_BIG"] = 53] = "EXPLOSION1_BIG";
|
|
3399
|
+
TempEntity2[TempEntity2["EXPLOSION1_NP"] = 54] = "EXPLOSION1_NP";
|
|
3400
|
+
TempEntity2[TempEntity2["FLECHETTE"] = 55] = "FLECHETTE";
|
|
3401
|
+
return TempEntity2;
|
|
3402
|
+
})(TempEntity || {});
|
|
3403
|
+
|
|
3305
3404
|
// src/pmove/apply.ts
|
|
3306
3405
|
var FRAMETIME = 0.025;
|
|
3307
3406
|
var categorizePosition2 = (state, trace) => {
|
|
@@ -3367,8 +3466,115 @@ var applyPmove = (state, cmd, trace, pointContents2) => {
|
|
|
3367
3466
|
velocity: finalVelocity
|
|
3368
3467
|
};
|
|
3369
3468
|
};
|
|
3469
|
+
|
|
3470
|
+
// src/io/binaryStream.ts
|
|
3471
|
+
var BinaryStream = class {
|
|
3472
|
+
constructor(buffer) {
|
|
3473
|
+
if (buffer instanceof Uint8Array) {
|
|
3474
|
+
this.view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);
|
|
3475
|
+
} else {
|
|
3476
|
+
this.view = new DataView(buffer);
|
|
3477
|
+
}
|
|
3478
|
+
this.offset = 0;
|
|
3479
|
+
this.length = this.view.byteLength;
|
|
3480
|
+
}
|
|
3481
|
+
getPosition() {
|
|
3482
|
+
return this.offset;
|
|
3483
|
+
}
|
|
3484
|
+
seek(position) {
|
|
3485
|
+
if (position < 0 || position > this.length) {
|
|
3486
|
+
throw new Error(`Seek out of bounds: ${position} (length: ${this.length})`);
|
|
3487
|
+
}
|
|
3488
|
+
this.offset = position;
|
|
3489
|
+
}
|
|
3490
|
+
hasMore() {
|
|
3491
|
+
return this.offset < this.length;
|
|
3492
|
+
}
|
|
3493
|
+
readChar() {
|
|
3494
|
+
const value = this.view.getInt8(this.offset);
|
|
3495
|
+
this.offset += 1;
|
|
3496
|
+
return value;
|
|
3497
|
+
}
|
|
3498
|
+
readByte() {
|
|
3499
|
+
const value = this.view.getUint8(this.offset);
|
|
3500
|
+
this.offset += 1;
|
|
3501
|
+
return value;
|
|
3502
|
+
}
|
|
3503
|
+
readShort() {
|
|
3504
|
+
const value = this.view.getInt16(this.offset, true);
|
|
3505
|
+
this.offset += 2;
|
|
3506
|
+
return value;
|
|
3507
|
+
}
|
|
3508
|
+
readLong() {
|
|
3509
|
+
const value = this.view.getInt32(this.offset, true);
|
|
3510
|
+
this.offset += 4;
|
|
3511
|
+
return value;
|
|
3512
|
+
}
|
|
3513
|
+
readFloat() {
|
|
3514
|
+
const value = this.view.getFloat32(this.offset, true);
|
|
3515
|
+
this.offset += 4;
|
|
3516
|
+
return value;
|
|
3517
|
+
}
|
|
3518
|
+
readString() {
|
|
3519
|
+
let str = "";
|
|
3520
|
+
while (this.offset < this.length) {
|
|
3521
|
+
const charCode = this.readChar();
|
|
3522
|
+
if (charCode === -1 || charCode === 0) {
|
|
3523
|
+
break;
|
|
3524
|
+
}
|
|
3525
|
+
str += String.fromCharCode(charCode);
|
|
3526
|
+
}
|
|
3527
|
+
return str;
|
|
3528
|
+
}
|
|
3529
|
+
readStringLine() {
|
|
3530
|
+
let str = "";
|
|
3531
|
+
while (this.offset < this.length) {
|
|
3532
|
+
const charCode = this.readChar();
|
|
3533
|
+
if (charCode === -1 || charCode === 0 || charCode === 10) {
|
|
3534
|
+
break;
|
|
3535
|
+
}
|
|
3536
|
+
str += String.fromCharCode(charCode);
|
|
3537
|
+
}
|
|
3538
|
+
return str;
|
|
3539
|
+
}
|
|
3540
|
+
readCoord() {
|
|
3541
|
+
return this.readShort() * (1 / 8);
|
|
3542
|
+
}
|
|
3543
|
+
readAngle() {
|
|
3544
|
+
return this.readChar() * (360 / 256);
|
|
3545
|
+
}
|
|
3546
|
+
readAngle16() {
|
|
3547
|
+
return this.readShort() * 360 / 65536;
|
|
3548
|
+
}
|
|
3549
|
+
readData(length) {
|
|
3550
|
+
if (this.offset + length > this.length) {
|
|
3551
|
+
throw new Error(`Read out of bounds: ${this.offset + length} (length: ${this.length})`);
|
|
3552
|
+
}
|
|
3553
|
+
const data = new Uint8Array(this.view.buffer, this.view.byteOffset + this.offset, length);
|
|
3554
|
+
this.offset += length;
|
|
3555
|
+
return new Uint8Array(data);
|
|
3556
|
+
}
|
|
3557
|
+
readPos(out) {
|
|
3558
|
+
out.x = this.readCoord();
|
|
3559
|
+
out.y = this.readCoord();
|
|
3560
|
+
out.z = this.readCoord();
|
|
3561
|
+
}
|
|
3562
|
+
readDir(out) {
|
|
3563
|
+
const b = this.readByte();
|
|
3564
|
+
if (b >= 162) {
|
|
3565
|
+
out.x = 0;
|
|
3566
|
+
out.y = 0;
|
|
3567
|
+
out.z = 0;
|
|
3568
|
+
return;
|
|
3569
|
+
}
|
|
3570
|
+
out.x = 0;
|
|
3571
|
+
out.y = 0;
|
|
3572
|
+
out.z = 0;
|
|
3573
|
+
}
|
|
3574
|
+
};
|
|
3370
3575
|
// Annotate the CommonJS export names for ESM import in node:
|
|
3371
3576
|
0 && (module.exports = {
|
|
3577
|
+
BinaryStream,
|
|
3372
3578
|
CGAME_EXPORT_KEYS,
|
|
3373
3579
|
CGAME_IMPORT_KEYS,
|
|
3374
3580
|
CONTENTS_AREAPORTAL,
|
|
@@ -3401,6 +3607,7 @@ var applyPmove = (state, cmd, trace, pointContents2) => {
|
|
|
3401
3607
|
CONTENTS_WINDOW,
|
|
3402
3608
|
CS_MAX_STRING_LENGTH,
|
|
3403
3609
|
CS_MAX_STRING_LENGTH_OLD,
|
|
3610
|
+
ClientCommand,
|
|
3404
3611
|
CollisionEntityIndex,
|
|
3405
3612
|
ConfigStringIndex,
|
|
3406
3613
|
CvarFlags,
|
|
@@ -3471,6 +3678,8 @@ var applyPmove = (state, cmd, trace, pointContents2) => {
|
|
|
3471
3678
|
SURF_TRANS33,
|
|
3472
3679
|
SURF_TRANS66,
|
|
3473
3680
|
SURF_WARP,
|
|
3681
|
+
ServerCommand,
|
|
3682
|
+
TempEntity,
|
|
3474
3683
|
WaterLevel,
|
|
3475
3684
|
YAW,
|
|
3476
3685
|
ZERO_VEC3,
|