pw-js-world 0.0.4 → 0.0.5-dev.24aedef

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/Player.js ADDED
@@ -0,0 +1,115 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.PlayerEffect = void 0;
4
+ class Player {
5
+ constructor(props, states) {
6
+ /**
7
+ * List of active effects the player has.
8
+ */
9
+ this.effects = [];
10
+ /**
11
+ * If this player is the bot.
12
+ */
13
+ this.isMe = false;
14
+ this.accountId = props.accountId;
15
+ this.face = props.face;
16
+ this.isFriend = props.isFriend;
17
+ this.isWorldOwner = props.isWorldOwner;
18
+ this.playerId = props.playerId;
19
+ this.position = props.position ? {
20
+ x: props.position.x,
21
+ y: props.position.y
22
+ } : undefined;
23
+ if (!props.rights)
24
+ this.resetRights();
25
+ else
26
+ this.rights = {
27
+ availableCommands: props.rights.availableCommands,
28
+ canChangeWorldSettings: props.rights.canChangeWorldSettings,
29
+ canEdit: props.rights.canEdit,
30
+ canGod: props.rights.canGod,
31
+ canToggleMinimap: props.rights.canToggleMinimap,
32
+ };
33
+ this.role = props.role;
34
+ this.username = props.username;
35
+ if (typeof states === "boolean") {
36
+ this.isMe = states;
37
+ states = undefined;
38
+ }
39
+ if (!states) {
40
+ // Could be bot via init that don't get states.
41
+ this.resetState();
42
+ }
43
+ else
44
+ this.states = {
45
+ coinsBlue: states.coinsBlue,
46
+ coinsGold: states.coinsGold,
47
+ collectedItems: states.collectedItems.map(v => ({ x: v.x, y: v.y })),
48
+ deaths: states.deaths,
49
+ godmode: states.godmode,
50
+ hasGoldCrown: states.hasGoldCrown,
51
+ hasSilverCrown: states.hasSilverCrown,
52
+ modmode: states.modmode,
53
+ switches: states.switches,
54
+ teamId: states.teamId,
55
+ };
56
+ }
57
+ /**
58
+ * This is destructive, this is only for on reset packet.
59
+ */
60
+ resetState() {
61
+ this.states = {
62
+ coinsBlue: 0,
63
+ coinsGold: 0,
64
+ collectedItems: [],
65
+ deaths: 0,
66
+ godmode: false,
67
+ hasGoldCrown: false,
68
+ hasSilverCrown: false,
69
+ modmode: false,
70
+ switches: new Array(1000).fill(false),
71
+ teamId: 0,
72
+ };
73
+ }
74
+ /**
75
+ * Destructive.
76
+ */
77
+ resetRights() {
78
+ this.rights = {
79
+ availableCommands: [],
80
+ canChangeWorldSettings: false,
81
+ canEdit: false,
82
+ canGod: false,
83
+ canToggleMinimap: false
84
+ };
85
+ }
86
+ }
87
+ exports.default = Player;
88
+ class PlayerEffect {
89
+ constructor(effect, triggeredAt) {
90
+ this.effectId = effect.effectId;
91
+ this.duration = effect.duration;
92
+ this.strength = effect.strength;
93
+ this.triggeredAt = triggeredAt !== null && triggeredAt !== void 0 ? triggeredAt : Date.now();
94
+ }
95
+ /**
96
+ * Note: If this effect is non timed, this will always return false.
97
+ */
98
+ get hasExpired() {
99
+ if (this.duration === undefined)
100
+ return false;
101
+ return Date.now() > (this.triggeredAt + this.duration);
102
+ }
103
+ /**
104
+ * Milliseconds showing how long before this expires.
105
+ *
106
+ * Note: If this effect is non timed, this will return infinity.
107
+ */
108
+ get remaining() {
109
+ if (this.duration === undefined)
110
+ return Infinity;
111
+ return Math.max(0, Date.now() - (this.triggeredAt + this.duration));
112
+ }
113
+ }
114
+ exports.PlayerEffect = PlayerEffect;
115
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUGxheWVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vbGliL1BsYXllci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUEySUEsTUFBcUIsTUFBTTtJQXNEdkIsWUFBWSxLQUFnQyxFQUFFLE1BQW9DO1FBVmxGOztXQUVHO1FBQ0gsWUFBTyxHQUFrQixFQUFFLENBQUM7UUFFNUI7O1dBRUc7UUFDSCxTQUFJLEdBQVksS0FBSyxDQUFDO1FBR2xCLElBQUksQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDLFNBQVMsQ0FBQztRQUNqQyxJQUFJLENBQUMsSUFBSSxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUM7UUFDdkIsSUFBSSxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUMsUUFBUSxDQUFDO1FBQy9CLElBQUksQ0FBQyxZQUFZLEdBQUcsS0FBSyxDQUFDLFlBQVksQ0FBQztRQUN2QyxJQUFJLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQyxRQUFRLENBQUM7UUFDL0IsSUFBSSxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztZQUM3QixDQUFDLEVBQUUsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQ25CLENBQUMsRUFBRSxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUM7U0FDdEIsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO1FBRWQsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNO1lBQUUsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDOztZQUNqQyxJQUFJLENBQUMsTUFBTSxHQUFHO2dCQUNmLGlCQUFpQixFQUFFLEtBQUssQ0FBQyxNQUFNLENBQUMsaUJBQWlCO2dCQUNqRCxzQkFBc0IsRUFBRSxLQUFLLENBQUMsTUFBTSxDQUFDLHNCQUFzQjtnQkFDM0QsT0FBTyxFQUFFLEtBQUssQ0FBQyxNQUFNLENBQUMsT0FBTztnQkFDN0IsTUFBTSxFQUFFLEtBQUssQ0FBQyxNQUFNLENBQUMsTUFBTTtnQkFDM0IsZ0JBQWdC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
package/cm/index.js ADDED
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Constants = exports.PlayerEffect = exports.Player = exports.BlockArgsHeadings = exports.Block = exports.BufferReader = exports.ComponentTypeHeader = exports.PWGameWorldHelper = void 0;
4
+ const tslib_1 = require("tslib");
5
+ var Helper_js_1 = require("./Helper.js");
6
+ Object.defineProperty(exports, "PWGameWorldHelper", { enumerable: true, get: function () { return tslib_1.__importDefault(Helper_js_1).default; } });
7
+ var BufferReader_js_1 = require("./BufferReader.js");
8
+ Object.defineProperty(exports, "ComponentTypeHeader", { enumerable: true, get: function () { return BufferReader_js_1.ComponentTypeHeader; } });
9
+ Object.defineProperty(exports, "BufferReader", { enumerable: true, get: function () { return tslib_1.__importDefault(BufferReader_js_1).default; } });
10
+ var Block_js_1 = require("./Block.js");
11
+ Object.defineProperty(exports, "Block", { enumerable: true, get: function () { return tslib_1.__importDefault(Block_js_1).default; } });
12
+ Object.defineProperty(exports, "BlockArgsHeadings", { enumerable: true, get: function () { return Block_js_1.BlockArgsHeadings; } });
13
+ var Player_js_1 = require("./Player.js");
14
+ Object.defineProperty(exports, "Player", { enumerable: true, get: function () { return tslib_1.__importDefault(Player_js_1).default; } });
15
+ Object.defineProperty(exports, "PlayerEffect", { enumerable: true, get: function () { return Player_js_1.PlayerEffect; } });
16
+ exports.Constants = tslib_1.__importStar(require("./Constants.js"));
17
+ // import * from "./Helper";
18
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9saWIvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUNBLHlDQUEyRDtBQUFsRCx1SUFBQSxPQUFPLE9BQXFCO0FBRXJDLHFEQUFpRjtBQUF4RSxzSEFBQSxtQkFBbUIsT0FBQTtBQUFFLHdJQUFBLE9BQU8sT0FBZ0I7QUFFckQsdUNBQWlFO0FBQXhELDBIQUFBLE9BQU8sT0FBUztBQUFFLDZHQUFBLGlCQUFpQixPQUFBO0FBRTVDLHlDQUF3SDtBQUEvRyw0SEFBQSxPQUFPLE9BQVU7QUFBRSx5R0FBQSxZQUFZLE9BQUE7QUFFeEMsb0VBQTRDO0FBRTVDLDRCQUE0QiJ9
package/esm/Block.d.ts ADDED
@@ -0,0 +1,117 @@
1
+ import { BlockNames } from "pw-js-api";
2
+ import type { BlockArg, Point, SendableBlockPacket } from "./types/index.js";
3
+ import BufferReader, { ComponentTypeHeader } from "./BufferReader.js";
4
+ import { LayerType } from "./Constants.js";
5
+ export default class Block {
6
+ bId: number;
7
+ args: BlockArg[];
8
+ constructor(bId: number | keyof typeof BlockNames, 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(blockId: number, reader: BufferReader, flag?: boolean): 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
+ /**
55
+ *
56
+ * @param pos List of points (X and Y)
57
+ */
58
+ toPacket(pos: Point[], layer: LayerType): SendableBlockPacket;
59
+ toPacket(x: number, y: number, layer: LayerType): SendableBlockPacket;
60
+ /**
61
+ * This will return the block name in UPPER_CASE form.
62
+ *
63
+ * For eg EFFECTS_INVULNERABILITY.
64
+ */
65
+ get name(): keyof typeof BlockNames;
66
+ /**
67
+ * Returns a copy of the block.
68
+ */
69
+ clone(obj?: false): Block;
70
+ clone(obj: true): {
71
+ bId: number;
72
+ args: BlockArg[];
73
+ name: string;
74
+ };
75
+ }
76
+ /**
77
+ * This mapping contains definitions of block data which require additional
78
+ * arguments to be sent or received with.
79
+ */
80
+ export declare const BlockArgsHeadings: {
81
+ readonly COIN_GOLD_DOOR: readonly [ComponentTypeHeader.Int32];
82
+ readonly COIN_BLUE_DOOR: readonly [ComponentTypeHeader.Int32];
83
+ readonly COIN_GOLD_GATE: readonly [ComponentTypeHeader.Int32];
84
+ readonly COIN_BLUE_GATE: readonly [ComponentTypeHeader.Int32];
85
+ readonly EFFECTS_JUMP_HEIGHT: readonly [ComponentTypeHeader.Int32];
86
+ readonly EFFECTS_FLY: readonly [ComponentTypeHeader.Boolean];
87
+ readonly EFFECTS_SPEED: readonly [ComponentTypeHeader.Int32];
88
+ readonly EFFECTS_INVULNERABILITY: readonly [ComponentTypeHeader.Boolean];
89
+ readonly EFFECTS_CURSE: readonly [ComponentTypeHeader.Int32];
90
+ readonly EFFECTS_ZOMBIE: readonly [ComponentTypeHeader.Int32];
91
+ readonly EFFECTS_GRAVITYFORCE: readonly [ComponentTypeHeader.Int32];
92
+ readonly EFFECTS_MULTI_JUMP: readonly [ComponentTypeHeader.Int32];
93
+ readonly TOOL_PORTAL_WORLD_SPAWN: readonly [ComponentTypeHeader.Int32];
94
+ readonly SIGN_NORMAL: readonly [ComponentTypeHeader.String];
95
+ readonly SIGN_RED: readonly [ComponentTypeHeader.String];
96
+ readonly SIGN_GREEN: readonly [ComponentTypeHeader.String];
97
+ readonly SIGN_BLUE: readonly [ComponentTypeHeader.String];
98
+ readonly SIGN_GOLD: readonly [ComponentTypeHeader.String];
99
+ readonly PORTAL: readonly [ComponentTypeHeader.Int32, ComponentTypeHeader.Int32, ComponentTypeHeader.Int32];
100
+ readonly PORTAL_INVISIBLE: readonly [ComponentTypeHeader.Int32, ComponentTypeHeader.Int32, ComponentTypeHeader.Int32];
101
+ readonly PORTAL_WORLD: readonly [ComponentTypeHeader.String, ComponentTypeHeader.Int32];
102
+ readonly SWITCH_LOCAL_TOGGLE: readonly [ComponentTypeHeader.Int32];
103
+ readonly SWITCH_LOCAL_ACTIVATOR: readonly [ComponentTypeHeader.Int32, ComponentTypeHeader.Boolean];
104
+ readonly SWITCH_LOCAL_RESETTER: readonly [ComponentTypeHeader.Boolean];
105
+ readonly SWITCH_LOCAL_DOOR: readonly [ComponentTypeHeader.Int32];
106
+ readonly SWITCH_LOCAL_GATE: readonly [ComponentTypeHeader.Int32];
107
+ readonly SWITCH_GLOBAL_TOGGLE: readonly [ComponentTypeHeader.Int32];
108
+ readonly SWITCH_GLOBAL_ACTIVATOR: readonly [ComponentTypeHeader.Int32, ComponentTypeHeader.Boolean];
109
+ readonly SWITCH_GLOBAL_RESETTER: readonly [ComponentTypeHeader.Boolean];
110
+ readonly SWITCH_GLOBAL_DOOR: readonly [ComponentTypeHeader.Int32];
111
+ readonly SWITCH_GLOBAL_GATE: readonly [ComponentTypeHeader.Int32];
112
+ readonly HAZARD_DEATH_DOOR: readonly [ComponentTypeHeader.Int32];
113
+ readonly HAZARD_DEATH_GATE: readonly [ComponentTypeHeader.Int32];
114
+ readonly NOTE_DRUM: readonly [ComponentTypeHeader.ByteArray];
115
+ readonly NOTE_PIANO: readonly [ComponentTypeHeader.ByteArray];
116
+ readonly NOTE_GUITAR: readonly [ComponentTypeHeader.ByteArray];
117
+ };
@@ -1,5 +1,5 @@
1
1
  import { BlockNames } from "pw-js-api";
2
- import BufferReader, { ComponentTypeHeader } from "./BufferReader";
2
+ import BufferReader, { ComponentTypeHeader } from "./BufferReader.js";
3
3
  export default class Block {
4
4
  constructor(bId, args) {
5
5
  this.args = [];
@@ -72,7 +72,7 @@ export default class Block {
72
72
  }
73
73
  const blockData = (_a = BlockArgsHeadings[BlockNames[bId]]) !== null && _a !== void 0 ? _a : [];
74
74
  for (let i = 0, len = blockData.length; i < len; i++) {
75
- const entry = BufferReader.Dynamic(i, args[i]);
75
+ const entry = BufferReader.Dynamic(blockData[i], args[i]);
76
76
  buffer.push(entry);
77
77
  }
78
78
  return Buffer.concat(buffer);
@@ -153,4 +153,4 @@ export const BlockArgsHeadings = {
153
153
  NOTE_PIANO: [ComponentTypeHeader.ByteArray],
154
154
  NOTE_GUITAR: [ComponentTypeHeader.ByteArray],
155
155
  };
156
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQmxvY2suanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9saWIvQmxvY2sudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUV2QyxPQUFPLFlBQVksRUFBRSxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFHbkUsTUFBTSxDQUFDLE9BQU8sT0FBTyxLQUFLO0lBSXRCLFlBQVksR0FBcUMsRUFBRSxJQUFpQjtRQUZwRSxTQUFJLEdBQWUsRUFBRSxDQUFDO1FBR2xCLElBQUksT0FBTyxHQUFHLEtBQUssUUFBUTtZQUFFLElBQUksQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDO2FBQ3ZDLENBQUM7WUFDRixJQUFJLENBQUMsR0FBRyxHQUFHLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUMvQixDQUFDO1FBRUQsSUFBSSxJQUFJO1lBQUUsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7SUFDL0IsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxPQUFPO1FBQ0gsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sS0FBSyxDQUFDLENBQUM7SUFDbEMsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNILE1BQU0sQ0FBQyxXQUFXLENBQUMsTUFBb0I7UUFDbkMsT0FBTyxJQUFJLEtBQUssQ0FBQyxNQUFNLENBQUMsWUFBWSxFQUFFLENBQUMsQ0FBQyxlQUFlLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDcEUsQ0FBQztJQUVTLGVBQWUsQ0FBQyxNQUFvQixFQUFFLElBQUksR0FBRyxLQUFLOztRQUN4RCxNQUFNLE1BQU0sR0FBMkIsaUJBQXlCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRTVFLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLE1BQUEsTUFBTSxhQUFOLE1BQU0sdUJBQU4sTUFBTSxDQUFFLE1BQU0sbUNBQUks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
156
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQmxvY2suanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9saWIvQmxvY2sudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUV2QyxPQUFPLFlBQVksRUFBRSxFQUFFLG1CQUFtQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFHdEUsTUFBTSxDQUFDLE9BQU8sT0FBTyxLQUFLO0lBSXRCLFlBQVksR0FBcUMsRUFBRSxJQUFpQjtRQUZwRSxTQUFJLEdBQWUsRUFBRSxDQUFDO1FBR2xCLElBQUksT0FBTyxHQUFHLEtBQUssUUFBUTtZQUFFLElBQUksQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDO2FBQ3ZDLENBQUM7WUFDRixJQUFJLENBQUMsR0FBRyxHQUFHLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUMvQixDQUFDO1FBRUQsSUFBSSxJQUFJO1lBQUUsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7SUFDL0IsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxPQUFPO1FBQ0gsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sS0FBSyxDQUFDLENBQUM7SUFDbEMsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNILE1BQU0sQ0FBQyxXQUFXLENBQUMsTUFBb0I7UUFDbkMsT0FBTyxJQUFJLEtBQUssQ0FBQyxNQUFNLENBQUMsWUFBWSxFQUFFLENBQUMsQ0FBQyxlQUFlLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDcEUsQ0FBQztJQUVTLGVBQWUsQ0FBQyxNQUFvQixFQUFFLElBQUksR0FBRyxLQUFLOztRQUN4RCxNQUFNLE1BQU0sR0FBMkIsaUJBQXlCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRTVFLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLE1BQUEsTUFBTSxhQUFOLE1BQU0sdUJBQU4sTUFBTSxDQUFFLE1BQU0sbUNBQUks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
@@ -0,0 +1,324 @@
1
+ /**
2
+ * CREDIT: Anatoly for making this Buffer Reader so I don't have to!
3
+ * Source: https://github.com/Anatoly03/pixelwalker.js/blob/9bb3c7e39a45006086a2abae8c515599bd3db835/src/util/buffer-reader.ts
4
+ * License: ISC
5
+ */
6
+ /**
7
+ * Data during the communication in the process is dynamic
8
+ * typed. Every entry is followed by a byte identifying the
9
+ * type, followed by data. The type header is noted by its'
10
+ * 7-bit notation.
11
+ */
12
+ export declare enum ComponentTypeHeader {
13
+ String = 0,
14
+ Byte = 1,
15
+ Int16 = 2,
16
+ Int32 = 3,
17
+ Int64 = 4,
18
+ Float = 5,
19
+ Double = 6,
20
+ Boolean = 7,
21
+ ByteArray = 8
22
+ }
23
+ /**
24
+ * A Buffer reader is a special buffer extension made to perform
25
+ * game-specific tasks in the field of communication.
26
+ *
27
+ * @implements Buffer
28
+ */
29
+ export default class BufferReader {
30
+ private buffer;
31
+ private offset;
32
+ /**
33
+ *
34
+ */
35
+ private constructor();
36
+ /**
37
+ *
38
+ */
39
+ static from(from: Uint8Array | Buffer): BufferReader;
40
+ /**
41
+ *
42
+ */
43
+ static alloc(amount: number): BufferReader;
44
+ /**
45
+ * @param {string} value
46
+ * @returns {Buffer}
47
+ */
48
+ static String(value?: string): Buffer;
49
+ /**
50
+ * @param {number} value
51
+ * @returns {Buffer}
52
+ */
53
+ static Byte(value?: number): Buffer;
54
+ /**
55
+ * @param {number} value
56
+ * @returns {Buffer}
57
+ */
58
+ static Int16(value?: number): Buffer;
59
+ /**
60
+ * @param {number} value
61
+ * @returns {Buffer}
62
+ */
63
+ static Int32(value?: number): Buffer;
64
+ /**
65
+ * @param {bigint} value
66
+ * @returns {Buffer}
67
+ */
68
+ static Int64(value?: bigint): Buffer;
69
+ /**
70
+ * @param {number} value
71
+ * @returns {Buffer}
72
+ */
73
+ static Float(value?: number): Buffer;
74
+ /**
75
+ * @param {number} value
76
+ * @returns {Buffer}
77
+ */
78
+ static Double(value?: number): Buffer;
79
+ /**
80
+ * @param {boolean} value
81
+ * @returns {Buffer}
82
+ */
83
+ static Boolean(value?: boolean): Buffer;
84
+ /**
85
+ * @param {Uint8Array} buffer
86
+ * @returns {Buffer}
87
+ */
88
+ static ByteArray(buffer?: Buffer): Buffer;
89
+ /**
90
+ * @param {number} value
91
+ * @returns {Buffer}
92
+ */
93
+ static Magic(value: number): Buffer;
94
+ /**
95
+ * @param {number} value
96
+ * @returns {Buffer}
97
+ */
98
+ static Bit7(value?: number): Buffer;
99
+ /**
100
+ * @param tt
101
+ * @param value
102
+ */
103
+ static Dynamic(tt: ComponentTypeHeader, value: boolean | number | bigint | string | Buffer): Buffer;
104
+ /**
105
+ *
106
+ */
107
+ get length(): number;
108
+ /**
109
+ *
110
+ */
111
+ subarray(start?: number, end?: number): BufferReader;
112
+ /**
113
+ *
114
+ */
115
+ write(value: string): number;
116
+ /**
117
+ *
118
+ */
119
+ writeBigInt64BE(value: bigint): number;
120
+ /**
121
+ *
122
+ */
123
+ writeBigInt64LE(value: bigint): number;
124
+ /**
125
+ *
126
+ */
127
+ writeUInt8(value: number): number;
128
+ /**
129
+ *
130
+ */
131
+ writeUInt16LE(value: number): number;
132
+ /**
133
+ *
134
+ */
135
+ writeUInt16BE(value: number): number;
136
+ /**
137
+ *
138
+ */
139
+ writeUInt32LE(value: number): number;
140
+ /**
141
+ *
142
+ */
143
+ writeUInt32BE(value: number): number;
144
+ /**
145
+ *
146
+ */
147
+ writeInt8(value: number): number;
148
+ /**
149
+ *
150
+ */
151
+ writeInt16LE(value: number): number;
152
+ /**
153
+ *
154
+ */
155
+ writeInt16BE(value: number): number;
156
+ /**
157
+ *
158
+ */
159
+ writeInt32LE(value: number): number;
160
+ /**
161
+ *
162
+ */
163
+ writeInt32BE(value: number): number;
164
+ /**
165
+ *
166
+ */
167
+ writeFloatLE(value: number): number;
168
+ /**
169
+ *
170
+ */
171
+ writeFloatBE(value: number): number;
172
+ /**
173
+ *
174
+ */
175
+ writeDoubleLE(value: number): number;
176
+ /**
177
+ *
178
+ */
179
+ writeDoubleBE(value: number): number;
180
+ /**
181
+ *
182
+ */
183
+ readBigUInt64BE(): bigint;
184
+ /**
185
+ *
186
+ */
187
+ readBigUInt64LE(): bigint;
188
+ /**
189
+ *
190
+ */
191
+ readBigInt64BE(): bigint;
192
+ /**
193
+ *
194
+ */
195
+ readBigInt64LE(): bigint;
196
+ /**
197
+ *
198
+ */
199
+ expectUInt8(value: number): number;
200
+ /**
201
+ *
202
+ */
203
+ readUInt8(): number;
204
+ /**
205
+ *
206
+ */
207
+ readUInt16LE(): number;
208
+ /**
209
+ *
210
+ */
211
+ readUInt16BE(): number;
212
+ /**
213
+ *
214
+ */
215
+ readUInt32LE(): number;
216
+ /**
217
+ *
218
+ */
219
+ readUInt32BE(): number;
220
+ /**
221
+ *
222
+ */
223
+ readInt8(): number;
224
+ /**
225
+ *
226
+ */
227
+ readInt16LE(): number;
228
+ /**
229
+ *
230
+ */
231
+ readInt16BE(): number;
232
+ /**
233
+ *
234
+ */
235
+ readInt32LE(): number;
236
+ /**
237
+ *
238
+ */
239
+ readInt32BE(): number;
240
+ /**
241
+ *
242
+ */
243
+ readFloatLE(): number;
244
+ /**
245
+ *
246
+ */
247
+ readFloatBE(): number;
248
+ /**
249
+ *
250
+ */
251
+ readDoubleLE(): number;
252
+ /**
253
+ *
254
+ */
255
+ readDoubleBE(): number;
256
+ read(tt: ComponentTypeHeader, littleEndian?: boolean): string | number | bigint | boolean | Buffer;
257
+ read(tt: ComponentTypeHeader.String, littleEndian?: boolean): string;
258
+ read(tt: ComponentTypeHeader.Byte, littleEndian?: boolean): number;
259
+ read(tt: ComponentTypeHeader.Int16, littleEndian?: boolean): number;
260
+ read(tt: ComponentTypeHeader.Int32, littleEndian?: boolean): number;
261
+ read(tt: ComponentTypeHeader.Int64, littleEndian?: boolean): bigint;
262
+ read(tt: ComponentTypeHeader.Float, littleEndian?: boolean): number;
263
+ read(tt: ComponentTypeHeader.Double, littleEndian?: boolean): number;
264
+ read(tt: ComponentTypeHeader.Boolean, littleEndian?: boolean): boolean;
265
+ read(tt: ComponentTypeHeader.ByteArray, littleEndian?: boolean): Buffer;
266
+ /**
267
+ *
268
+ */
269
+ toBuffer(): Buffer;
270
+ /**
271
+ * https://stackoverflow.com/questions/8609289/convert-a-binary-nodejs-buffer-to-javascript-arraybuffer
272
+ */
273
+ toArrayBuffer(): ArrayBuffer;
274
+ /**
275
+ *
276
+ */
277
+ at(idx: number): number;
278
+ /**
279
+ * Advanced the buffer reader by pffset.
280
+ */
281
+ advanceOffset(relativeOffset?: number): this;
282
+ /**
283
+ * This function reads how many bytes a normal integer would take
284
+ * as a 7-bit number
285
+ *
286
+ * 1(000 0001) 0(111 1110)
287
+ */
288
+ static length7BitInt(value: number): number;
289
+ /**
290
+ * Reads in an integer in 7-bit notation. A 7-bit integer
291
+ * encoding splits a number into a variable size of bits,
292
+ * in which the first bit is set while bytes are following.
293
+ *
294
+ * @example
295
+ *
296
+ * ```
297
+ * 1111 0000 1010 1010 1000 0000 0000 0001 Reading In
298
+ * ^--- ---- ^--- ---- ^--- ---- ^--- ----
299
+ * 111 0000 010 1010 000 0000 000 0001 Writing Out
300
+ * ```
301
+ */
302
+ read7BitInt(): number;
303
+ /**
304
+ * Write a normal integer value into buffer at offset.
305
+ */
306
+ write7BitInt(value: number): void;
307
+ /**
308
+ * Reads a dynamic buffer which is prepended by its' length
309
+ * in 7-bit encoding.
310
+ */
311
+ readDynamicBuffer(): Buffer<ArrayBufferLike>;
312
+ /**
313
+ * Append a buffer to the current buffer. Asserts the cursor
314
+ * to be at the end of the current buffer.
315
+ */
316
+ append(buffer: Buffer): this;
317
+ /**
318
+ * Keep Deserializing the buffer for typed data until
319
+ * you reach the end of the buffer. Typed data consists
320
+ * of a type indicator in 7-bit-encoding and data following
321
+ * accordingly.
322
+ */
323
+ deserialize(): (string | number | bigint | boolean | Buffer<ArrayBufferLike>)[];
324
+ }