@pkmn/engine 0.1.0-dev.6ebbd3bc → 0.1.0-dev.724afcb1

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 (58) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +18 -11
  3. package/build/pkg/addon/browser.js +4 -1
  4. package/build/pkg/addon/browser.js.map +1 -1
  5. package/build/pkg/addon/node.js +20 -7
  6. package/build/pkg/addon/node.js.map +1 -1
  7. package/build/pkg/addon/wasm.js.map +1 -1
  8. package/build/pkg/addon.d.ts +5 -5
  9. package/build/pkg/addon.js.map +1 -1
  10. package/build/pkg/data.js.map +1 -1
  11. package/build/pkg/gen1.d.ts +2 -1
  12. package/build/pkg/gen1.js +22 -9
  13. package/build/pkg/gen1.js.map +1 -1
  14. package/build/pkg/index.d.ts +2 -0
  15. package/build/pkg/index.js +17 -7
  16. package/build/pkg/index.js.map +1 -1
  17. package/build/pkg/protocol.d.ts +11 -2
  18. package/build/pkg/protocol.js.map +1 -1
  19. package/build/tools/debug.js +54 -10
  20. package/build/tools/debug.js.map +1 -1
  21. package/build/tools/display/debug.jsx +19 -94
  22. package/build/tools/display/debug.jsx.map +1 -1
  23. package/build/tools/display/index.js +17 -7
  24. package/build/tools/display/index.js.map +1 -1
  25. package/build/tools/display/ui.jsx +20 -9
  26. package/build/tools/display/ui.jsx.map +1 -1
  27. package/build/tools/display/util.js +140 -1
  28. package/build/tools/display/util.js.map +1 -1
  29. package/build.zig +169 -218
  30. package/package.json +26 -24
  31. package/src/bin/install-pkmn-engine +23 -7
  32. package/src/lib/bindings/c.zig +27 -81
  33. package/src/lib/bindings/node.zig +7 -11
  34. package/src/lib/bindings/wasm.zig +6 -15
  35. package/src/lib/common/array.zig +5 -12
  36. package/src/lib/common/debug.zig +33 -59
  37. package/src/lib/common/js.zig +3 -9
  38. package/src/lib/common/optional.zig +11 -21
  39. package/src/lib/common/protocol.zig +224 -189
  40. package/src/lib/common/rational.zig +275 -284
  41. package/src/lib/common/util.zig +14 -31
  42. package/src/lib/gen1/calc.zig +139 -117
  43. package/src/lib/gen1/chance.zig +112 -75
  44. package/src/lib/gen1/data/types.zig +2 -2
  45. package/src/lib/gen1/data.zig +5 -5
  46. package/src/lib/gen1/helpers.zig +8 -10
  47. package/src/lib/gen1/mechanics.zig +43 -41
  48. package/src/lib/gen2/calc.zig +3 -6
  49. package/src/lib/gen2/chance.zig +12 -18
  50. package/src/lib/gen2/data/types.zig +6 -3
  51. package/src/lib/gen2/data.zig +8 -7
  52. package/src/lib/gen2/helpers.zig +4 -6
  53. package/src/lib/gen2/mechanics.zig +18 -18
  54. package/src/lib/napi.h +2 -0
  55. package/src/lib/node.zig +1 -5
  56. package/src/lib/pkmn.zig +91 -17
  57. package/src/lib/wasm.zig +2 -6
  58. package/src/tools/display/dom.ts +43 -31
@@ -1,6 +1,64 @@
1
1
  "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
2
35
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.pretty = exports.toText = void 0;
36
+ exports.parse = exports.imports = exports.pretty = exports.toText = void 0;
37
+ const pkg_1 = require("../../pkg");
38
+ const data_1 = require("../../pkg/data");
39
+ const gen1 = __importStar(require("../../pkg/gen1"));
40
+ class SpeciesNames {
41
+ gen;
42
+ battle;
43
+ constructor(gen, battle) {
44
+ this.gen = gen;
45
+ this.battle = battle;
46
+ }
47
+ get p1() {
48
+ const [p1] = Array.from(this.battle.sides);
49
+ const team = Array.from(p1.pokemon)
50
+ .sort((a, b) => a.position - b.position)
51
+ .map(p => ({ species: p.stored.species }));
52
+ return new pkg_1.SideInfo(this.gen, { name: 'Player 1', team });
53
+ }
54
+ get p2() {
55
+ const [, p2] = Array.from(this.battle.sides);
56
+ const team = Array.from(p2.pokemon)
57
+ .sort((a, b) => a.position - b.position)
58
+ .map(p => ({ species: p.stored.species }));
59
+ return new pkg_1.SideInfo(this.gen, { name: 'Player 2', team });
60
+ }
61
+ }
4
62
  const format = (kwVal) => typeof kwVal === 'boolean' ? '' : ` ${kwVal}`;
5
63
  const trim = (args) => {
6
64
  while (args.length && !args[args.length - 1])
@@ -9,10 +67,91 @@ const trim = (args) => {
9
67
  };
10
68
  const compact = (line) => [...trim(line.args.slice(0)), ...Object.keys(line.kwArgs)
11
69
  .map(k => `[${k}]${format(line.kwArgs[k])}`)].join('|');
70
+ const windowed = (data, byteOffset, byteLength) => {
71
+ const length = byteLength ? byteLength - byteOffset : undefined;
72
+ return new DataView(data.buffer, data.byteOffset + byteOffset, length);
73
+ };
12
74
  const toText = (parsed) => parsed.length ? `|${parsed.map(compact).join('\n|')}` : '';
13
75
  exports.toText = toText;
14
76
  const pretty = (choice) => choice
15
77
  ? choice.type === 'pass' ? choice.type : `${choice.type} ${choice.data}`
16
78
  : '???';
17
79
  exports.pretty = pretty;
80
+ const imports = (memory, decoder) => ({
81
+ js: {
82
+ log(ptr, len) {
83
+ if (len === 0)
84
+ return console.log('');
85
+ const msg = decoder.decode(new Uint8Array(memory[0].buffer, ptr, len));
86
+ console.log(msg);
87
+ },
88
+ panic(ptr, len) {
89
+ const msg = decoder.decode(new Uint8Array(memory[0].buffer, ptr, len));
90
+ throw new Error('panic: ' + msg);
91
+ },
92
+ },
93
+ });
94
+ exports.imports = imports;
95
+ const parse = (gen, data, frame) => {
96
+ let offset = 0;
97
+ const showdown = !!data.getUint8(offset);
98
+ offset += 2;
99
+ const N = data.getInt16(offset, data_1.LE);
100
+ offset += 2;
101
+ const X = data.getInt32(offset, data_1.LE);
102
+ offset += 4;
103
+ const lookup = pkg_1.Lookup.get(gen);
104
+ const size = data_1.LAYOUT[gen.num - 1].sizes.Battle;
105
+ const deserialize = (d) => {
106
+ switch (gen.num) {
107
+ case 1: return new gen1.Battle(lookup, d, { inert: true, showdown });
108
+ default: throw new Error(`Unsupported gen: ${gen.num}`);
109
+ }
110
+ };
111
+ const battle = deserialize(windowed(data, offset, offset += size));
112
+ const names = new SpeciesNames(gen, battle);
113
+ const log = new pkg_1.Log(gen, lookup, names);
114
+ let partial = undefined;
115
+ let last = battle;
116
+ const frames = [];
117
+ while (offset < data.byteLength) {
118
+ partial = { parsed: [] };
119
+ if (N !== 0) {
120
+ const it = log.parse(windowed(data, offset))[Symbol.iterator]();
121
+ let r = it.next();
122
+ while (!r.done) {
123
+ partial.parsed.push(r.value);
124
+ r = it.next();
125
+ }
126
+ offset += N > 0 ? N : r.value;
127
+ if (offset >= data.byteLength)
128
+ break;
129
+ }
130
+ if (X < 0) {
131
+ while (offset < data.byteLength && data.getUint8(offset++))
132
+ ;
133
+ }
134
+ else {
135
+ offset += X;
136
+ }
137
+ if (offset >= data.byteLength)
138
+ break;
139
+ partial.battle = deserialize(windowed(data, offset, offset += size));
140
+ if (offset >= data.byteLength)
141
+ break;
142
+ partial.result = pkg_1.Result.decode(data.getUint8(offset++));
143
+ if (offset >= data.byteLength)
144
+ break;
145
+ partial.c1 = pkg_1.Choice.decode(data.getUint8(offset++));
146
+ if (offset >= data.byteLength)
147
+ break;
148
+ partial.c2 = pkg_1.Choice.decode(data.getUint8(offset++));
149
+ frames.push(frame(partial, gen, showdown, last));
150
+ last = partial.battle;
151
+ partial = undefined;
152
+ }
153
+ frames.push(frame(partial || {}, gen, showdown, last));
154
+ return frames;
155
+ };
156
+ exports.parse = parse;
18
157
  //# sourceMappingURL=util.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"util.js","sourceRoot":"","sources":["../../../src/tools/display/util.ts"],"names":[],"mappings":";;;AA2BA,MAAM,MAAM,GAAG,CAAC,KAAU,EAAE,EAAE,CAAC,OAAO,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAe,EAAE,CAAC;AACvF,MAAM,IAAI,GAAG,CAAC,IAAc,EAAE,EAAE;IAC9B,OAAO,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;QAAE,IAAI,CAAC,GAAG,EAAE,CAAC;IACzD,OAAO,IAAI,CAAC;AACd,CAAC,CAAC;AAEF,MAAM,OAAO,GAAG,CAAC,IAAgB,EAAE,EAAE,CACnC,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAa,CAAC,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;SAClE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,MAAM,CAAE,IAAI,CAAC,MAAc,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAE9D,MAAM,MAAM,GAAG,CAAC,MAAoB,EAAE,EAAE,CAC7C,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;AADhD,QAAA,MAAM,UAC0C;AAEtD,MAAM,MAAM,GAAG,CAAC,MAAe,EAAE,EAAE,CAAC,MAAM;IAC/C,CAAC,CAAC,MAAM,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC,IAAI,EAAE;IACxE,CAAC,CAAC,KAAK,CAAC;AAFG,QAAA,MAAM,UAET"}
1
+ {"version":3,"file":"util.js","sourceRoot":"","sources":["../../../src/tools/display/util.ts"],"names":[],"mappings":"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"}