mlogjs 0.5.1 → 0.6.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.
Files changed (79) hide show
  1. package/README.md +2 -2
  2. package/dist/{index.cjs → Compiler-7GMG4MDr.js} +1746 -452
  3. package/dist/Compiler.d.ts +8 -12
  4. package/dist/CompilerError.d.ts +13 -3
  5. package/dist/Scope.d.ts +8 -8
  6. package/dist/bin/files.d.ts +18 -0
  7. package/dist/bin.mjs +170 -0
  8. package/dist/handlers/Import.d.ts +5 -0
  9. package/dist/handlers/Literal.d.ts +2 -2
  10. package/dist/handlers/Typescript.d.ts +2 -2
  11. package/dist/handlers/index.d.ts +1 -0
  12. package/dist/index.mjs +3 -4267
  13. package/dist/instructions/AddressResolver.d.ts +4 -4
  14. package/dist/instructions/ControlInstructions.d.ts +3 -3
  15. package/dist/instructions/InstructionBase.d.ts +1 -0
  16. package/dist/instructions/JumpInstruction.d.ts +5 -5
  17. package/dist/instructions/index.d.ts +0 -1
  18. package/dist/macros/DynamicArray.d.ts +4 -4
  19. package/dist/macros/Function.d.ts +2 -2
  20. package/dist/macros/GetBuildings.d.ts +4 -0
  21. package/dist/macros/GetColor.d.ts +4 -0
  22. package/dist/macros/Marker.d.ts +4 -0
  23. package/dist/macros/Namespace.d.ts +16 -0
  24. package/dist/macros/Queries.d.ts +10 -0
  25. package/dist/macros/StringView.d.ts +4 -0
  26. package/dist/macros/commands/Effect.d.ts +4 -0
  27. package/dist/macros/commands/Format.d.ts +4 -0
  28. package/dist/macros/commands/LocalePrint.d.ts +4 -0
  29. package/dist/macros/commands/PlayMusic.d.ts +4 -0
  30. package/dist/macros/commands/PlaySound.d.ts +4 -0
  31. package/dist/macros/commands/PrintChar.d.ts +4 -0
  32. package/dist/macros/commands/Query.d.ts +4 -0
  33. package/dist/macros/commands/SetProp.d.ts +4 -0
  34. package/dist/macros/commands/SpawnBullet.d.ts +4 -0
  35. package/dist/macros/commands/Sync.d.ts +6 -0
  36. package/dist/macros/commands/UnpackColor.d.ts +4 -0
  37. package/dist/macros/commands/WeatherSense.d.ts +4 -0
  38. package/dist/macros/commands/WeatherSet.d.ts +4 -0
  39. package/dist/macros/commands/index.d.ts +13 -0
  40. package/dist/macros/index.d.ts +7 -1
  41. package/dist/macros/util.d.ts +5 -2
  42. package/dist/modules.d.ts +8 -0
  43. package/dist/operators.d.ts +1 -1
  44. package/dist/types.d.ts +84 -59
  45. package/dist/utils/constants.d.ts +9 -4
  46. package/dist/utils/general.d.ts +8 -9
  47. package/dist/utils/instruction.d.ts +5 -1
  48. package/dist/utils/value.d.ts +14 -5
  49. package/dist/values/AssignmentValue.d.ts +1 -1
  50. package/dist/values/BaseValue.d.ts +4 -2
  51. package/dist/values/DestructuringValue.d.ts +5 -7
  52. package/dist/values/FunctionValue.d.ts +8 -6
  53. package/dist/values/JumpOutValue.d.ts +4 -4
  54. package/dist/values/LazyValue.d.ts +3 -3
  55. package/dist/values/LiteralValue.d.ts +2 -3
  56. package/dist/values/ObjectValue.d.ts +6 -11
  57. package/dist/values/StoreValue.d.ts +10 -5
  58. package/dist/values/VoidValue.d.ts +2 -1
  59. package/dist/values/index.d.ts +0 -1
  60. package/lib/commands.d.ts +777 -729
  61. package/lib/eslib/lib.es2015.collection.d.ts +50 -39
  62. package/lib/eslib/lib.es2015.core.d.ts +59 -0
  63. package/lib/eslib/lib.es2015.d.ts +0 -3
  64. package/lib/eslib/lib.es2015.generator.d.ts +54 -53
  65. package/lib/eslib/lib.es2015.iterable.d.ts +9 -6
  66. package/lib/eslib/lib.es5.d.ts +53 -6
  67. package/lib/globals.d.ts +309 -18
  68. package/lib/helpers.d.ts +86 -52
  69. package/lib/kinds.d.ts +42 -7
  70. package/lib/macros.d.ts +53 -18
  71. package/lib/traits.d.ts +308 -146
  72. package/lib/util.d.ts +144 -48
  73. package/lib/world.d.ts +1197 -0
  74. package/package.json +27 -35
  75. package/dist/bin.cjs +0 -111
  76. package/dist/initScope.d.ts +0 -5
  77. package/dist/instructions/ZeroSpaceInstruction.d.ts +0 -4
  78. package/dist/values/SenseableValue.d.ts +0 -24
  79. /package/dist/{bin.d.ts → bin/index.d.ts} +0 -0
package/lib/macros.d.ts CHANGED
@@ -3,6 +3,9 @@
3
3
  type MemoryCapacity = 64 | 128 | 512;
4
4
  /**
5
5
  * Allows you to view and modify the data of memory cells and memory banks.
6
+ *
7
+ * @deprecated Use `MemoryView` instead. This class is only kept for backwards
8
+ * compatibility and will be removed in a future version.
6
9
  */
7
10
  declare class Memory<S extends MemoryCapacity = 64> {
8
11
  constructor(cell: BasicBuilding, size?: S);
@@ -10,12 +13,21 @@ declare class Memory<S extends MemoryCapacity = 64> {
10
13
  [Symbol.iterator](): IterableIterator<number>;
11
14
  [index: number]: number;
12
15
 
13
- /**
14
- * The practical length of the memory view.
15
- */
16
+ /** The practical length of the memory view. */
16
17
  readonly length: S;
17
18
  }
18
19
 
20
+ /** Allows you to view and modify the data of memory cells and memory banks. */
21
+ declare class MemoryView<T = number> {
22
+ constructor(cell: BasicBuilding, size?: number);
23
+
24
+ [Symbol.iterator](): IterableIterator<T>;
25
+ [index: number]: T;
26
+
27
+ /** The practical length of the memory view. */
28
+ readonly length: number;
29
+ }
30
+
19
31
  /**
20
32
  * Creates a mutable, dynamic access array, the length is constant.
21
33
  *
@@ -36,7 +48,8 @@ declare class MutableArray<T> {
36
48
  fill(value: T): void;
37
49
 
38
50
  /**
39
- * Returns the item at the given index. Negative indexes are relative to `this.size`.
51
+ * Returns the item at the given index. Negative indexes are relative to
52
+ * `this.size`.
40
53
  *
41
54
  * ```js
42
55
  * print(array.at(-1)); // equal to array[array.size - 1]
@@ -52,7 +65,8 @@ declare class MutableArray<T> {
52
65
 
53
66
  declare class DynamicArray<T> extends MutableArray<T> {
54
67
  /**
55
- * Creates an array with a predefined capacity that supports dynamic index accesses.
68
+ * Creates an array with a predefined capacity that supports dynamic index
69
+ * accesses.
56
70
  *
57
71
  * The array can contain any value assignable to a store.
58
72
  */
@@ -60,9 +74,11 @@ declare class DynamicArray<T> extends MutableArray<T> {
60
74
  constructor(length: number);
61
75
 
62
76
  /**
63
- * Sets the last item of the array to `undefined` and decreases its length by 1.
77
+ * Sets the last item of the array to `undefined` and decreases its length by
78
+ * 1.
64
79
  *
65
- * This method only generates the instructions for getting the value when needed.
80
+ * This method only generates the instructions for getting the value when
81
+ * needed.
66
82
  *
67
83
  * You can use `unchecked` to skip the bound check.
68
84
  *
@@ -92,14 +108,14 @@ declare class DynamicArray<T> extends MutableArray<T> {
92
108
  /**
93
109
  * Removes the item at the given index.
94
110
  *
95
- * This method only generates the instructions for getting the value when needed.
111
+ * This method only generates the instructions for getting the value when
112
+ * needed.
96
113
  *
97
114
  * The index must be within the range: [`0`, `this.length - 1`]
98
115
  *
99
116
  * You can use `unchecked` to skip the bound check.
100
117
  *
101
118
  * ```js
102
- *
103
119
  * let a = array.removeAt(i); // generates getter instructions
104
120
  * array.removeAt(i); // doesn't generate getter instructions
105
121
  *
@@ -110,7 +126,8 @@ declare class DynamicArray<T> extends MutableArray<T> {
110
126
  removeAt(index: number): T;
111
127
 
112
128
  /**
113
- * Returns the item at the given index. Negative indexes are relative to `this.length`.
129
+ * Returns the item at the given index. Negative indexes are relative to
130
+ * `this.length`.
114
131
  *
115
132
  * ```js
116
133
  * print(array.at(-1)); // equal to array[array.length - 1]
@@ -123,28 +140,46 @@ declare class DynamicArray<T> extends MutableArray<T> {
123
140
  }
124
141
 
125
142
  /**
126
- * A function that tells the compiler not to add
127
- * bound checking in the array accesses in the given expression.
143
+ * A function that tells the compiler not to add bound checking in the array
144
+ * accesses in the given expression.
128
145
  *
129
146
  * Only access that are computed inside the call are unchecked:
130
147
  *
131
148
  * ```js
132
149
  * // checked
133
- * const a = array[i]
150
+ * const a = array[i];
134
151
  * // unckecked
135
- * const b = unchecked(array[i])
152
+ * const b = unchecked(array[i]);
136
153
  *
137
154
  * // the array accesses inside `doSomething`
138
155
  * // are NOT unchecked
139
- * unchecked(doSomething(i))
156
+ * unchecked(doSomething(i));
140
157
  *
141
158
  * // only `array[i * 2]` is unchecked
142
- * const c = unchecked(doSomething(i) * array[i * 2])
159
+ * const c = unchecked(doSomething(i) * array[i * 2]);
143
160
  *
144
161
  * function doSomething(i) {
145
- * // will always be checked
146
- * return (array[i - 1] + array[i + 1]) / 2
162
+ * // will always be checked
163
+ * return (array[i - 1] + array[i + 1]) / 2;
147
164
  * }
148
165
  * ```
149
166
  */
150
167
  declare function unchecked<T>(expression: T): T;
168
+
169
+ /**
170
+ * A view of a string that allows indexed access to its characters.
171
+ *
172
+ * Each character is represented by its UTF-16 code unit.
173
+ */
174
+ declare class StringView {
175
+ /**
176
+ * Creates a view of the given string, allowing you to access its characters
177
+ * by index.
178
+ */
179
+ constructor(string: string);
180
+
181
+ [index: number]: number;
182
+
183
+ /** The length of the string. */
184
+ readonly length: number;
185
+ }
package/lib/traits.d.ts CHANGED
@@ -1,156 +1,318 @@
1
- import "./globals";
1
+ import { WithSymbols } from "mlogjs:types";
2
2
 
3
- type LogicSymbols = typeof Items & typeof Liquids & typeof LAccess;
3
+ declare global {
4
+ interface LiquidHolder extends WithSymbols<
5
+ {
6
+ readonly [L in keyof typeof Liquids]: number;
7
+ } & {
8
+ readonly totalLiquids: number;
9
+ readonly liquidCapacity: number;
10
+ }
11
+ > {}
4
12
 
5
- type WithSymbols<T extends Record<string, unknown>> = T & {
6
- readonly [K in keyof (LogicSymbols | T) as LogicSymbols[K]]: T[K];
7
- };
13
+ interface ItemHolder extends WithSymbols<
14
+ {
15
+ readonly [I in keyof typeof Items]: number;
16
+ } & {
17
+ readonly totalItems: number;
18
+ readonly firstItem?: ItemSymbol;
19
+ readonly itemCapacity: number;
20
+ }
21
+ > {}
8
22
 
9
- declare global {
10
- interface LiquidHolder
11
- extends WithSymbols<
12
- {
13
- readonly [L in keyof typeof Liquids]: number;
14
- } & {
15
- readonly totalLiquids: number;
16
- readonly liquidCapacity: number;
17
- }
18
- > {}
19
-
20
- interface ItemHolder
21
- extends WithSymbols<
22
- {
23
- readonly [I in keyof typeof Items]: number;
24
- } & {
25
- readonly totalItems: number;
26
- readonly firstItem?: ItemSymbol;
27
- readonly itemCapacity: number;
28
- }
29
- > {}
30
-
31
- interface PowerHolder
32
- extends WithSymbols<{
33
- readonly totalPower: number;
34
- readonly powerCapacity: number;
35
- readonly powerNetStored: number;
36
- readonly powerNetCapacity: number;
37
- readonly powerNetIn: number;
38
- readonly powerNetOut: number;
39
- }> {}
23
+ interface PowerHolder extends WithSymbols<{
24
+ /** The amount of power stored in this building. */
25
+ readonly totalPower: number;
26
+ /** The maximum amount of power this building can hold. */
27
+ readonly powerCapacity: number;
28
+ /**
29
+ * The amount of power stored in the power net that is this building is a
30
+ * part of.
31
+ */
32
+ readonly powerNetStored: number;
33
+ /**
34
+ * The maximum amount of power that can be stored in the power net that is
35
+ * this building is a part of.
36
+ */
37
+ readonly powerNetCapacity: number;
38
+ /**
39
+ * How much power is being generated in the power net that is this building
40
+ * is a part of.
41
+ */
42
+ readonly powerNetIn: number;
43
+ /**
44
+ * How much power is being spent in the power net that is this building is a
45
+ * part of.
46
+ */
47
+ readonly powerNetOut: number;
48
+ }> {}
49
+
50
+ interface WithAim extends WithSymbols<{
51
+ readonly shootX: number;
52
+ readonly shootY: number;
53
+ }> {}
40
54
 
41
55
  interface Shooting
42
- extends WithSymbols<{
43
- readonly shooting: boolean;
44
- readonly shootX: number;
45
- readonly shootY: number;
46
- readonly ammo: number;
47
- readonly ammoCapacity: number;
48
- }> {}
49
-
50
- interface WithHealth
51
- extends WithSymbols<{
52
- readonly health: number;
53
- readonly maxHealth: number;
54
- readonly dead: boolean;
55
- }> {}
56
-
57
- interface Heatable
58
- extends WithSymbols<{
59
- readonly heat: number;
60
- }> {}
61
-
62
- interface WithEffiency
63
- extends WithSymbols<{
64
- readonly efficiency: number;
65
- }> {}
66
-
67
- interface WithProgress
68
- extends WithSymbols<{
69
- readonly progress: number;
70
- }> {}
71
-
72
- interface WithTimescale
73
- extends WithSymbols<{
74
- readonly timescale: number;
75
- }> {}
76
-
77
- interface Rotatable
78
- extends WithSymbols<{
79
- readonly rotation: number;
80
- }> {}
81
-
82
- interface Spaced
83
- extends WithSymbols<{
84
- readonly x: number;
85
- readonly y: number;
86
- readonly size: number;
87
- }> {}
88
-
89
- interface Ranged
90
- extends WithSymbols<{
91
- readonly range: number;
92
- }> {}
93
-
94
- interface Boosted
95
- extends WithSymbols<{
96
- readonly boosting: boolean;
97
- }> {}
98
-
99
- interface Mining
100
- extends WithSymbols<{
101
- readonly mineX: number;
102
- readonly mineY: number;
103
- readonly mining: number;
104
- }> {}
105
-
106
- interface Typed<T extends symbol = symbol>
107
- extends WithSymbols<{
108
- readonly type: T;
109
- }> {}
110
- interface Flagged
111
- extends WithSymbols<{
112
- readonly flag: number;
113
- }> {}
114
-
115
- interface Controllable
116
- extends WithSymbols<{
117
- readonly controlled: 0 | ControlKind;
118
- readonly controller: AnyUnit | BasicBuilding;
119
- }> {}
120
-
121
- interface Nameable
122
- extends WithSymbols<{
123
- readonly name?: string;
124
- }> {}
125
-
126
- interface PayloadHolder
127
- extends WithSymbols<{
56
+ extends
57
+ WithAim,
58
+ WithSymbols<{
59
+ readonly shooting: boolean;
60
+ readonly ammo: number;
61
+ readonly ammoCapacity: number;
62
+ readonly currentAmmoType?: ItemSymbol | LiquidSymbol;
63
+ }> {}
64
+
65
+ interface WithHealth extends WithSymbols<{
66
+ readonly health: number;
67
+ readonly maxHealth: number;
68
+ readonly dead: boolean;
69
+ }> {}
70
+
71
+ interface Heatable extends WithSymbols<{
72
+ /**
73
+ * Can mean:
74
+ *
75
+ * - The damage buildup in the force field of force projectors. This buildup
76
+ * decreases over time as the force projector regenerates.
77
+ * - The warmup progress of impact reactors, in the range: [0, 1].
78
+ * - The heat of a thorium reactor, in the range: [0, 1].
79
+ */
80
+ readonly heat: number;
81
+ }> {}
82
+
83
+ interface WithShield extends WithSymbols<{
84
+ /**
85
+ * The amount of shield hp `this` has.
86
+ *
87
+ * If `this` has a force field, returns the force field's hp.
88
+ *
89
+ * Or else, if `this` is an unit, returns the hp of this unit's personal
90
+ * shield, which is as one given by a `pulsar`.
91
+ */
92
+ readonly shield: number;
93
+ }> {}
94
+
95
+ interface WithEffiency extends WithSymbols<{
96
+ readonly efficiency: number;
97
+ }> {}
98
+
99
+ interface WithProgress extends WithSymbols<{
100
+ /**
101
+ * Action progress, in the range: [0, 1].
102
+ *
103
+ * Returns the production, turret reload or construction progress.
104
+ */
105
+ readonly progress: number;
106
+ }> {}
107
+
108
+ interface WithTimescale extends WithSymbols<{
109
+ /**
110
+ * The speed boost applied to this building by, for example, an overdrive
111
+ * projector.
112
+ */
113
+ readonly timescale: number;
114
+ }> {}
115
+
116
+ interface Rotatable extends WithSymbols<{
117
+ /**
118
+ * The rotation of this entity.
119
+ *
120
+ * Most buildings have their rotation represented by an integer within the
121
+ * range [0, 3]. With each meaning:
122
+ *
123
+ * - 0 => right
124
+ * - 1 => up
125
+ * - 2 => left
126
+ * - 3 => down
127
+ *
128
+ * While units and some other buildings (like turrets) will have their
129
+ * rotation represented in degrees stored in a floating point number.
130
+ */
131
+ readonly rotation: number;
132
+ }> {}
133
+
134
+ interface Spaced extends WithSymbols<{
135
+ readonly x: number;
136
+ readonly y: number;
137
+ readonly size: number;
138
+ }> {}
139
+
140
+ interface Ranged extends WithSymbols<{
141
+ readonly range: number;
142
+ }> {}
143
+
144
+ interface Boosted extends WithSymbols<{
145
+ readonly boosting: boolean;
146
+ }> {}
147
+
148
+ interface Mining extends WithSymbols<{
149
+ readonly mineX: number;
150
+ readonly mineY: number;
151
+ readonly mining: number;
152
+ }> {}
153
+
154
+ interface Typed<T extends symbol = symbol> extends WithSymbols<{
155
+ readonly type: T;
156
+ }> {}
157
+ interface Flagged extends WithSymbols<{
158
+ readonly flag: number;
159
+ }> {}
160
+
161
+ interface Controlled extends WithSymbols<{
162
+ /**
163
+ * The type of control that is being applied to `this`.
164
+ *
165
+ * If `this` is a building:
166
+ *
167
+ * - `ControlKind.ctrlPlayer` if a player is controlling `this`.
168
+ * - `0` otherwise.
169
+ *
170
+ * If `this` is an unit:
171
+ *
172
+ * - `ControlKind.ctrlProcessor` if `this` is being controlled by a processor.
173
+ * - `ControlKind.ctrlPlayer` if `this` is being controlled directly by a
174
+ * player.
175
+ * - `ControlKind.ctrlCommand` if `this` is being controlled by player
176
+ * commands.
177
+ * - `0` otherwise.
178
+ */
179
+ readonly controlled: 0 | ControlKind;
180
+ }> {}
181
+
182
+ interface WithController extends WithSymbols<{
183
+ /**
184
+ * The entity controlling this unit. Is either a player, a processor or
185
+ * `this`.
186
+ */
187
+ readonly controller: AnyUnit | BasicBuilding;
188
+ }> {}
189
+
190
+ interface Nameable extends WithSymbols<{
191
+ /** The name of the player controlling this unit. */
192
+ readonly name?: string;
193
+ }> {}
194
+
195
+ interface PayloadHolder extends WithSymbols<
196
+ {
197
+ readonly [T in UnitSymbol | BlockSymbol]: number;
198
+ } & {
128
199
  readonly payloadCount: number;
129
- readonly payloadType?: symbol;
130
- }> {}
200
+ readonly payloadType?: UnitSymbol | BlockSymbol;
201
+ readonly totalPayload: number;
202
+ readonly payloadCapacity: number;
203
+ }
204
+ > {}
131
205
 
132
- interface WithEnable
133
- extends WithSymbols<{
134
- enabled: boolean;
135
- }> {}
206
+ interface WithEnable extends WithSymbols<{
207
+ readonly enabled: boolean;
208
+ }> {}
136
209
  interface WithConfig<
137
- T extends symbol | number | undefined = symbol | undefined
210
+ T extends symbol | number | undefined = symbol | undefined,
138
211
  > extends WithSymbols<{
139
- readonly config: T;
140
- }> {}
141
-
142
- interface WithSpeed
143
- extends WithSymbols<{
144
- speed: number;
145
- }> {}
146
-
147
- interface WithColor
148
- extends WithSymbols<{
149
- color: number;
150
- }> {}
151
-
152
- interface WithTeam
153
- extends WithSymbols<{
154
- team: number;
155
- }> {}
212
+ readonly config: T;
213
+ }> {}
214
+
215
+ interface WithSpeed extends WithSymbols<{
216
+ /** The base movement speed of this unit. Measured in tiles/second. */
217
+ readonly speed: number;
218
+ }> {}
219
+
220
+ interface WithColor extends WithSymbols<{
221
+ /**
222
+ * Can be:
223
+ *
224
+ * - Color of the `this`, if it is an illuminator.
225
+ * - Color of the team of `this`.
226
+ */
227
+ readonly color: number;
228
+ }> {}
229
+
230
+ interface WithTeam extends WithSymbols<{
231
+ /** The team id of `this`. */
232
+ readonly team: number;
233
+ }> {}
234
+
235
+ interface WithArmor extends WithSymbols<{
236
+ readonly armor: number;
237
+ }> {}
238
+
239
+ interface WithCamera extends WithSymbols<{
240
+ /**
241
+ * The player camera X coordinate. Privileged (world) processors only;
242
+ * evaluates to null on standard processors.
243
+ */
244
+ readonly cameraX: number;
245
+ /**
246
+ * The player camera Y coordinate. Privileged (world) processors only;
247
+ * evaluates to null on standard processors.
248
+ */
249
+ readonly cameraY: number;
250
+ /**
251
+ * The player camera viewport width. Privileged (world) processors only;
252
+ * evaluates to null on standard processors.
253
+ */
254
+ readonly cameraWidth: number;
255
+ /**
256
+ * The player camera viewport height. Privileged (world) processors only;
257
+ * evaluates to null on standard processors.
258
+ */
259
+ readonly cameraHeight: number;
260
+ }> {}
261
+
262
+ interface WithDisplay extends WithSymbols<{
263
+ readonly displayHeight: number;
264
+ readonly displayWidth: number;
265
+ }> {}
266
+
267
+ interface WithMemory extends WithSymbols<{
268
+ readonly memoryCapacity: number;
269
+ }> {}
270
+
271
+ interface WithBufferSize extends WithSymbols<{
272
+ readonly bufferSize: number;
273
+ }> {}
274
+
275
+ interface WithSolid extends WithSymbols<{
276
+ readonly solid: boolean;
277
+ }> {}
278
+
279
+ interface WithVelocity extends WithSymbols<{
280
+ readonly velocityX: number;
281
+ readonly velocityY: number;
282
+ }> {}
283
+
284
+ interface WithOperations extends WithSymbols<{
285
+ readonly operations: number;
286
+ }> {}
287
+
288
+ interface WithPing extends WithSymbols<{
289
+ readonly pingX: number;
290
+ readonly pingY: number;
291
+ readonly pingText?: string;
292
+ }> {}
293
+
294
+ interface WithSelected extends WithSymbols<{
295
+ readonly selectedBlock?: BlockSymbol;
296
+ readonly selectedRotation: number;
297
+ }> {}
298
+
299
+ interface WithBulletTime extends WithSymbols<{
300
+ readonly bulletLifetime: number;
301
+ readonly bulletTime: number;
302
+ }> {}
303
+
304
+ interface WithBuild extends WithSymbols<{
305
+ readonly buildX: number;
306
+ readonly buildY: number;
307
+ readonly building?: BasicBuilding;
308
+ readonly breaking?: BasicBuilding;
309
+ }> {}
310
+
311
+ interface Flying extends WithSymbols<{
312
+ readonly flying: boolean;
313
+ }> {}
314
+
315
+ interface WithMaxUnits extends WithSymbols<{
316
+ readonly maxUnits?: number;
317
+ }> {}
156
318
  }