pw-js-world 0.2.1-dev.52af3cb → 0.3.0

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/cm/Block.d.ts ADDED
@@ -0,0 +1,196 @@
1
+ import type { BlockArg, Point, SendableBlockPacket } from "./types/index.js";
2
+ import BufferReader, { ComponentTypeHeader } from "./BufferReader.js";
3
+ import { LayerType } from "./Constants.js";
4
+ import { type BlockKeys } from "pw-js-api";
5
+ export default class Block {
6
+ bId: number;
7
+ args: BlockArg[];
8
+ constructor(bId: number | BlockKeys | string, args?: BlockArg[]);
9
+ /**
10
+ * I mean... Just use .args.length !== 0 to see if it has args.
11
+ *
12
+ * But anyway, this will return true if there is at least one args, otherwise false.
13
+ */
14
+ hasArgs(): boolean;
15
+ /**
16
+ * For helper.
17
+ *
18
+ * This is in Block class for organisation.
19
+ *
20
+ * This will deserialise by using the reader to get the block ID then retrieve the args, if applicable.
21
+ */
22
+ static deserialize(reader: BufferReader): Block;
23
+ protected deserializeArgs(reader: BufferReader, flag?: boolean): this;
24
+ /**
25
+ * For helper.
26
+ *
27
+ * This is in Block class for organisation.
28
+ */
29
+ static deserializeArgs(reader: BufferReader): BlockArg[];
30
+ /**
31
+ * Serializes the block into a buffer. This is used to convert
32
+ * the block into a binary format that can be sent over the game
33
+ * server. As this is static, block id and args are required.
34
+ *
35
+ * - Little Endian
36
+ * - With Id
37
+ * - Type Byte omitted
38
+ */
39
+ static serializeArgs(bId: number, args: BlockArg[]): Buffer;
40
+ /**
41
+ * Serializes the block into a buffer. This is used to convert
42
+ * the block into a binary format that can be sent over the game
43
+ * server. As this is static, block id and args are required.
44
+ *
45
+ * - Big Endian
46
+ * - No Id
47
+ * - Type Byte included
48
+ */
49
+ static serializeArgs(bId: number, args: BlockArg[], options: {
50
+ endian: "big";
51
+ writeId: false;
52
+ readTypeByte: true;
53
+ }): Buffer;
54
+ static serializeArgs(bId: number, args: BlockArg[], options: {
55
+ endian: "little";
56
+ writeId: false;
57
+ readTypeByte: true;
58
+ }): Buffer;
59
+ /**
60
+ *
61
+ * @param pos List of points (X and Y)
62
+ */
63
+ toPacket(pos: Point[], layer: LayerType): SendableBlockPacket;
64
+ toPacket(x: number, y: number, layer: LayerType): SendableBlockPacket;
65
+ /**
66
+ * This will return the block name in UPPER_CASE form.
67
+ *
68
+ * For eg EFFECTS_INVULNERABILITY.
69
+ *
70
+ * @throws {MissingBlockError}
71
+ * If the ID of this block is not known.
72
+ */
73
+ get name(): string;
74
+ /**
75
+ * Returns a copy of the block.
76
+ */
77
+ clone(obj?: false): Block;
78
+ clone(obj: true): {
79
+ bId: number;
80
+ args: BlockArg[];
81
+ name: string;
82
+ };
83
+ /**
84
+ * This can be convenient as it will always return the ID if it exists, and it will throw an error if it doesn't
85
+ *
86
+ * This expects the name sent to be in full upper capital form though.
87
+ *
88
+ * @throws {MissingBlockError}
89
+ * If the connection is unknown, this can be because you're trying to use this function when Api#getListBlocks has never been invoked, or the object is missing.
90
+ */
91
+ static getIdByName(paletteId: string): number;
92
+ }
93
+ /**
94
+ * This mapping contains definitions of block data which require additional
95
+ * arguments to be sent or received with.
96
+ */
97
+ export declare const BlockArgsHeadings: {
98
+ readonly COIN_GOLD_DOOR: readonly [ComponentTypeHeader.Int32];
99
+ readonly COIN_BLUE_DOOR: readonly [ComponentTypeHeader.Int32];
100
+ readonly COIN_GOLD_GATE: readonly [ComponentTypeHeader.Int32];
101
+ readonly COIN_BLUE_GATE: readonly [ComponentTypeHeader.Int32];
102
+ readonly EFFECTS_JUMP_HEIGHT: readonly [ComponentTypeHeader.Int32];
103
+ readonly EFFECTS_FLY: readonly [ComponentTypeHeader.Boolean];
104
+ readonly EFFECTS_SPEED: readonly [ComponentTypeHeader.Int32];
105
+ readonly EFFECTS_INVULNERABILITY: readonly [ComponentTypeHeader.Boolean];
106
+ readonly EFFECTS_CURSE: readonly [ComponentTypeHeader.Int32];
107
+ readonly EFFECTS_ZOMBIE: readonly [ComponentTypeHeader.Int32];
108
+ readonly EFFECTS_GRAVITYFORCE: readonly [ComponentTypeHeader.Int32];
109
+ readonly EFFECTS_MULTI_JUMP: readonly [ComponentTypeHeader.Int32];
110
+ readonly TOOL_PORTAL_WORLD_SPAWN: readonly [ComponentTypeHeader.Int32];
111
+ readonly SIGN_NORMAL: readonly [ComponentTypeHeader.String];
112
+ readonly SIGN_RED: readonly [ComponentTypeHeader.String];
113
+ readonly SIGN_GREEN: readonly [ComponentTypeHeader.String];
114
+ readonly SIGN_BLUE: readonly [ComponentTypeHeader.String];
115
+ readonly SIGN_GOLD: readonly [ComponentTypeHeader.String];
116
+ readonly PORTAL: readonly [ComponentTypeHeader.Int32, ComponentTypeHeader.Int32, ComponentTypeHeader.Int32];
117
+ readonly PORTAL_INVISIBLE: readonly [ComponentTypeHeader.Int32, ComponentTypeHeader.Int32, ComponentTypeHeader.Int32];
118
+ readonly PORTAL_WORLD: readonly [ComponentTypeHeader.String, ComponentTypeHeader.Int32];
119
+ readonly SWITCH_LOCAL_TOGGLE: readonly [ComponentTypeHeader.Int32];
120
+ readonly SWITCH_LOCAL_ACTIVATOR: readonly [ComponentTypeHeader.Int32, ComponentTypeHeader.Byte];
121
+ readonly SWITCH_LOCAL_RESETTER: readonly [ComponentTypeHeader.Byte];
122
+ readonly SWITCH_LOCAL_DOOR: readonly [ComponentTypeHeader.Int32];
123
+ readonly SWITCH_LOCAL_GATE: readonly [ComponentTypeHeader.Int32];
124
+ readonly SWITCH_GLOBAL_TOGGLE: readonly [ComponentTypeHeader.Int32];
125
+ readonly SWITCH_GLOBAL_ACTIVATOR: readonly [ComponentTypeHeader.Int32, ComponentTypeHeader.Byte];
126
+ readonly SWITCH_GLOBAL_RESETTER: readonly [ComponentTypeHeader.Byte];
127
+ readonly SWITCH_GLOBAL_DOOR: readonly [ComponentTypeHeader.Int32];
128
+ readonly SWITCH_GLOBAL_GATE: readonly [ComponentTypeHeader.Int32];
129
+ readonly HAZARD_DEATH_DOOR: readonly [ComponentTypeHeader.Int32];
130
+ readonly HAZARD_DEATH_GATE: readonly [ComponentTypeHeader.Int32];
131
+ readonly NOTE_DRUM: readonly [ComponentTypeHeader.ByteArray];
132
+ readonly NOTE_PIANO: readonly [ComponentTypeHeader.ByteArray];
133
+ readonly NOTE_GUITAR: readonly [ComponentTypeHeader.ByteArray];
134
+ readonly CUSTOM_SOLID_BG: readonly [ComponentTypeHeader.UInt32];
135
+ readonly CUSTOM_CHECKER_BG: readonly [ComponentTypeHeader.UInt32];
136
+ readonly COUNTER_WHITE_CONSUMABLE: readonly [ComponentTypeHeader.Int32];
137
+ readonly COUNTER_WHITE_CONSUMABLE_SET: readonly [ComponentTypeHeader.Int32];
138
+ readonly COUNTER_WHITE_REUSABLE: readonly [ComponentTypeHeader.Int32];
139
+ readonly COUNTER_WHITE_REUSABLE_SET: readonly [ComponentTypeHeader.Int32];
140
+ readonly COUNTER_WHITE_DOOR: readonly [ComponentTypeHeader.Int32];
141
+ readonly COUNTER_WHITE_GATE: readonly [ComponentTypeHeader.Int32];
142
+ readonly COUNTER_GRAY_CONSUMABLE: readonly [ComponentTypeHeader.Int32];
143
+ readonly COUNTER_GRAY_CONSUMABLE_SET: readonly [ComponentTypeHeader.Int32];
144
+ readonly COUNTER_GRAY_REUSABLE: readonly [ComponentTypeHeader.Int32];
145
+ readonly COUNTER_GRAY_REUSABLE_SET: readonly [ComponentTypeHeader.Int32];
146
+ readonly COUNTER_GRAY_DOOR: readonly [ComponentTypeHeader.Int32];
147
+ readonly COUNTER_GRAY_GATE: readonly [ComponentTypeHeader.Int32];
148
+ readonly COUNTER_BLACK_CONSUMABLE: readonly [ComponentTypeHeader.Int32];
149
+ readonly COUNTER_BLACK_CONSUMABLE_SET: readonly [ComponentTypeHeader.Int32];
150
+ readonly COUNTER_BLACK_REUSABLE: readonly [ComponentTypeHeader.Int32];
151
+ readonly COUNTER_BLACK_REUSABLE_SET: readonly [ComponentTypeHeader.Int32];
152
+ readonly COUNTER_BLACK_DOOR: readonly [ComponentTypeHeader.Int32];
153
+ readonly COUNTER_BLACK_GATE: readonly [ComponentTypeHeader.Int32];
154
+ readonly COUNTER_RED_CONSUMABLE: readonly [ComponentTypeHeader.Int32];
155
+ readonly COUNTER_RED_CONSUMABLE_SET: readonly [ComponentTypeHeader.Int32];
156
+ readonly COUNTER_RED_REUSABLE: readonly [ComponentTypeHeader.Int32];
157
+ readonly COUNTER_RED_REUSABLE_SET: readonly [ComponentTypeHeader.Int32];
158
+ readonly COUNTER_RED_DOOR: readonly [ComponentTypeHeader.Int32];
159
+ readonly COUNTER_RED_GATE: readonly [ComponentTypeHeader.Int32];
160
+ readonly COUNTER_ORANGE_CONSUMABLE: readonly [ComponentTypeHeader.Int32];
161
+ readonly COUNTER_ORANGE_CONSUMABLE_SET: readonly [ComponentTypeHeader.Int32];
162
+ readonly COUNTER_ORANGE_REUSABLE: readonly [ComponentTypeHeader.Int32];
163
+ readonly COUNTER_ORANGE_REUSABLE_SET: readonly [ComponentTypeHeader.Int32];
164
+ readonly COUNTER_ORANGE_DOOR: readonly [ComponentTypeHeader.Int32];
165
+ readonly COUNTER_ORANGE_GATE: readonly [ComponentTypeHeader.Int32];
166
+ readonly COUNTER_YELLOW_CONSUMABLE: readonly [ComponentTypeHeader.Int32];
167
+ readonly COUNTER_YELLOW_CONSUMABLE_SET: readonly [ComponentTypeHeader.Int32];
168
+ readonly COUNTER_YELLOW_REUSABLE: readonly [ComponentTypeHeader.Int32];
169
+ readonly COUNTER_YELLOW_REUSABLE_SET: readonly [ComponentTypeHeader.Int32];
170
+ readonly COUNTER_YELLOW_DOOR: readonly [ComponentTypeHeader.Int32];
171
+ readonly COUNTER_YELLOW_GATE: readonly [ComponentTypeHeader.Int32];
172
+ readonly COUNTER_GREEN_CONSUMABLE: readonly [ComponentTypeHeader.Int32];
173
+ readonly COUNTER_GREEN_CONSUMABLE_SET: readonly [ComponentTypeHeader.Int32];
174
+ readonly COUNTER_GREEN_REUSABLE: readonly [ComponentTypeHeader.Int32];
175
+ readonly COUNTER_GREEN_REUSABLE_SET: readonly [ComponentTypeHeader.Int32];
176
+ readonly COUNTER_GREEN_DOOR: readonly [ComponentTypeHeader.Int32];
177
+ readonly COUNTER_GREEN_GATE: readonly [ComponentTypeHeader.Int32];
178
+ readonly COUNTER_CYAN_CONSUMABLE: readonly [ComponentTypeHeader.Int32];
179
+ readonly COUNTER_CYAN_CONSUMABLE_SET: readonly [ComponentTypeHeader.Int32];
180
+ readonly COUNTER_CYAN_REUSABLE: readonly [ComponentTypeHeader.Int32];
181
+ readonly COUNTER_CYAN_REUSABLE_SET: readonly [ComponentTypeHeader.Int32];
182
+ readonly COUNTER_CYAN_DOOR: readonly [ComponentTypeHeader.Int32];
183
+ readonly COUNTER_CYAN_GATE: readonly [ComponentTypeHeader.Int32];
184
+ readonly COUNTER_BLUE_CONSUMABLE: readonly [ComponentTypeHeader.Int32];
185
+ readonly COUNTER_BLUE_CONSUMABLE_SET: readonly [ComponentTypeHeader.Int32];
186
+ readonly COUNTER_BLUE_REUSABLE: readonly [ComponentTypeHeader.Int32];
187
+ readonly COUNTER_BLUE_REUSABLE_SET: readonly [ComponentTypeHeader.Int32];
188
+ readonly COUNTER_BLUE_DOOR: readonly [ComponentTypeHeader.Int32];
189
+ readonly COUNTER_BLUE_GATE: readonly [ComponentTypeHeader.Int32];
190
+ readonly COUNTER_MAGENTA_CONSUMABLE: readonly [ComponentTypeHeader.Int32];
191
+ readonly COUNTER_MAGENTA_CONSUMABLE_SET: readonly [ComponentTypeHeader.Int32];
192
+ readonly COUNTER_MAGENTA_REUSABLE: readonly [ComponentTypeHeader.Int32];
193
+ readonly COUNTER_MAGENTA_REUSABLE_SET: readonly [ComponentTypeHeader.Int32];
194
+ readonly COUNTER_MAGENTA_DOOR: readonly [ComponentTypeHeader.Int32];
195
+ readonly COUNTER_MAGENTA_GATE: readonly [ComponentTypeHeader.Int32];
196
+ };
package/cm/Block.js ADDED
@@ -0,0 +1,246 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.BlockArgsHeadings = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const BufferReader_js_1 = tslib_1.__importStar(require("./BufferReader.js"));
6
+ const pw_js_api_1 = require("pw-js-api");
7
+ const Error_js_1 = require("./util/Error.js");
8
+ class Block {
9
+ constructor(bId, args) {
10
+ this.args = [];
11
+ if (typeof bId === "number")
12
+ this.bId = bId;
13
+ else {
14
+ this.bId = Block.getIdByName(bId);
15
+ }
16
+ if (args)
17
+ this.args = args;
18
+ }
19
+ /**
20
+ * I mean... Just use .args.length !== 0 to see if it has args.
21
+ *
22
+ * But anyway, this will return true if there is at least one args, otherwise false.
23
+ */
24
+ hasArgs() {
25
+ return this.args.length !== 0;
26
+ }
27
+ /**
28
+ * For helper.
29
+ *
30
+ * This is in Block class for organisation.
31
+ *
32
+ * This will deserialise by using the reader to get the block ID then retrieve the args, if applicable.
33
+ */
34
+ static deserialize(reader) {
35
+ return new Block(reader.readUInt32LE()).deserializeArgs(reader);
36
+ }
37
+ deserializeArgs(reader, flag = false) {
38
+ var _a;
39
+ const format = exports.BlockArgsHeadings[this.name];
40
+ for (let i = 0; i < ((_a = format === null || format === void 0 ? void 0 : format.length) !== null && _a !== void 0 ? _a : 0); i++) {
41
+ if (flag) {
42
+ reader.expectUInt8(format[i]);
43
+ }
44
+ this.args[i] = reader.read(format[i], !flag);
45
+ }
46
+ return this;
47
+ }
48
+ /**
49
+ * For helper.
50
+ *
51
+ * This is in Block class for organisation.
52
+ */
53
+ static deserializeArgs(reader) {
54
+ // const args =
55
+ return reader.deserialize();
56
+ // for (let i = 0; i < (format?.length ?? 0); i++) {
57
+ // if (flag) {
58
+ // reader.expectUInt8(format[i]);
59
+ // }
60
+ // args[i] = reader.read(format[i], !flag);
61
+ // }
62
+ // return args;
63
+ }
64
+ static serializeArgs(bId, args, options) {
65
+ var _a;
66
+ options || (options = {
67
+ endian: "little",
68
+ writeId: true,
69
+ readTypeByte: false,
70
+ });
71
+ const buffer = [];
72
+ if (options.writeId) {
73
+ const idBuffer = Buffer.alloc(4);
74
+ idBuffer.writeUInt32LE(bId);
75
+ buffer.push(idBuffer);
76
+ }
77
+ const blockData = (_a = exports.BlockArgsHeadings[this.name]) !== null && _a !== void 0 ? _a : [];
78
+ for (let i = 0, len = blockData.length; i < len; i++) {
79
+ const entry = BufferReader_js_1.default.Dynamic(blockData[i], args[i]);
80
+ buffer.push(entry);
81
+ }
82
+ return Buffer.concat(buffer);
83
+ }
84
+ toPacket(pos, y, layer) {
85
+ if (typeof pos === "number") {
86
+ pos = [{
87
+ x: pos, y
88
+ }];
89
+ layer = layer !== null && layer !== void 0 ? layer : 0;
90
+ }
91
+ else
92
+ layer = y !== null && y !== void 0 ? y : 0;
93
+ return {
94
+ isFillOperation: false,
95
+ blockId: this.bId,
96
+ layer,
97
+ positions: pos,
98
+ extraFields: Block.serializeArgs(this.bId, this.args, { endian: "big", writeId: false, readTypeByte: true })
99
+ };
100
+ }
101
+ /**
102
+ * This will return the block name in UPPER_CASE form.
103
+ *
104
+ * For eg EFFECTS_INVULNERABILITY.
105
+ *
106
+ * @throws {MissingBlockError}
107
+ * If the ID of this block is not known.
108
+ */
109
+ get name() {
110
+ var _a;
111
+ const block = (_a = pw_js_api_1.PWApiClient.listBlocks) === null || _a === void 0 ? void 0 : _a[this.bId];
112
+ if (block === undefined)
113
+ throw new Error_js_1.MissingBlockError("Current block data is missing, run Api#listBlocks first?", this.bId);
114
+ return block.PaletteId.toUpperCase();
115
+ }
116
+ clone(obj = false) {
117
+ if (obj === true)
118
+ return { bId: this.bId, args: this.args, name: this.name };
119
+ return new Block(this.bId, this.args);
120
+ }
121
+ /**
122
+ * This can be convenient as it will always return the ID if it exists, and it will throw an error if it doesn't
123
+ *
124
+ * This expects the name sent to be in full upper capital form though.
125
+ *
126
+ * @throws {MissingBlockError}
127
+ * If the connection is unknown, this can be because you're trying to use this function when Api#getListBlocks has never been invoked, or the object is missing.
128
+ */
129
+ static getIdByName(paletteId) {
130
+ var _a;
131
+ const block = (_a = pw_js_api_1.PWApiClient.listBlocksObj) === null || _a === void 0 ? void 0 : _a[paletteId];
132
+ if (block === undefined)
133
+ throw new Error_js_1.MissingBlockError("Current block data is missing, run Api#listBlocks first?", paletteId);
134
+ return block.Id;
135
+ }
136
+ }
137
+ exports.default = Block;
138
+ /**
139
+ * This mapping contains definitions of block data which require additional
140
+ * arguments to be sent or received with.
141
+ */
142
+ exports.BlockArgsHeadings = {
143
+ COIN_GOLD_DOOR: [BufferReader_js_1.ComponentTypeHeader.Int32],
144
+ COIN_BLUE_DOOR: [BufferReader_js_1.ComponentTypeHeader.Int32],
145
+ COIN_GOLD_GATE: [BufferReader_js_1.ComponentTypeHeader.Int32],
146
+ COIN_BLUE_GATE: [BufferReader_js_1.ComponentTypeHeader.Int32],
147
+ EFFECTS_JUMP_HEIGHT: [BufferReader_js_1.ComponentTypeHeader.Int32],
148
+ EFFECTS_FLY: [BufferReader_js_1.ComponentTypeHeader.Boolean],
149
+ EFFECTS_SPEED: [BufferReader_js_1.ComponentTypeHeader.Int32],
150
+ EFFECTS_INVULNERABILITY: [BufferReader_js_1.ComponentTypeHeader.Boolean],
151
+ EFFECTS_CURSE: [BufferReader_js_1.ComponentTypeHeader.Int32],
152
+ EFFECTS_ZOMBIE: [BufferReader_js_1.ComponentTypeHeader.Int32],
153
+ EFFECTS_GRAVITYFORCE: [BufferReader_js_1.ComponentTypeHeader.Int32],
154
+ EFFECTS_MULTI_JUMP: [BufferReader_js_1.ComponentTypeHeader.Int32],
155
+ // gravity effects no data
156
+ // effects off
157
+ // effects zombie
158
+ TOOL_PORTAL_WORLD_SPAWN: [BufferReader_js_1.ComponentTypeHeader.Int32],
159
+ SIGN_NORMAL: [BufferReader_js_1.ComponentTypeHeader.String],
160
+ SIGN_RED: [BufferReader_js_1.ComponentTypeHeader.String],
161
+ SIGN_GREEN: [BufferReader_js_1.ComponentTypeHeader.String],
162
+ SIGN_BLUE: [BufferReader_js_1.ComponentTypeHeader.String],
163
+ SIGN_GOLD: [BufferReader_js_1.ComponentTypeHeader.String],
164
+ PORTAL: [BufferReader_js_1.ComponentTypeHeader.Int32, BufferReader_js_1.ComponentTypeHeader.Int32, BufferReader_js_1.ComponentTypeHeader.Int32],
165
+ PORTAL_INVISIBLE: [BufferReader_js_1.ComponentTypeHeader.Int32, BufferReader_js_1.ComponentTypeHeader.Int32, BufferReader_js_1.ComponentTypeHeader.Int32],
166
+ PORTAL_WORLD: [BufferReader_js_1.ComponentTypeHeader.String, BufferReader_js_1.ComponentTypeHeader.Int32],
167
+ SWITCH_LOCAL_TOGGLE: [BufferReader_js_1.ComponentTypeHeader.Int32],
168
+ SWITCH_LOCAL_ACTIVATOR: [BufferReader_js_1.ComponentTypeHeader.Int32, BufferReader_js_1.ComponentTypeHeader.Byte],
169
+ SWITCH_LOCAL_RESETTER: [BufferReader_js_1.ComponentTypeHeader.Byte],
170
+ SWITCH_LOCAL_DOOR: [BufferReader_js_1.ComponentTypeHeader.Int32],
171
+ SWITCH_LOCAL_GATE: [BufferReader_js_1.ComponentTypeHeader.Int32],
172
+ SWITCH_GLOBAL_TOGGLE: [BufferReader_js_1.ComponentTypeHeader.Int32],
173
+ SWITCH_GLOBAL_ACTIVATOR: [BufferReader_js_1.ComponentTypeHeader.Int32, BufferReader_js_1.ComponentTypeHeader.Byte],
174
+ SWITCH_GLOBAL_RESETTER: [BufferReader_js_1.ComponentTypeHeader.Byte],
175
+ SWITCH_GLOBAL_DOOR: [BufferReader_js_1.ComponentTypeHeader.Int32],
176
+ SWITCH_GLOBAL_GATE: [BufferReader_js_1.ComponentTypeHeader.Int32],
177
+ HAZARD_DEATH_DOOR: [BufferReader_js_1.ComponentTypeHeader.Int32],
178
+ HAZARD_DEATH_GATE: [BufferReader_js_1.ComponentTypeHeader.Int32],
179
+ NOTE_DRUM: [BufferReader_js_1.ComponentTypeHeader.ByteArray],
180
+ NOTE_PIANO: [BufferReader_js_1.ComponentTypeHeader.ByteArray],
181
+ NOTE_GUITAR: [BufferReader_js_1.ComponentTypeHeader.ByteArray],
182
+ CUSTOM_SOLID_BG: [BufferReader_js_1.ComponentTypeHeader.UInt32],
183
+ CUSTOM_CHECKER_BG: [BufferReader_js_1.ComponentTypeHeader.UInt32],
184
+ // ew
185
+ COUNTER_WHITE_CONSUMABLE: [BufferReader_js_1.ComponentTypeHeader.Int32],
186
+ COUNTER_WHITE_CONSUMABLE_SET: [BufferReader_js_1.ComponentTypeHeader.Int32],
187
+ COUNTER_WHITE_REUSABLE: [BufferReader_js_1.ComponentTypeHeader.Int32],
188
+ COUNTER_WHITE_REUSABLE_SET: [BufferReader_js_1.ComponentTypeHeader.Int32],
189
+ COUNTER_WHITE_DOOR: [BufferReader_js_1.ComponentTypeHeader.Int32],
190
+ COUNTER_WHITE_GATE: [BufferReader_js_1.ComponentTypeHeader.Int32],
191
+ COUNTER_GRAY_CONSUMABLE: [BufferReader_js_1.ComponentTypeHeader.Int32],
192
+ COUNTER_GRAY_CONSUMABLE_SET: [BufferReader_js_1.ComponentTypeHeader.Int32],
193
+ COUNTER_GRAY_REUSABLE: [BufferReader_js_1.ComponentTypeHeader.Int32],
194
+ COUNTER_GRAY_REUSABLE_SET: [BufferReader_js_1.ComponentTypeHeader.Int32],
195
+ COUNTER_GRAY_DOOR: [BufferReader_js_1.ComponentTypeHeader.Int32],
196
+ COUNTER_GRAY_GATE: [BufferReader_js_1.ComponentTypeHeader.Int32],
197
+ COUNTER_BLACK_CONSUMABLE: [BufferReader_js_1.ComponentTypeHeader.Int32],
198
+ COUNTER_BLACK_CONSUMABLE_SET: [BufferReader_js_1.ComponentTypeHeader.Int32],
199
+ COUNTER_BLACK_REUSABLE: [BufferReader_js_1.ComponentTypeHeader.Int32],
200
+ COUNTER_BLACK_REUSABLE_SET: [BufferReader_js_1.ComponentTypeHeader.Int32],
201
+ COUNTER_BLACK_DOOR: [BufferReader_js_1.ComponentTypeHeader.Int32],
202
+ COUNTER_BLACK_GATE: [BufferReader_js_1.ComponentTypeHeader.Int32],
203
+ COUNTER_RED_CONSUMABLE: [BufferReader_js_1.ComponentTypeHeader.Int32],
204
+ COUNTER_RED_CONSUMABLE_SET: [BufferReader_js_1.ComponentTypeHeader.Int32],
205
+ COUNTER_RED_REUSABLE: [BufferReader_js_1.ComponentTypeHeader.Int32],
206
+ COUNTER_RED_REUSABLE_SET: [BufferReader_js_1.ComponentTypeHeader.Int32],
207
+ COUNTER_RED_DOOR: [BufferReader_js_1.ComponentTypeHeader.Int32],
208
+ COUNTER_RED_GATE: [BufferReader_js_1.ComponentTypeHeader.Int32],
209
+ COUNTER_ORANGE_CONSUMABLE: [BufferReader_js_1.ComponentTypeHeader.Int32],
210
+ COUNTER_ORANGE_CONSUMABLE_SET: [BufferReader_js_1.ComponentTypeHeader.Int32],
211
+ COUNTER_ORANGE_REUSABLE: [BufferReader_js_1.ComponentTypeHeader.Int32],
212
+ COUNTER_ORANGE_REUSABLE_SET: [BufferReader_js_1.ComponentTypeHeader.Int32],
213
+ COUNTER_ORANGE_DOOR: [BufferReader_js_1.ComponentTypeHeader.Int32],
214
+ COUNTER_ORANGE_GATE: [BufferReader_js_1.ComponentTypeHeader.Int32],
215
+ COUNTER_YELLOW_CONSUMABLE: [BufferReader_js_1.ComponentTypeHeader.Int32],
216
+ COUNTER_YELLOW_CONSUMABLE_SET: [BufferReader_js_1.ComponentTypeHeader.Int32],
217
+ COUNTER_YELLOW_REUSABLE: [BufferReader_js_1.ComponentTypeHeader.Int32],
218
+ COUNTER_YELLOW_REUSABLE_SET: [BufferReader_js_1.ComponentTypeHeader.Int32],
219
+ COUNTER_YELLOW_DOOR: [BufferReader_js_1.ComponentTypeHeader.Int32],
220
+ COUNTER_YELLOW_GATE: [BufferReader_js_1.ComponentTypeHeader.Int32],
221
+ COUNTER_GREEN_CONSUMABLE: [BufferReader_js_1.ComponentTypeHeader.Int32],
222
+ COUNTER_GREEN_CONSUMABLE_SET: [BufferReader_js_1.ComponentTypeHeader.Int32],
223
+ COUNTER_GREEN_REUSABLE: [BufferReader_js_1.ComponentTypeHeader.Int32],
224
+ COUNTER_GREEN_REUSABLE_SET: [BufferReader_js_1.ComponentTypeHeader.Int32],
225
+ COUNTER_GREEN_DOOR: [BufferReader_js_1.ComponentTypeHeader.Int32],
226
+ COUNTER_GREEN_GATE: [BufferReader_js_1.ComponentTypeHeader.Int32],
227
+ COUNTER_CYAN_CONSUMABLE: [BufferReader_js_1.ComponentTypeHeader.Int32],
228
+ COUNTER_CYAN_CONSUMABLE_SET: [BufferReader_js_1.ComponentTypeHeader.Int32],
229
+ COUNTER_CYAN_REUSABLE: [BufferReader_js_1.ComponentTypeHeader.Int32],
230
+ COUNTER_CYAN_REUSABLE_SET: [BufferReader_js_1.ComponentTypeHeader.Int32],
231
+ COUNTER_CYAN_DOOR: [BufferReader_js_1.ComponentTypeHeader.Int32],
232
+ COUNTER_CYAN_GATE: [BufferReader_js_1.ComponentTypeHeader.Int32],
233
+ COUNTER_BLUE_CONSUMABLE: [BufferReader_js_1.ComponentTypeHeader.Int32],
234
+ COUNTER_BLUE_CONSUMABLE_SET: [BufferReader_js_1.ComponentTypeHeader.Int32],
235
+ COUNTER_BLUE_REUSABLE: [BufferReader_js_1.ComponentTypeHeader.Int32],
236
+ COUNTER_BLUE_REUSABLE_SET: [BufferReader_js_1.ComponentTypeHeader.Int32],
237
+ COUNTER_BLUE_DOOR: [BufferReader_js_1.ComponentTypeHeader.Int32],
238
+ COUNTER_BLUE_GATE: [BufferReader_js_1.ComponentTypeHeader.Int32],
239
+ COUNTER_MAGENTA_CONSUMABLE: [BufferReader_js_1.ComponentTypeHeader.Int32],
240
+ COUNTER_MAGENTA_CONSUMABLE_SET: [BufferReader_js_1.ComponentTypeHeader.Int32],
241
+ COUNTER_MAGENTA_REUSABLE: [BufferReader_js_1.ComponentTypeHeader.Int32],
242
+ COUNTER_MAGENTA_REUSABLE_SET: [BufferReader_js_1.ComponentTypeHeader.Int32],
243
+ COUNTER_MAGENTA_DOOR: [BufferReader_js_1.ComponentTypeHeader.Int32],
244
+ COUNTER_MAGENTA_GATE: [BufferReader_js_1.ComponentTypeHeader.Int32],
245
+ };
246
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQmxvY2suanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9saWIvQmxvY2sudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUNBLDZFQUFzRTtBQUV0RSx5Q0FBd0Q7QUFDeEQsOENBQW9EO0FBRXBELE1BQXFCLEtBQUs7SUFJdEIsWUFBWSxHQUFnQyxFQUFFLElBQWlCO1FBRi9ELFNBQUksR0FBZSxFQUFFLENBQUM7UUFHbEIsSUFBSSxPQUFPLEdBQUcsS0FBSyxRQUFRO1lBQUUsSUFBSSxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUM7YUFDdkMsQ0FBQztZQUNGLElBQUksQ0FBQyxHQUFHLEdBQUcsS0FBSyxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUN0QyxDQUFDO1FBRUQsSUFBSSxJQUFJO1lBQUUsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7SUFDL0IsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxPQUFPO1FBQ0gsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sS0FBSyxDQUFDLENBQUM7SUFDbEMsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNILE1BQU0sQ0FBQyxXQUFXLENBQUMsTUFBb0I7UUFDbkMsT0FBTyxJQUFJLEtBQUssQ0FBQyxNQUFNLENBQUMsWUFBWSxFQUFFLENBQUMsQ0FBQyxlQUFlLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDcEUsQ0FBQztJQUVTLGVBQWUsQ0FBQyxNQUFvQixFQUFFLElBQUksR0FBRyxLQUFLOztRQUN4RCxNQUFNLE1BQU0sR0FBMkIseUJBQXlCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRTVFLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLE1BQUEsTUFBTSxhQUFOLE1BQU0sdUJBQU4sTUFBTSxDQUFFLE1BQU0sbUNBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztZQUM3QyxJQUFJLElBQUksRUFBRSxD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QUMscUNBQW1CLENBQUMsS0FBSyxDQUFDO0lBQzdDLHlCQUF5QixFQUFFLENBQUMscUNBQW1CLENBQUMsS0FBSyxDQUFDO0lBQ3RELDZCQUE2QixFQUFFLENBQUMscUNBQW1CLENBQUMsS0FBSyxDQUFDO0lBQzFELHVCQUF1QixFQUFFLENBQUMscUNBQW1CLENBQUMsS0FBSyxDQUFDO0lBQ3BELDJCQUEyQixFQUFFLENBQUMscUNBQW1CLENBQUMsS0FBSyxDQUFDO0lBQ3hELG1CQUFtQixFQUFFLENBQUMscUNBQW1CLENBQUMsS0FBSyxDQUFDO0lBQ2hELG1CQUFtQixFQUFFLENBQUMscUNBQW1CLENBQUMsS0FBSyxDQUFDO0lBQ2hELHlCQUF5QixFQUFFLENBQUMscUNBQW1CLENBQUMsS0FBSyxDQUFDO0lBQ3RELDZCQUE2QixFQUFFLENBQUMscUNBQW1CLENBQUMsS0FBSyxDQUFDO0lBQzFELHVCQUF1QixFQUFFLENBQUMscUNBQW1CLENBQUMsS0FBSyxDQUFDO0lBQ3BELDJCQUEyQixFQUFFLENBQUMscUNBQW1CLENBQUMsS0FBSyxDQUFDO0lBQ3hELG1CQUFtQixFQUFFLENBQUMscUNBQW1CLENBQUMsS0FBSyxDQUFDO0lBQ2hELG1CQUFtQixFQUFFLENBQUMscUNBQW1CLENBQUMsS0FBSyxDQUFDO0lBQ2hELHdCQUF3QixFQUFFLENBQUMscUNBQW1CLENBQUMsS0FBSyxDQUFDO0lBQ3JELDRCQUE0QixFQUFFLENBQUMscUNBQW1CLENBQUMsS0FBSyxDQUFDO0lBQ3pELHNCQUFzQixFQUFFLENBQUMscUNBQW1CLENBQUMsS0FBSyxDQUFDO0lBQ25ELDBCQUEwQixFQUFFLENBQUMscUNBQW1CLENBQUMsS0FBSyxDQUFDO0lBQ3ZELGtCQUFrQixFQUFFLENBQUMscUNBQW1CLENBQUMsS0FBSyxDQUFDO0lBQy9DLGtCQUFrQixFQUFFLENBQUMscUNBQW1CLENBQUMsS0FBSyxDQUFDO0lBQy9DLHVCQUF1QixFQUFFLENBQUMscUNBQW1CLENBQUMsS0FBSyxDQUFDO0lBQ3BELDJCQUEyQixFQUFFLENBQUMscUNBQW1CLENBQUMsS0FBSyxDQUFDO0lBQ3hELHFCQUFxQixFQUFFLENBQUMscUNBQW1CLENBQUMsS0FBSyxDQUFDO0lBQ2xELHlCQUF5QixFQUFFLENBQUMscUNBQW1CLENBQUMsS0FBSyxDQUFDO0lBQ3RELGlCQUFpQixFQUFFLENBQUMscUNBQW1CLENBQUMsS0FBSyxDQUFDO0lBQzlDLGlCQUFpQixFQUFFLENBQUMscUNBQW1CLENBQUMsS0FBSyxDQUFDO0lBQzlDLHVCQUF1QixFQUFFLENBQUMscUNBQW1CLENBQUMsS0FBSyxDQUFDO0lBQ3BELDJCQUEyQixFQUFFLENBQUMscUNBQW1CLENBQUMsS0FBSyxDQUFDO0lBQ3hELHFCQUFxQixFQUFFLENBQUMscUNBQW1CLENBQUMsS0FBSyxDQUFDO0lBQ2xELHlCQUF5QixFQUFFLENBQUMscUNBQW1CLENBQUMsS0FBSyxDQUFDO0lBQ3RELGlCQUFpQixFQUFFLENBQUMscUNBQW1CLENBQUMsS0FBSyxDQUFDO0lBQzlDLGlCQUFpQixFQUFFLENBQUMscUNBQW1CLENBQUMsS0FBSyxDQUFDO0lBQzlDLDBCQUEwQixFQUFFLENBQUMscUNBQW1CLENBQUMsS0FBSyxDQUFDO0lBQ3ZELDhCQUE4QixFQUFFLENBQUMscUNBQW1CLENBQUMsS0FBSyxDQUFDO0lBQzNELHdCQUF3QixFQUFFLENBQUMscUNBQW1CLENBQUMsS0FBSyxDQUFDO0lBQ3JELDRCQUE0QixFQUFFLENBQUMscUNBQW1CLENBQUMsS0FBSyxDQUFDO0lBQ3pELG9CQUFvQixFQUFFLENBQUMscUNBQW1CLENBQUMsS0FBSyxDQUFDO0lBQ2pELG9CQUFvQixFQUFFLENBQUMscUNBQW1CLENBQUMsS0FBSyxDQUFDO0NBQzNDLENBQUMifQ==
package/cm/Helper.d.ts ADDED
@@ -0,0 +1,119 @@
1
+ import { type Hook } from "pw-js-api";
2
+ import type { ProtoGen } from "pw-js-api";
3
+ import Block from "./Block.js";
4
+ import Player from "./Player.js";
5
+ import { LayerType } from "./Constants.js";
6
+ import type { Point, PWGameHook } from "./types/index.js";
7
+ import { DeserialisedStructure } from "./Structure.js";
8
+ /**
9
+ * To use this helper, you must first create an instance of this,
10
+ *
11
+ * then: <PWGameClient>.addCallback("raw", helper.onRawPacketRecv)
12
+ */
13
+ export default class PWGameWorldHelper {
14
+ /**
15
+ * Arrays of blocks (by layer, x, y)
16
+ */
17
+ blocks: [Block[][], Block[][]];
18
+ players: Map<number, Player>;
19
+ globalSwitches: boolean[];
20
+ private _meta?;
21
+ private _width;
22
+ private _height;
23
+ private _init;
24
+ private _selfPlayerId;
25
+ /**
26
+ * The current world's width.
27
+ *
28
+ * If you didn't put the hook before init, this may throw error.
29
+ */
30
+ get width(): number;
31
+ /**
32
+ * The current world's height.
33
+ *
34
+ * If you didn't put the hook before init, this may throw error.
35
+ */
36
+ get height(): number;
37
+ /**
38
+ * The current world's metadata.
39
+ *
40
+ * If you didn't put the hook before init, this may throw error.
41
+ */
42
+ get meta(): ProtoGen.WorldMeta | null;
43
+ /**
44
+ * If this helper is ready. When it's false, the helper will not return anything for any of the packets.
45
+ */
46
+ get initialised(): boolean;
47
+ /**
48
+ * The bot's player object.
49
+ *
50
+ * If you didn't put the hook before init, this may throw error.
51
+ */
52
+ get botPlayer(): Player;
53
+ /**
54
+ * The bot's player id in the world.
55
+ *
56
+ * If you didn't put the hook before init, this may throw error.
57
+ */
58
+ get botPlayerId(): number;
59
+ /**
60
+ * This must go in .use() of the main PW-JS-API Game Client class.
61
+ *
62
+ * <PWGameClient>.use(<PWGameWorldHelper>.receiveHook)
63
+ *
64
+ * DO NOT PUT () AFTER RECEIVEHOOK
65
+ */
66
+ receiveHook: Hook<PWGameHook>;
67
+ /**
68
+ * Internal function.
69
+ */
70
+ private initialise;
71
+ /**
72
+ * Internal function.
73
+ */
74
+ private deserialize;
75
+ private convertSwitchState;
76
+ /**
77
+ * Internal function, this triggers when the world gets cleared.
78
+ *
79
+ * Clears the blocks map and promptly fill it with empty except the border which becomes basci gray.
80
+ */
81
+ private clear;
82
+ /**
83
+ * Gets the block at the position.
84
+ *
85
+ * Difference between this and using this.blocks directly is that this function will validate the positions and the layer.
86
+ */
87
+ getBlockAt(pos: Point, l: LayerType): Block;
88
+ getBlockAt(x: number | Point, y: number, l: LayerType): Block;
89
+ /**
90
+ * Player ID.
91
+ *
92
+ * The main bot player is excluded from the criteria.
93
+ */
94
+ getPlayer(id: number, isAccount?: false): Player | undefined;
95
+ /**
96
+ * Username is case insensitive.
97
+ *
98
+ * The main bot player is excluded from the criteria.
99
+ */
100
+ getPlayer(username: string, isAccount?: false): Player | undefined;
101
+ /**
102
+ * The ID of the account (must have second parameter set to true)
103
+ *
104
+ * The main bot player is excluded from the criteria.
105
+ */
106
+ getPlayer(accountId: string, isAccount: true): Player | undefined;
107
+ /**
108
+ * Returns the list of current players in the world.
109
+ */
110
+ getPlayers(): Player[];
111
+ /**
112
+ * This will return a DeserialisedStructure which will allow you to easily save to a file if you wish.
113
+ *
114
+ * The blocks are cloned and thus you're free to modify the blocks in the structure without the risk of it affecting this helper's blocks.
115
+ *
116
+ * NOTE: endX and endY are also included!
117
+ */
118
+ sectionBlocks(startX: number, startY: number, endX: number, endY: number): DeserialisedStructure;
119
+ }