quake2ts 0.0.281 → 0.0.283

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 (33) hide show
  1. package/package.json +1 -1
  2. package/packages/client/dist/browser/index.global.js +13 -13
  3. package/packages/client/dist/browser/index.global.js.map +1 -1
  4. package/packages/client/dist/cjs/index.cjs +46 -10
  5. package/packages/client/dist/cjs/index.cjs.map +1 -1
  6. package/packages/client/dist/esm/index.js +45 -10
  7. package/packages/client/dist/esm/index.js.map +1 -1
  8. package/packages/client/dist/tsconfig.tsbuildinfo +1 -1
  9. package/packages/client/dist/types/index.d.ts +10 -0
  10. package/packages/client/dist/types/index.d.ts.map +1 -1
  11. package/packages/engine/dist/browser/index.global.js +1 -1
  12. package/packages/engine/dist/browser/index.global.js.map +1 -1
  13. package/packages/engine/dist/cjs/index.cjs +3 -0
  14. package/packages/engine/dist/cjs/index.cjs.map +1 -1
  15. package/packages/engine/dist/esm/index.js +3 -0
  16. package/packages/engine/dist/esm/index.js.map +1 -1
  17. package/packages/engine/dist/tsconfig.tsbuildinfo +1 -1
  18. package/packages/engine/dist/types/demo/playback.d.ts +1 -0
  19. package/packages/engine/dist/types/demo/playback.d.ts.map +1 -1
  20. package/packages/game/dist/browser/index.global.js +3 -3
  21. package/packages/game/dist/browser/index.global.js.map +1 -1
  22. package/packages/game/dist/cjs/index.cjs +427 -0
  23. package/packages/game/dist/cjs/index.cjs.map +1 -1
  24. package/packages/game/dist/esm/index.js +427 -0
  25. package/packages/game/dist/esm/index.js.map +1 -1
  26. package/packages/game/dist/tsconfig.tsbuildinfo +1 -1
  27. package/packages/game/dist/types/entities/index.d.ts +1 -1
  28. package/packages/game/dist/types/entities/index.d.ts.map +1 -1
  29. package/packages/game/dist/types/entities/monsters/arachnid.d.ts +5 -0
  30. package/packages/game/dist/types/entities/monsters/arachnid.d.ts.map +1 -0
  31. package/packages/game/dist/types/entities/monsters/common.d.ts +8 -1
  32. package/packages/game/dist/types/entities/monsters/common.d.ts.map +1 -1
  33. package/packages/game/dist/types/entities/monsters/index.d.ts.map +1 -1
@@ -7972,13 +7972,6 @@ var NetworkMessageParser = class _NetworkMessageParser {
7972
7972
  if (bitsHigh & U_OLD_FRAME_HIGH) to.oldFrame = this.stream.readShort();
7973
7973
  }
7974
7974
  };
7975
- var PlaybackState = /* @__PURE__ */ ((PlaybackState2) => {
7976
- PlaybackState2[PlaybackState2["Stopped"] = 0] = "Stopped";
7977
- PlaybackState2[PlaybackState2["Playing"] = 1] = "Playing";
7978
- PlaybackState2[PlaybackState2["Paused"] = 2] = "Paused";
7979
- PlaybackState2[PlaybackState2["Finished"] = 3] = "Finished";
7980
- return PlaybackState2;
7981
- })(PlaybackState || {});
7982
7975
  var DemoPlaybackController = class {
7983
7976
  // ms (10Hz default)
7984
7977
  constructor() {
@@ -8044,6 +8037,9 @@ var DemoPlaybackController = class {
8044
8037
  getState() {
8045
8038
  return this.state;
8046
8039
  }
8040
+ getCurrentTime() {
8041
+ return this.accumulatedTime;
8042
+ }
8047
8043
  };
8048
8044
 
8049
8045
  // ../shared/dist/esm/index.js
@@ -11664,6 +11660,12 @@ import {
11664
11660
  } from "@quake2ts/cgame";
11665
11661
  import { ViewEffects as ViewEffects3 } from "@quake2ts/cgame";
11666
11662
  var ZERO_VEC32 = { x: 0, y: 0, z: 0 };
11663
+ var ClientMode = /* @__PURE__ */ ((ClientMode2) => {
11664
+ ClientMode2[ClientMode2["Normal"] = 0] = "Normal";
11665
+ ClientMode2[ClientMode2["DemoPlayback"] = 1] = "DemoPlayback";
11666
+ ClientMode2[ClientMode2["Multiplayer"] = 2] = "Multiplayer";
11667
+ return ClientMode2;
11668
+ })(ClientMode || {});
11667
11669
  function createClient(imports) {
11668
11670
  const pointContents = (point) => {
11669
11671
  const zero3 = { x: 0, y: 0, z: 0 };
@@ -11675,6 +11677,9 @@ function createClient(imports) {
11675
11677
  const demoPlayback = new DemoPlaybackController();
11676
11678
  const demoHandler = new ClientNetworkHandler(imports);
11677
11679
  demoHandler.setView(view);
11680
+ let isDemoPlaying = false;
11681
+ let currentDemoName = null;
11682
+ let clientMode = 0 /* Normal */;
11678
11683
  const menuSystem = new MenuSystem();
11679
11684
  const loadingScreen = new LoadingScreen();
11680
11685
  const errorDialog = new ErrorDialog();
@@ -11684,6 +11689,7 @@ function createClient(imports) {
11684
11689
  let optionsFactory;
11685
11690
  const configStrings = new ClientConfigStrings();
11686
11691
  let latestFrame;
11692
+ let lastRenderTime = 0;
11687
11693
  let clientInAutoDemo = false;
11688
11694
  const stateProvider = {
11689
11695
  get tickRate() {
@@ -11934,11 +11940,15 @@ function createClient(imports) {
11934
11940
  return { menuSystem, factory };
11935
11941
  },
11936
11942
  render(sample) {
11937
- const playbackState = demoPlayback.getState();
11938
11943
  let renderEntities = [];
11939
- if (playbackState === PlaybackState.Playing) {
11940
- lastRendered = demoHandler.getPredictionState();
11944
+ if (isDemoPlaying) {
11945
+ const now = sample.nowMs;
11946
+ const dt = lastRenderTime > 0 ? Math.max(0, now - lastRenderTime) : 0;
11947
+ lastRenderTime = now;
11948
+ demoPlayback.update(dt);
11949
+ lastRendered = demoHandler.getPredictionState(demoPlayback.getCurrentTime());
11941
11950
  } else {
11951
+ lastRenderTime = sample.nowMs;
11942
11952
  if (sample.latest?.state) {
11943
11953
  prediction.setAuthoritative(sample.latest);
11944
11954
  latestFrame = sample.latest;
@@ -12116,6 +12126,30 @@ function createClient(imports) {
12116
12126
  return camera;
12117
12127
  },
12118
12128
  demoPlayback,
12129
+ get isDemoPlaying() {
12130
+ return isDemoPlaying;
12131
+ },
12132
+ get currentDemoName() {
12133
+ return currentDemoName;
12134
+ },
12135
+ get mode() {
12136
+ return clientMode;
12137
+ },
12138
+ startDemoPlayback(buffer, filename) {
12139
+ demoPlayback.loadDemo(buffer);
12140
+ demoPlayback.setHandler(demoHandler);
12141
+ isDemoPlaying = true;
12142
+ currentDemoName = filename;
12143
+ clientMode = 1 /* DemoPlayback */;
12144
+ lastRenderTime = 0;
12145
+ configStrings.clear();
12146
+ },
12147
+ stopDemoPlayback() {
12148
+ demoPlayback.stop();
12149
+ isDemoPlaying = false;
12150
+ currentDemoName = null;
12151
+ clientMode = 0 /* Normal */;
12152
+ },
12119
12153
  ParseCenterPrint(msg) {
12120
12154
  cg.ParseCenterPrint(msg, 0, false);
12121
12155
  },
@@ -12137,6 +12171,7 @@ function createClient(imports) {
12137
12171
  }
12138
12172
  export {
12139
12173
  ClientConfigStrings,
12174
+ ClientMode,
12140
12175
  ClientPrediction2 as ClientPrediction,
12141
12176
  InputAction,
12142
12177
  InputBindings,