@moku-labs/game 0.0.2 → 0.1.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/README.md +107 -31
- package/dist/assets.d.mts +58 -6
- package/dist/assets.mjs +1630 -234
- package/dist/commands-C0BljsM5.d.mts +99 -0
- package/dist/control.d.mts +3 -92
- package/dist/control.mjs +3 -757
- package/dist/define-CjP_4H0G.d.mts +51 -0
- package/dist/{registry-DlpRCibU.mjs → dev-CcwFrwok.mjs} +30 -1
- package/dist/index.d.mts +362 -303
- package/dist/index.mjs +12717 -6654
- package/dist/inspect.d.mts +10 -8
- package/dist/inspect.mjs +2 -518
- package/dist/jsx-dev-runtime.d.mts +1 -1
- package/dist/jsx-runtime.d.mts +1 -1
- package/dist/{rolldown-runtime-D7D4PA-g.mjs → rolldown-runtime-8H4AJuhK.mjs} +1 -0
- package/dist/run-tlcn1w7y.mjs +944 -0
- package/dist/{runtime-DiOTkDZz.d.mts → runtime-Bn5TXNxP.d.mts} +1 -1
- package/dist/sources-BooL2MsX.mjs +545 -0
- package/dist/testing.d.mts +328 -3
- package/dist/testing.mjs +2126 -2
- package/dist/types-BZ1OLf24.d.mts +5999 -0
- package/dist/{types-DWILGrPn.d.mts → types-C47fKNcn.d.mts} +93 -20
- package/dist/types-CqkrEY06.d.mts +1734 -0
- package/dist/types-CxZy7Pi4.d.mts +1210 -0
- package/dist/{define-sFoO3y6X.d.mts → types-DmhTHRVW.d.mts} +180 -51
- package/dist/{types-yg_ywtT-.d.mts → types-X9jXjka3.d.mts} +230 -31
- package/dist/{visual-BDUHSRvf.mjs → visual-NPrDkvUk.mjs} +19 -13
- package/package.json +22 -2
- package/dist/headless-CvamCUcR.mjs +0 -186
- package/dist/headless-KaSWcd0s.d.mts +0 -181
- package/dist/types-BxkNNYul.d.mts +0 -2840
- package/dist/types-CTPS9GBu.d.mts +0 -742
- package/dist/types-DD-QrG_z.d.mts +0 -588
- package/dist/types-DYLnSgMI.d.mts +0 -570
- package/dist/types-JNc_UQBo.d.mts +0 -2896
package/dist/index.d.mts
CHANGED
|
@@ -1,16 +1,17 @@
|
|
|
1
|
-
import { $ as
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import { A as
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
1
|
+
import { $t as types_d_exports$3, At as Json, B as Mut, Bt as StoreApi, Ct as Config$6, D as ProjectionMotion, E as NumericFields, Et as types_d_exports$14, F as ComponentHandle, G as SystemDefinition, Gt as Events, I as ComponentType, J as BundlesOf, Jt as types_d_exports$8, K as TagType, Kt as PauseReason, L as ComponentValue, Mt as State$4, Nt as types_d_exports$9, O as ProjectionSpec, Ot as Config$4, Pt as Patch, Q as GameTypes, Qt as State$1, Rt as SaveUnreadableError, St as Api$4, U as QueryTerm, Ut as Api$2, V as Narrowed, Vt as RngApi, W as ResourceType, Wt as Config$3, X as EmitterIdOf, Xt as Config$1, Y as Config$2, Yt as Api, Z as FeaturePlugin, _ as State$7, at as slot, b as DescriptionNode, bt as Hint, c as types_d_exports$11, ct as FeatureDescription, en as Config$8, et as State$2, g as Config$7, gt as SceneIdOf, h as Api$5, it as exit, jt as Root, m as ViewportSize, n as Config$5, nn as Require, nt as types_d_exports$5, ot as to, q as Api$1, qt as State$3, rt as defineFlow, s as State$5, st as type, t as Api$3, tn as Events$1, tt as TextStylesOf, ut as DefineNode, v as types_d_exports$16, vt as Descriptor, wt as State$6, x as Ease, yt as GuideOptions } from "./types-BZ1OLf24.mjs";
|
|
2
|
+
import { a as DefineBundles, c as LoadReason, d as Tier, i as Config$9, n as BundleMap, p as types_d_exports$1, r as BundleSpec, s as LoadBundles, t as Api$6, u as State$8 } from "./types-C47fKNcn.mjs";
|
|
3
|
+
import { A as Transform, B as types_d_exports$6, C as NineSliceValue, D as Sprite, E as ShapeValue, H as InputApi, I as I18nApi, L as Message, M as sprite, N as Argument, O as SpriteOptions, P as Config$10, R as State$9, S as NineSlice, T as Shape, U as State$10, V as Config$11, W as types_d_exports$7, _ as Style, b as defineComponent, d as popup, f as defineTokens, g as ResolvedStyle, h as IsFlags, j as TransformValue, k as SpriteValue, l as Box, p as IntrinsicElementsFor, s as PopupComponent, u as LocalWrite, w as Parent, x as Display, y as WhenFlags, z as TypedTr } from "./types-X9jXjka3.mjs";
|
|
4
|
+
import { A as UiApi, C as spawned, D as wait, E as use, F as TextApi, I as TextStyleInput, L as TextStyles, M as Config$13, N as Point, O as Config$14, P as State$12, R as TextValue, S as spawn, T as tween, _ as parallel, a as State$11, b as set, c as HapticKind, d as HAPTIC_KINDS, f as defineAnimation, g as mark, h as haptic, i as MotionKeyframe, j as types_d_exports$15, k as State$13, l as SfxDescriptor, m as frames, n as Config$12, o as Target, p as external, r as FramesValue, s as types_d_exports, t as AnimApi, u as Step, v as play, w as stagger, x as sfx, y as sequence, z as types_d_exports$13 } from "./types-CqkrEY06.mjs";
|
|
5
|
+
import { A as FilterValueOf, C as EmitterValue, D as DisplacementValue, E as ColorMatrixValue, M as NoiseValue, N as OutlineValue, O as FilterComponent, P as UniformDeclaration, S as EmitterDefinition, T as BlurValue, _ as EffectsApi, b as types_d_exports$4, c as AnySceneProjection, d as SceneDefinition, f as SceneSpec, g as Config$16, h as types_d_exports$12, i as MusicOptions, j as GlowValue, k as FilterSpec, l as DefineScene, m as State$16, n as Config$15, o as State$14, p as ScenesApi, r as MusicDescriptor, s as types_d_exports$2, t as AudioApi, u as LayerMap, w as AlphaValue, x as EmitterConfig, y as State$15 } from "./types-CxZy7Pi4.mjs";
|
|
6
|
+
import { Log } from "@moku-labs/common/browser";
|
|
7
|
+
import { PluginCtx } from "@moku-labs/core";
|
|
8
8
|
|
|
9
9
|
//#region src/plugins/text/components.d.ts
|
|
10
10
|
/**
|
|
11
11
|
* Words on the screen: a string or a message, the style it is drawn in, and the string `text`
|
|
12
|
-
* resolved out of it. A game writes `content`, `style`, `bind` and `
|
|
13
|
-
* engine-owned and `ui` and the tests read it.
|
|
12
|
+
* resolved out of it. A game writes `content`, `style`, `bind`, `anchor` and `alpha`; `resolved`
|
|
13
|
+
* is engine-owned and `ui` and the tests read it. `alpha` (1 by default) fades the whole block and
|
|
14
|
+
* is patched in place, so a tween on it rebuilds nothing.
|
|
14
15
|
*/
|
|
15
16
|
declare const Text: ComponentType<TextValue>;
|
|
16
17
|
/**
|
|
@@ -37,7 +38,7 @@ type LabelOptions = {
|
|
|
37
38
|
* ```ts
|
|
38
39
|
* label({ text: "+5", style: "board.float", at: { x: 90, y: 180 } });
|
|
39
40
|
* // [Text({ content: "+5", style: "board.float", bind: undefined,
|
|
40
|
-
* // anchor: { x: 0.5, y: 0.5 }, resolved: "" }),
|
|
41
|
+
* // anchor: { x: 0.5, y: 0.5 }, alpha: 1, resolved: "" }),
|
|
41
42
|
* // Transform({ x: 90, y: 180, rotation: 0, scale: 1 })]
|
|
42
43
|
* ```
|
|
43
44
|
*/
|
|
@@ -112,7 +113,7 @@ type ProjectionFor<Player, Session> = <const LayerName extends string, const Lif
|
|
|
112
113
|
* app.anim.play(coinsFly, { from: purse, to: counter }).marks(); // []: the first frame is next
|
|
113
114
|
* ```
|
|
114
115
|
*/
|
|
115
|
-
declare const animPlugin: import("@moku-labs/core").PluginInstance<"anim", Config$
|
|
116
|
+
declare const animPlugin: import("@moku-labs/core").PluginInstance<"anim", Config$12, State$11, AnimApi, {
|
|
116
117
|
"anim:mark": {
|
|
117
118
|
animation: string;
|
|
118
119
|
mark: string;
|
|
@@ -138,7 +139,7 @@ declare const animPlugin: import("@moku-labs/core").PluginInstance<"anim", Confi
|
|
|
138
139
|
* app.assets.usage().textureMb; // 0.188, the boot tier
|
|
139
140
|
* ```
|
|
140
141
|
*/
|
|
141
|
-
declare const assetsPlugin: import("@moku-labs/core").PluginInstance<"assets", Config$
|
|
142
|
+
declare const assetsPlugin: import("@moku-labs/core").PluginInstance<"assets", Config$9, State$8, Api$6, {
|
|
142
143
|
"assets:bundle-loaded": {
|
|
143
144
|
bundle: string;
|
|
144
145
|
tier: Tier;
|
|
@@ -173,7 +174,7 @@ declare const assetsPlugin: import("@moku-labs/core").PluginInstance<"assets", C
|
|
|
173
174
|
* });
|
|
174
175
|
* ```
|
|
175
176
|
*/
|
|
176
|
-
declare const audioPlugin: import("@moku-labs/core").PluginInstance<"audio", Config$
|
|
177
|
+
declare const audioPlugin: import("@moku-labs/core").PluginInstance<"audio", Config$15, State$14, AudioApi, {}> & Record<never, never>;
|
|
177
178
|
//#endregion
|
|
178
179
|
//#region src/plugins/clock/index.d.ts
|
|
179
180
|
/**
|
|
@@ -188,7 +189,24 @@ declare const audioPlugin: import("@moku-labs/core").PluginInstance<"audio", Con
|
|
|
188
189
|
* });
|
|
189
190
|
* ```
|
|
190
191
|
*/
|
|
191
|
-
declare const clockPlugin: import("@moku-labs/core").PluginInstance<"clock", Config, State, Api, {}> & Record<never, never>;
|
|
192
|
+
declare const clockPlugin: import("@moku-labs/core").PluginInstance<"clock", Config$1, State$1, Api, {}> & Record<never, never>;
|
|
193
|
+
//#endregion
|
|
194
|
+
//#region src/plugins/effects/index.d.ts
|
|
195
|
+
/**
|
|
196
|
+
* Effects plugin: `app.effects.stats()`; the `Emitter` component and every filter component do
|
|
197
|
+
* the rest as data on entities.
|
|
198
|
+
*
|
|
199
|
+
* @example
|
|
200
|
+
* ```ts
|
|
201
|
+
* // A game composes it next to the screen set; its features bring the emitters and filters.
|
|
202
|
+
* const app = createApp({
|
|
203
|
+
* plugins: [...screen, effectsPlugin, boardFeature],
|
|
204
|
+
* pluginConfigs: { renderer: { mount: "#game" }, effects: { maxPasses: 16 } }
|
|
205
|
+
* });
|
|
206
|
+
* app.effects.stats(); // { particles: 0, emitters: 0, filters: 0, renderPasses: 0 }: nothing runs before start
|
|
207
|
+
* ```
|
|
208
|
+
*/
|
|
209
|
+
declare const effectsPlugin: import("@moku-labs/core").PluginInstance<"effects", Config$16, State$15, EffectsApi, {}> & Record<never, never>;
|
|
192
210
|
//#endregion
|
|
193
211
|
//#region src/plugins/flow/index.d.ts
|
|
194
212
|
/**
|
|
@@ -205,7 +223,7 @@ declare const clockPlugin: import("@moku-labs/core").PluginInstance<"clock", Con
|
|
|
205
223
|
* });
|
|
206
224
|
* ```
|
|
207
225
|
*/
|
|
208
|
-
declare const flowPlugin: import("@moku-labs/core").PluginInstance<"flow", Config$
|
|
226
|
+
declare const flowPlugin: import("@moku-labs/core").PluginInstance<"flow", Config$2, State$2, Api$1, {
|
|
209
227
|
"flow:edge": {
|
|
210
228
|
flow: string;
|
|
211
229
|
node: string;
|
|
@@ -246,7 +264,7 @@ declare const flowPlugin: import("@moku-labs/core").PluginInstance<"flow", Confi
|
|
|
246
264
|
* await app.i18n.setLocale("en"); // text re-resolves every message on i18n:locale-changed
|
|
247
265
|
* ```
|
|
248
266
|
*/
|
|
249
|
-
declare const i18nPlugin: import("@moku-labs/core").PluginInstance<"i18n", Config$
|
|
267
|
+
declare const i18nPlugin: import("@moku-labs/core").PluginInstance<"i18n", Config$10, State$9, I18nApi, {
|
|
250
268
|
"i18n:locale-changed": {
|
|
251
269
|
locale: string;
|
|
252
270
|
};
|
|
@@ -271,7 +289,7 @@ declare const i18nPlugin: import("@moku-labs/core").PluginInstance<"i18n", Confi
|
|
|
271
289
|
* });
|
|
272
290
|
* ```
|
|
273
291
|
*/
|
|
274
|
-
declare const inputPlugin: import("@moku-labs/core").PluginInstance<"input", Config$
|
|
292
|
+
declare const inputPlugin: import("@moku-labs/core").PluginInstance<"input", Config$11, State$10, InputApi, {}> & Record<never, never>;
|
|
275
293
|
//#endregion
|
|
276
294
|
//#region src/plugins/lifecycle/index.d.ts
|
|
277
295
|
/**
|
|
@@ -286,7 +304,7 @@ declare const inputPlugin: import("@moku-labs/core").PluginInstance<"input", Con
|
|
|
286
304
|
* });
|
|
287
305
|
* ```
|
|
288
306
|
*/
|
|
289
|
-
declare const lifecyclePlugin: import("@moku-labs/core").PluginInstance<"lifecycle", Config$
|
|
307
|
+
declare const lifecyclePlugin: import("@moku-labs/core").PluginInstance<"lifecycle", Config$3, State$3, Api$2, {
|
|
290
308
|
"lifecycle:changed": {
|
|
291
309
|
reason: PauseReason;
|
|
292
310
|
action: "push" | "pop";
|
|
@@ -311,7 +329,7 @@ declare const lifecyclePlugin: import("@moku-labs/core").PluginInstance<"lifecyc
|
|
|
311
329
|
* });
|
|
312
330
|
* ```
|
|
313
331
|
*/
|
|
314
|
-
declare const modelPlugin: import("@moku-labs/core").PluginInstance<"model", Config$
|
|
332
|
+
declare const modelPlugin: import("@moku-labs/core").PluginInstance<"model", Config$4, State$4, {
|
|
315
333
|
store: StoreApi;
|
|
316
334
|
rng: RngApi;
|
|
317
335
|
}, {
|
|
@@ -320,6 +338,141 @@ declare const modelPlugin: import("@moku-labs/core").PluginInstance<"model", Con
|
|
|
320
338
|
cause: "edge" | "rollback" | "restore" | "load";
|
|
321
339
|
};
|
|
322
340
|
}> & Record<never, never>;
|
|
341
|
+
declare namespace types_d_exports$10 {
|
|
342
|
+
export { BackResult, Config, HapticKind, KernelSlice, LifecycleChanged, PlatformApi, PlatformProvider, ProviderMethod, State };
|
|
343
|
+
}
|
|
344
|
+
/**
|
|
345
|
+
* The seam a game fills, usually from `@moku-labs/system` in its own bridge. The engine never
|
|
346
|
+
* imports a native package: the provider is built in the application layer. Every `on*` returns
|
|
347
|
+
* its remover, which the plugin calls on stop.
|
|
348
|
+
*
|
|
349
|
+
* @example
|
|
350
|
+
* ```ts
|
|
351
|
+
* // A headless test drives the plugin with a fake of six functions.
|
|
352
|
+
* const ticks: string[] = [];
|
|
353
|
+
* const provider: PlatformProvider = {
|
|
354
|
+
* onPause: () => () => undefined,
|
|
355
|
+
* onResume: () => () => undefined,
|
|
356
|
+
* onBack: () => () => undefined,
|
|
357
|
+
* haptic: kind => ticks.push(kind),
|
|
358
|
+
* keepAwake: () => undefined,
|
|
359
|
+
* exit: () => undefined
|
|
360
|
+
* };
|
|
361
|
+
* createApp({ plugins: [...screen, platformPlugin], pluginConfigs: { platform: { provider } } });
|
|
362
|
+
* ```
|
|
363
|
+
*/
|
|
364
|
+
type PlatformProvider = {
|
|
365
|
+
/** Calls `fn` when the app goes to the background. Returns the remover. */onPause(fn: () => void): () => void; /** Calls `fn` when the app comes back to the foreground. Returns the remover. */
|
|
366
|
+
onResume(fn: () => void): () => void;
|
|
367
|
+
/**
|
|
368
|
+
* Calls `fn` on every press of the system Back button. `fn` returns whether the engine took the
|
|
369
|
+
* press; `false` lets the provider do its default, which on Android leaves the app.
|
|
370
|
+
*/
|
|
371
|
+
onBack(fn: () => boolean): () => void; /** Plays one haptic tick. */
|
|
372
|
+
haptic(kind: HapticKind): void; /** Keeps the screen on while `on` is true. */
|
|
373
|
+
keepAwake(on: boolean): void; /** Leaves the app. */
|
|
374
|
+
exit(): void;
|
|
375
|
+
};
|
|
376
|
+
/**
|
|
377
|
+
* What took one Back press: the Escape button of the top popup, the intent `back` of the resting
|
|
378
|
+
* node, the provider leaving the app, or nothing at all because the app has no provider.
|
|
379
|
+
*
|
|
380
|
+
* @example
|
|
381
|
+
* ```ts
|
|
382
|
+
* // Home rests and does not list "back": the provider leaves the app.
|
|
383
|
+
* const result: BackResult = app.platform.back(); // "exit"
|
|
384
|
+
* ```
|
|
385
|
+
*/
|
|
386
|
+
type BackResult = "popup" | "intent" | "exit" | "none";
|
|
387
|
+
/**
|
|
388
|
+
* What a game sets on `pluginConfigs.platform`: the provider seam its application layer fills
|
|
389
|
+
* from the native shell, and whether the screen stays on while the game runs.
|
|
390
|
+
*
|
|
391
|
+
* @example
|
|
392
|
+
* ```ts
|
|
393
|
+
* // app.ts of a game in the native shell; `provider` is the game's own bridge to the shell.
|
|
394
|
+
* const config: Platform.Config = { provider, keepAwake: true };
|
|
395
|
+
* config.keepAwake; // true
|
|
396
|
+
* ```
|
|
397
|
+
*/
|
|
398
|
+
type Config = {
|
|
399
|
+
/** The provider. `undefined`, the default: the plugin is inert, as on the web without a bridge and in headless tests. */provider: PlatformProvider | undefined; /** Keep the screen on while the game runs. Default `false`. */
|
|
400
|
+
keepAwake: boolean;
|
|
401
|
+
};
|
|
402
|
+
/**
|
|
403
|
+
* platform plugin state.
|
|
404
|
+
*/
|
|
405
|
+
type State = {
|
|
406
|
+
/** Whether `provider.keepAwake(true)` is in force. */awake: boolean; /** Removers of the provider subscriptions and of the haptic handler, called on stop. */
|
|
407
|
+
offs: Array<() => void>; /** Haptic kinds already warned about in a dev build, so each warns once. */
|
|
408
|
+
warned: Set<string>;
|
|
409
|
+
};
|
|
410
|
+
/**
|
|
411
|
+
* platform plugin API, `app.platform`. The rest of the plugin runs on its own: the provider's
|
|
412
|
+
* pause, resume and Back press, the `haptic` effect and keep-awake need no call.
|
|
413
|
+
*
|
|
414
|
+
* @example
|
|
415
|
+
* ```ts
|
|
416
|
+
* // An e2e test plays the Android Back button on Home, which rests without "back".
|
|
417
|
+
* app.platform.back(); // "exit": the provider leaves the app
|
|
418
|
+
* ```
|
|
419
|
+
*/
|
|
420
|
+
type PlatformApi = {
|
|
421
|
+
/**
|
|
422
|
+
* Runs the Back chain once, exactly as a press of the system Back button does. The first step
|
|
423
|
+
* that takes the press wins: Escape taps the `escape` button of the top ui root (`"popup"`),
|
|
424
|
+
* then the intent `back` is answered to the resting node (`"intent"`), and otherwise the
|
|
425
|
+
* provider leaves the app (`"exit"`). While the graph moves between nodes the gate is closed and
|
|
426
|
+
* holds the answer for one frame, so the press answers `"intent"` and never leaves the app.
|
|
427
|
+
* Escape also ends the editing of a ui text field, so a
|
|
428
|
+
* press while a field is edited ends the edit and answers `"popup"`. Without a provider nothing
|
|
429
|
+
* is pressed and the answer is `"none"`.
|
|
430
|
+
*
|
|
431
|
+
* @returns What took the press.
|
|
432
|
+
* @example
|
|
433
|
+
* ```ts
|
|
434
|
+
* // An e2e test plays the Android Back button over the settings popup, then on Home.
|
|
435
|
+
* app.platform.back(); // "popup": the settings popup was open and closed like Escape
|
|
436
|
+
* // ...the runner settles on Home, which does not list "back"...
|
|
437
|
+
* app.platform.back(); // "exit": the provider leaves the app
|
|
438
|
+
* ```
|
|
439
|
+
*/
|
|
440
|
+
back(): BackResult;
|
|
441
|
+
};
|
|
442
|
+
/**
|
|
443
|
+
* What the kernel context offers the files of the plugin.
|
|
444
|
+
*
|
|
445
|
+
* `platform` owns no event, so `emit` is the kernel's and never called here.
|
|
446
|
+
*/
|
|
447
|
+
type KernelSlice = PluginCtx<Config, State> & {
|
|
448
|
+
readonly global: object;
|
|
449
|
+
readonly log: Log.LogApi;
|
|
450
|
+
readonly require: Require;
|
|
451
|
+
};
|
|
452
|
+
/**
|
|
453
|
+
* Payload of the `lifecycle:changed` hook: the pause that releases keep-awake.
|
|
454
|
+
*/
|
|
455
|
+
type LifecycleChanged = Events["lifecycle:changed"];
|
|
456
|
+
/**
|
|
457
|
+
* A method of the provider, named in the log when it throws.
|
|
458
|
+
*/
|
|
459
|
+
type ProviderMethod = keyof PlatformProvider;
|
|
460
|
+
//#endregion
|
|
461
|
+
//#region src/plugins/platform/index.d.ts
|
|
462
|
+
/**
|
|
463
|
+
* Platform plugin: `app.platform`, the handler of the effect kind `haptic`, and the provider's
|
|
464
|
+
* pause, resume and Back press. Inert without a provider.
|
|
465
|
+
*
|
|
466
|
+
* @example
|
|
467
|
+
* ```ts
|
|
468
|
+
* // A game in the native shell composes it last and hands it the bridge it built.
|
|
469
|
+
* createApp({
|
|
470
|
+
* plugins: [...screen, effectsPlugin, audioPlugin, platformPlugin, ...features],
|
|
471
|
+
* pluginConfigs: { platform: { provider: fromSystem(system), keepAwake: true } }
|
|
472
|
+
* });
|
|
473
|
+
* ```
|
|
474
|
+
*/
|
|
475
|
+
declare const platformPlugin: import("@moku-labs/core").PluginInstance<"platform", Config, State, PlatformApi, {}> & Record<never, never>;
|
|
323
476
|
//#endregion
|
|
324
477
|
//#region src/plugins/renderer/index.d.ts
|
|
325
478
|
/**
|
|
@@ -338,7 +491,7 @@ declare const modelPlugin: import("@moku-labs/core").PluginInstance<"model", Con
|
|
|
338
491
|
* app.renderer.host.kind(); // "webgpu" in Chrome, "webgl" on an older device
|
|
339
492
|
* ```
|
|
340
493
|
*/
|
|
341
|
-
declare const rendererPlugin: import("@moku-labs/core").PluginInstance<"renderer", Config$
|
|
494
|
+
declare const rendererPlugin: import("@moku-labs/core").PluginInstance<"renderer", Config$5, State$5, Api$3, {
|
|
342
495
|
"renderer:device-lost": {
|
|
343
496
|
kind: "webgpu" | "webgl";
|
|
344
497
|
reason: string;
|
|
@@ -361,7 +514,7 @@ declare const rendererPlugin: import("@moku-labs/core").PluginInstance<"renderer
|
|
|
361
514
|
* export const awaitIntent = defineNode({ scene: "board", rest: true, outcomes: { merge: type() } });
|
|
362
515
|
* ```
|
|
363
516
|
*/
|
|
364
|
-
declare const scenesPlugin: import("@moku-labs/core").PluginInstance<"scenes", Record<string, never>, State$
|
|
517
|
+
declare const scenesPlugin: import("@moku-labs/core").PluginInstance<"scenes", Record<string, never>, State$16, ScenesApi, {
|
|
365
518
|
"scenes:changed": {
|
|
366
519
|
from: string | undefined;
|
|
367
520
|
to: string;
|
|
@@ -386,7 +539,7 @@ declare const scenesPlugin: import("@moku-labs/core").PluginInstance<"scenes", R
|
|
|
386
539
|
* app.text.styles(); // ["body", "digits", "hud.digits"]
|
|
387
540
|
* ```
|
|
388
541
|
*/
|
|
389
|
-
declare const textPlugin: import("@moku-labs/core").PluginInstance<"text", Config$
|
|
542
|
+
declare const textPlugin: import("@moku-labs/core").PluginInstance<"text", Config$13, State$12, TextApi, {}> & Record<never, never>;
|
|
390
543
|
//#endregion
|
|
391
544
|
//#region src/plugins/time/index.d.ts
|
|
392
545
|
/**
|
|
@@ -401,11 +554,12 @@ declare const textPlugin: import("@moku-labs/core").PluginInstance<"text", Confi
|
|
|
401
554
|
* });
|
|
402
555
|
* ```
|
|
403
556
|
*/
|
|
404
|
-
declare const timePlugin: import("@moku-labs/core").PluginInstance<"time", Config$
|
|
557
|
+
declare const timePlugin: import("@moku-labs/core").PluginInstance<"time", Config$6, State$6, Api$4, {}> & Record<never, never>;
|
|
405
558
|
//#endregion
|
|
406
559
|
//#region src/plugins/ui/index.d.ts
|
|
407
560
|
/**
|
|
408
|
-
* Ui plugin: `app.ui.tree()`, `app.ui.find(...)`, `app.ui.lint()`,
|
|
561
|
+
* Ui plugin: `app.ui.tree()`, `app.ui.find(...)`, `app.ui.lint()`, `app.ui.fill(...)`, the
|
|
562
|
+
* text field `<input local>`, the components `Box` and
|
|
409
563
|
* `LocalWrite`, and the helpers `defineComponent`, `defineStyle`, `defineTokens` and `popup`.
|
|
410
564
|
*
|
|
411
565
|
* @example
|
|
@@ -417,7 +571,7 @@ declare const timePlugin: import("@moku-labs/core").PluginInstance<"time", Confi
|
|
|
417
571
|
* app.input.tap(app.ui.find("claim") ?? 0);
|
|
418
572
|
* ```
|
|
419
573
|
*/
|
|
420
|
-
declare const uiPlugin: import("@moku-labs/core").PluginInstance<"ui", Config$
|
|
574
|
+
declare const uiPlugin: import("@moku-labs/core").PluginInstance<"ui", Config$14, State$13, UiApi, {}> & Record<never, never>;
|
|
421
575
|
//#endregion
|
|
422
576
|
//#region src/plugins/world/index.d.ts
|
|
423
577
|
/**
|
|
@@ -433,7 +587,7 @@ declare const uiPlugin: import("@moku-labs/core").PluginInstance<"ui", Config$12
|
|
|
433
587
|
* app.world.projection.entityOf("board.items", "i7"); // 1048576
|
|
434
588
|
* ```
|
|
435
589
|
*/
|
|
436
|
-
declare const worldPlugin: import("@moku-labs/core").PluginInstance<"world", Config$7, State$
|
|
590
|
+
declare const worldPlugin: import("@moku-labs/core").PluginInstance<"world", Config$7, State$7, Api$5, {
|
|
437
591
|
"world:reconciled": {
|
|
438
592
|
mode: "play" | "direct";
|
|
439
593
|
projections: number;
|
|
@@ -789,6 +943,22 @@ declare function defineScene<Layers extends LayerMap, const Projections extends
|
|
|
789
943
|
declare const Animation: ComponentType<{
|
|
790
944
|
playing: number;
|
|
791
945
|
}>;
|
|
946
|
+
/**
|
|
947
|
+
* A frame loop on an entity, for as long as the entity carries it: every `1000 / fps` ms
|
|
948
|
+
* `Sprite.texture` becomes the next key of `keys`, after the last key it wraps to the first. No
|
|
949
|
+
* timeline around it, not counted by `Animation` or `app.anim.active()`. A running `frames` step on
|
|
950
|
+
* the same entity owns the sprite until it ends; the loop goes on from where its clock stands.
|
|
951
|
+
* Paused and fast world modes and reduced motion stop the clock on the frame it shows.
|
|
952
|
+
*
|
|
953
|
+
* @example
|
|
954
|
+
* ```ts
|
|
955
|
+
* // A coin spins on the board for its whole life: a projection view returns both components.
|
|
956
|
+
* const coinSpin = ["items.coin-0", "items.coin-1", "items.coin-2", "items.coin-3"] as const;
|
|
957
|
+
* const coin = [Sprite({ texture: "items.coin-0" }), Frames({ keys: coinSpin, fps: 12 })];
|
|
958
|
+
* Frames({ keys: coinSpin, fps: 12 }).value.loop; // true: the default
|
|
959
|
+
* ```
|
|
960
|
+
*/
|
|
961
|
+
declare const Frames: ComponentType<FramesValue>;
|
|
792
962
|
//#endregion
|
|
793
963
|
//#region src/plugins/anim/motion.d.ts
|
|
794
964
|
/**
|
|
@@ -888,359 +1058,234 @@ type MotionSpec = {
|
|
|
888
1058
|
*/
|
|
889
1059
|
declare function defineMotion(spec: MotionSpec): ProjectionMotion<unknown>;
|
|
890
1060
|
//#endregion
|
|
891
|
-
//#region src/plugins/
|
|
892
|
-
/**
|
|
893
|
-
* Runs the steps one after another. The remainder past a step's end reaches the next step in the
|
|
894
|
-
* same frame, so the tree takes exactly the sum of its durations.
|
|
895
|
-
*
|
|
896
|
-
* @param steps - The steps, in order.
|
|
897
|
-
* @returns The sequence step.
|
|
898
|
-
* @example
|
|
899
|
-
* ```ts
|
|
900
|
-
* sequence(wait(100), mark("done"));
|
|
901
|
-
* // { kind: "sequence", steps: [{ kind: "wait", ms: 100 }, { kind: "mark", name: "done" }] }
|
|
902
|
-
* ```
|
|
903
|
-
*/
|
|
904
|
-
declare function sequence(...steps: readonly Step[]): Step;
|
|
905
|
-
/**
|
|
906
|
-
* Runs every step at once and ends with the longest one.
|
|
907
|
-
*
|
|
908
|
-
* @param steps - The steps.
|
|
909
|
-
* @returns The parallel step.
|
|
910
|
-
* @example
|
|
911
|
-
* ```ts
|
|
912
|
-
* parallel(wait(100), wait(300)); // ends after 300 ms
|
|
913
|
-
* ```
|
|
914
|
-
*/
|
|
915
|
-
declare function parallel(...steps: readonly Step[]): Step;
|
|
916
|
-
/**
|
|
917
|
-
* Builds one step per item and starts each one `staggerMs` later than the one before. The build
|
|
918
|
-
* function runs here, so no function survives in the data.
|
|
919
|
-
*
|
|
920
|
-
* @param items - What to build a step for.
|
|
921
|
-
* @param staggerMs - Delay between two neighbouring items, in game milliseconds.
|
|
922
|
-
* @param build - Builds the step of one item.
|
|
923
|
-
* @returns The parallel of delayed sequences.
|
|
924
|
-
* @example
|
|
925
|
-
* ```ts
|
|
926
|
-
* stagger(["a", "b"], 60, item => mark(item));
|
|
927
|
-
* // parallel(sequence(wait(0), mark("a")), sequence(wait(60), mark("b")))
|
|
928
|
-
* ```
|
|
929
|
-
*/
|
|
930
|
-
declare function stagger<Item>(items: readonly Item[], staggerMs: number, build: (item: Item, index: number) => Step): Step;
|
|
931
|
-
/**
|
|
932
|
-
* Holds still for a while.
|
|
933
|
-
*
|
|
934
|
-
* @param durationMs - How long to wait, in game milliseconds.
|
|
935
|
-
* @returns The wait step.
|
|
936
|
-
* @example
|
|
937
|
-
* ```ts
|
|
938
|
-
* wait(120); // { kind: "wait", ms: 120 }
|
|
939
|
-
* ```
|
|
940
|
-
*/
|
|
941
|
-
declare function wait(durationMs: number): Step;
|
|
942
|
-
/**
|
|
943
|
-
* Names a point in the choreography. Reaching it emits `anim:mark`, calls the `onMark` listeners
|
|
944
|
-
* and appends the name to `marks()`. It is the only way out of a timeline.
|
|
945
|
-
*
|
|
946
|
-
* @param name - Name of the mark.
|
|
947
|
-
* @returns The mark step.
|
|
948
|
-
* @example
|
|
949
|
-
* ```ts
|
|
950
|
-
* mark("landed"); // { kind: "mark", name: "landed" }
|
|
951
|
-
* ```
|
|
952
|
-
*/
|
|
953
|
-
declare function mark(name: string): Step;
|
|
1061
|
+
//#region src/plugins/i18n/tr.d.ts
|
|
954
1062
|
/**
|
|
955
|
-
*
|
|
956
|
-
*
|
|
957
|
-
* they are.
|
|
958
|
-
*
|
|
959
|
-
* By default the fields are local: they are written into the target's own `Transform`. With
|
|
960
|
-
* `space: "root"` the `x`, `y`, `rotation` and `scale` of a `Transform` are a root pose, the space
|
|
961
|
-
* `at()` answers in, and are turned into the space of the target's `Parent` when the track starts.
|
|
962
|
-
* That aims a hosted view, such as a board item inside the board slot, at another element. A
|
|
963
|
-
* field the step does not name stays where it is, so under a turned parent name `x` and `y`
|
|
964
|
-
* together. A target without a parent, and a component other than `Transform`, move as in the
|
|
965
|
-
* local space.
|
|
1063
|
+
* Builds a message. The result is frozen and the parameters are copied, so the caller's object
|
|
1064
|
+
* stays its own and nothing downstream can rewrite a label in place.
|
|
966
1065
|
*
|
|
967
|
-
* @param
|
|
968
|
-
* @param
|
|
969
|
-
* @
|
|
970
|
-
* @param options - Duration, easing, delay, the additive flag and the space of the fields.
|
|
971
|
-
* @param options.ms - Duration in game milliseconds.
|
|
972
|
-
* @param options.ease - Easing curve; `"out"` when omitted.
|
|
973
|
-
* @param options.delayMs - How long the track waits before it reads its start values.
|
|
974
|
-
* @param options.additive - `true` adds an offset instead of owning the fields.
|
|
975
|
-
* @param options.space - `"root"` reads the `Transform` fields as a root pose; `"local"` when
|
|
976
|
-
* omitted.
|
|
977
|
-
* @returns The tween step.
|
|
1066
|
+
* @param key - The message key, one of the keys `compileStrings` generated.
|
|
1067
|
+
* @param params - The parameters the message declares. An element parameter is kept as it is.
|
|
1068
|
+
* @returns The message, frozen.
|
|
978
1069
|
* @example
|
|
979
1070
|
* ```ts
|
|
980
|
-
*
|
|
981
|
-
*
|
|
982
|
-
* slots: { item: type<Target>(), card: type<Target>() },
|
|
983
|
-
* build: ({ item, card }, { at }) =>
|
|
984
|
-
* tween(item, Transform, { x: at(card).x, y: at(card).y, scale: at(card).scale }, {
|
|
985
|
-
* ms: 400, ease: "inCubic", space: "root"
|
|
986
|
-
* })
|
|
987
|
-
* });
|
|
988
|
-
* app.anim.play(deliverFly, {
|
|
989
|
-
* item: { projection: "board.items", key: "i1" },
|
|
990
|
-
* card: { projection: "hud", key: "card0" }
|
|
991
|
-
* });
|
|
992
|
-
* // 400 ms later the item covers the card at the card's size; its Transform stays slot-local
|
|
1071
|
+
* tr("hud.orders", { n: 3 }); // { key: "hud.orders", params: { n: 3 } }
|
|
1072
|
+
* tr("orders.complete"); // { key: "orders.complete" }
|
|
993
1073
|
* ```
|
|
994
1074
|
*/
|
|
995
|
-
declare function
|
|
996
|
-
|
|
997
|
-
|
|
998
|
-
delayMs?: number;
|
|
999
|
-
additive?: boolean;
|
|
1000
|
-
space?: "local" | "root";
|
|
1001
|
-
}): Step;
|
|
1075
|
+
declare function tr(key: string, params?: Record<string, Argument>): Message;
|
|
1076
|
+
//#endregion
|
|
1077
|
+
//#region src/plugins/ui/styles/define.d.ts
|
|
1002
1078
|
/**
|
|
1003
|
-
*
|
|
1004
|
-
*
|
|
1079
|
+
* Declares one style. The work is the type: a field outside the vocabulary, or a value outside
|
|
1080
|
+
* its union, is an error where the style is written, not where it is used.
|
|
1005
1081
|
*
|
|
1006
|
-
* @param
|
|
1007
|
-
* @
|
|
1008
|
-
* @param patch - The fields to overwrite.
|
|
1009
|
-
* @returns The set step.
|
|
1082
|
+
* @param style - The style, with its `is` and `when` variants.
|
|
1083
|
+
* @returns The same object, frozen.
|
|
1010
1084
|
* @example
|
|
1011
1085
|
* ```ts
|
|
1012
|
-
*
|
|
1013
|
-
* // { kind: "set", patch: { texture: "hud.coin-gold" }, ... }
|
|
1086
|
+
* defineStyle({ direction: "row", gap: 12 }).gap; // 12
|
|
1014
1087
|
* ```
|
|
1015
1088
|
*/
|
|
1016
|
-
declare function
|
|
1089
|
+
declare function defineStyle<const Given extends Style>(style: Given): Readonly<Given>;
|
|
1090
|
+
//#endregion
|
|
1091
|
+
//#region src/plugins/ui/styles/resolve.d.ts
|
|
1017
1092
|
/**
|
|
1018
|
-
*
|
|
1093
|
+
* The flags one element is resolved against: the viewport flags of the frame plus its own state.
|
|
1019
1094
|
*
|
|
1020
|
-
* @param target - The projection key or the entity to animate.
|
|
1021
|
-
* @param options - The keys, the frame rate and whether the list repeats.
|
|
1022
|
-
* @param options.keys - The texture keys, in play order.
|
|
1023
|
-
* @param options.fps - Frames per second of the list.
|
|
1024
|
-
* @param options.loop - `true` repeats the list until the step is finished.
|
|
1025
|
-
* @returns The frames step.
|
|
1026
1095
|
* @example
|
|
1027
1096
|
* ```ts
|
|
1028
|
-
*
|
|
1029
|
-
*
|
|
1097
|
+
* const flags: StyleFlags = {
|
|
1098
|
+
* portrait: true, landscape: false, tall: false, wide: false,
|
|
1099
|
+
* pressed: false, hover: false, focus: false, disabled: false, active: true, selected: false,
|
|
1100
|
+
* covered: false
|
|
1101
|
+
* };
|
|
1030
1102
|
* ```
|
|
1031
1103
|
*/
|
|
1032
|
-
|
|
1033
|
-
keys: readonly string[];
|
|
1034
|
-
fps: number;
|
|
1035
|
-
loop?: boolean;
|
|
1036
|
-
}): Step;
|
|
1104
|
+
type StyleFlags = WhenFlags & IsFlags;
|
|
1037
1105
|
/**
|
|
1038
|
-
*
|
|
1039
|
-
* entity is owned by `anim`, drawn in `layer` at `order`, and despawned when the timeline ends, is
|
|
1040
|
-
* finished or is cancelled. Later steps of the same timeline aim at it with `spawned(id)`.
|
|
1106
|
+
* Resolves one style against the flags of the frame and the viewport.
|
|
1041
1107
|
*
|
|
1042
|
-
* @param
|
|
1043
|
-
* @param
|
|
1044
|
-
*
|
|
1045
|
-
* @param
|
|
1046
|
-
* @
|
|
1047
|
-
* @returns The spawn step.
|
|
1108
|
+
* @param style - The style a game wrote, or nothing.
|
|
1109
|
+
* @param flags - The four viewport flags and the seven state flags. While `disabled` is true the
|
|
1110
|
+
* `hover` and `pressed` variants are skipped.
|
|
1111
|
+
* @param viewport - What `renderer.viewport.size()` answered, for the safe-area tokens.
|
|
1112
|
+
* @returns The frozen style the layout and the visual are written from.
|
|
1048
1113
|
* @example
|
|
1049
1114
|
* ```ts
|
|
1050
|
-
*
|
|
1051
|
-
*
|
|
1115
|
+
* resolve(
|
|
1116
|
+
* { gap: 8, is: { pressed: { gap: 4 } } },
|
|
1117
|
+
* { portrait: true, landscape: false, tall: false, wide: false,
|
|
1118
|
+
* pressed: true, hover: false, focus: false, disabled: false, active: false, selected: false,
|
|
1119
|
+
* covered: false },
|
|
1120
|
+
* { width: 1080, height: 1920, scale: 1, orientation: "portrait",
|
|
1121
|
+
* safeArea: { top: 0, right: 0, bottom: 0, left: 0 } }
|
|
1122
|
+
* ).gap; // 4
|
|
1052
1123
|
* ```
|
|
1053
1124
|
*/
|
|
1054
|
-
declare function
|
|
1055
|
-
|
|
1056
|
-
|
|
1057
|
-
}): Step;
|
|
1125
|
+
declare function resolve(style: Style | undefined, flags: StyleFlags, viewport: ViewportSize): ResolvedStyle;
|
|
1126
|
+
//#endregion
|
|
1127
|
+
//#region src/plugins/audio/descriptors.d.ts
|
|
1058
1128
|
/**
|
|
1059
|
-
*
|
|
1060
|
-
*
|
|
1129
|
+
* Creates the awaited effect that switches the music track. The same key as the one playing does
|
|
1130
|
+
* nothing, and `null` fades the current track out. An absent `fadeMs` leaves the key out of the
|
|
1131
|
+
* payload, so the descriptor stays plain JSON and the plugin's `musicFadeMs` decides at play time.
|
|
1061
1132
|
*
|
|
1062
|
-
* @param
|
|
1063
|
-
* @
|
|
1133
|
+
* @param key - Asset key of an `.mp3`, or `null` to stop the music.
|
|
1134
|
+
* @param options - `fadeMs` overrides the configured cross-fade for this switch.
|
|
1135
|
+
* @returns The descriptor a node awaits, frozen.
|
|
1064
1136
|
* @example
|
|
1065
1137
|
* ```ts
|
|
1066
|
-
*
|
|
1067
|
-
*
|
|
1138
|
+
* // A node of a game: the menu goes quiet before the ending cinematic starts.
|
|
1139
|
+
* await fx(music(null, { fadeMs: 1500 }));
|
|
1140
|
+
* // music("board.theme") is { kind: "music", payload: { key: "board.theme" }, cosmetic: true }
|
|
1068
1141
|
* ```
|
|
1069
1142
|
*/
|
|
1070
|
-
declare function
|
|
1071
|
-
|
|
1072
|
-
|
|
1143
|
+
declare function music(key: string | null, options?: MusicOptions): Descriptor;
|
|
1144
|
+
//#endregion
|
|
1145
|
+
//#region src/plugins/effects/filters/builtins.d.ts
|
|
1073
1146
|
/**
|
|
1074
|
-
* A
|
|
1075
|
-
*
|
|
1147
|
+
* A soft halo of `color` around the opaque pixels of a view and its subtree, `distance` pixels
|
|
1148
|
+
* wide, that follows the shape: rounded corners stay rounded. Its alpha is
|
|
1149
|
+
* `strength × alpha ×` the share of the disc of radius `distance` around the pixel the view
|
|
1150
|
+
* covers, so `strength: 2` is full next to a straight edge and fades to nothing at `distance`.
|
|
1151
|
+
* The view is padded by its live `distance`. One render pass per apply.
|
|
1076
1152
|
*
|
|
1077
|
-
* @param key - Asset key of the sound.
|
|
1078
|
-
* @param options - The bus to play it on.
|
|
1079
|
-
* @param options.bus - `"sfx"` when omitted.
|
|
1080
|
-
* @returns The descriptor, usable as a timeline step and as `fx(...)` in a node.
|
|
1081
1153
|
* @example
|
|
1082
1154
|
* ```ts
|
|
1083
|
-
*
|
|
1155
|
+
* // A merged item glows, and a motion hook tweens the glow away.
|
|
1156
|
+
* Glow({ strength: 4 }).value; // { strength: 4, distance: 10, color: 0xffffff, alpha: 1, enabled: true, order: 0 }
|
|
1157
|
+
* view.tween(Glow, { strength: 0 }, { ms: 200 });
|
|
1084
1158
|
* ```
|
|
1085
1159
|
*/
|
|
1086
|
-
declare
|
|
1087
|
-
bus?: string;
|
|
1088
|
-
}): SfxDescriptor;
|
|
1160
|
+
declare const Glow: FilterComponent<GlowValue>;
|
|
1089
1161
|
/**
|
|
1090
|
-
* A
|
|
1162
|
+
* A ring of `thickness` pixels in `color` around the opaque pixels of a view and its subtree; the
|
|
1163
|
+
* view is padded by its live `thickness`. One render pass per apply.
|
|
1091
1164
|
*
|
|
1092
|
-
* @param kind - Which tick to play, for example `"light"`.
|
|
1093
|
-
* @returns The descriptor, usable as a timeline step and as `fx(...)` in a node.
|
|
1094
1165
|
* @example
|
|
1095
1166
|
* ```ts
|
|
1096
|
-
*
|
|
1167
|
+
* // The selected card is outlined in honey.
|
|
1168
|
+
* Outline({ thickness: 4, color: 0xffc233 }).value; // { thickness: 4, color: 0xffc233, alpha: 1, enabled: true, order: 0 }
|
|
1097
1169
|
* ```
|
|
1098
1170
|
*/
|
|
1099
|
-
declare
|
|
1171
|
+
declare const Outline: FilterComponent<OutlineValue>;
|
|
1100
1172
|
/**
|
|
1101
|
-
*
|
|
1102
|
-
*
|
|
1173
|
+
* Pixi's blur over a view and its subtree. `quality: 0` means `config.blur.quality`;
|
|
1174
|
+
* `resolution: 0` means `config.blur.phoneResolution` on a phone, otherwise 1. `repeatEdgePixels`
|
|
1175
|
+
* keeps the padding at 0. Costs `2 × quality` render passes per apply.
|
|
1103
1176
|
*
|
|
1104
|
-
* @param _player - The player that would run the clip.
|
|
1105
|
-
* @param _clip - Name of the clip.
|
|
1106
|
-
* @throws {Error} Always.
|
|
1107
1177
|
* @example
|
|
1108
1178
|
* ```ts
|
|
1109
|
-
*
|
|
1179
|
+
* // The board behind a popup: the filter sits on the ui slot that hosts the board.
|
|
1180
|
+
* Blur({ strength: 6 }).value; // { strength: 6, quality: 0, resolution: 0, repeatEdgePixels: true, enabled: true, order: 0 }
|
|
1110
1181
|
* ```
|
|
1111
1182
|
*/
|
|
1112
|
-
declare
|
|
1183
|
+
declare const Blur: ComponentType<BlurValue>;
|
|
1113
1184
|
/**
|
|
1114
|
-
*
|
|
1115
|
-
*
|
|
1116
|
-
* nested `build` reads `at`.
|
|
1185
|
+
* Pixi's colour matrix: brightness, saturation, contrast, hue in degrees and grayscale, composed
|
|
1186
|
+
* in that order from the identity on every change. Every default is the identity.
|
|
1117
1187
|
*
|
|
1118
|
-
* @param animation - The animation to nest.
|
|
1119
|
-
* @param slots - One target, or a list of targets, per slot of the nested animation.
|
|
1120
|
-
* @param tools - The build tools of the outer animation; without them `at` is the identity pose.
|
|
1121
|
-
* @returns The use step.
|
|
1122
1188
|
* @example
|
|
1123
1189
|
* ```ts
|
|
1124
|
-
*
|
|
1125
|
-
*
|
|
1190
|
+
* // A locked card goes gray.
|
|
1191
|
+
* ColorMatrix({ grayscale: 1 }).value.grayscale; // 1
|
|
1126
1192
|
* ```
|
|
1127
1193
|
*/
|
|
1128
|
-
declare
|
|
1194
|
+
declare const ColorMatrix: ComponentType<ColorMatrixValue>;
|
|
1129
1195
|
/**
|
|
1130
|
-
* The
|
|
1131
|
-
*
|
|
1196
|
+
* Pixi's noise. The seed is always given, never Pixi's random default, so two runs draw the same
|
|
1197
|
+
* grain.
|
|
1132
1198
|
*
|
|
1133
|
-
* @param animation - The animation to play.
|
|
1134
|
-
* @param slots - One target, or a list of targets, per slot.
|
|
1135
|
-
* @returns The descriptor, cosmetic, so a failing build never breaks the node.
|
|
1136
1199
|
* @example
|
|
1137
1200
|
* ```ts
|
|
1138
|
-
*
|
|
1139
|
-
* // { kind: "play", payload: { animation: "hud.coinsFly", slots: { from: { ... } } }, cosmetic: true }
|
|
1201
|
+
* Noise({ amount: 0.2, seed: 7 }).value; // { amount: 0.2, seed: 7, enabled: true, order: 0 }
|
|
1140
1202
|
* ```
|
|
1141
1203
|
*/
|
|
1142
|
-
declare
|
|
1204
|
+
declare const Noise: ComponentType<NoiseValue>;
|
|
1143
1205
|
/**
|
|
1144
|
-
*
|
|
1145
|
-
*
|
|
1206
|
+
* Pixi's displacement over the texture of the asset key `map`. Nothing is drawn while the map is
|
|
1207
|
+
* not loaded; a missing key warns once.
|
|
1146
1208
|
*
|
|
1147
|
-
* @param id - Animation id, unique across the features of a game.
|
|
1148
|
-
* @param spec - The slots and the build function.
|
|
1149
|
-
* @returns The animation as frozen plain data.
|
|
1150
1209
|
* @example
|
|
1151
1210
|
* ```ts
|
|
1152
|
-
*
|
|
1153
|
-
*
|
|
1154
|
-
* build: ({ from }) => tween(from, Transform, { scale: 0.4 }, { ms: 600 })
|
|
1155
|
-
* });
|
|
1156
|
-
* coinsFly.id; // "hud.coinsFly"
|
|
1211
|
+
* // Heat haze over the furnace.
|
|
1212
|
+
* Displacement({ map: "fx.ripple", scaleX: 8, scaleY: 8 }).value.map; // "fx.ripple"
|
|
1157
1213
|
* ```
|
|
1158
1214
|
*/
|
|
1159
|
-
declare
|
|
1160
|
-
//#endregion
|
|
1161
|
-
//#region src/plugins/i18n/tr.d.ts
|
|
1215
|
+
declare const Displacement: ComponentType<DisplacementValue>;
|
|
1162
1216
|
/**
|
|
1163
|
-
*
|
|
1164
|
-
*
|
|
1217
|
+
* Pixi's alpha over a view and its subtree as one layer, so overlapping children do not show
|
|
1218
|
+
* through each other.
|
|
1165
1219
|
*
|
|
1166
|
-
* @param key - The message key, one of the keys `compileStrings` generated.
|
|
1167
|
-
* @param params - The parameters the message declares. An element parameter is kept as it is.
|
|
1168
|
-
* @returns The message, frozen.
|
|
1169
1220
|
* @example
|
|
1170
1221
|
* ```ts
|
|
1171
|
-
*
|
|
1172
|
-
* tr("orders.complete"); // { key: "orders.complete" }
|
|
1222
|
+
* Alpha({ alpha: 0.5 }).value; // { alpha: 0.5, enabled: true, order: 0 }
|
|
1173
1223
|
* ```
|
|
1174
1224
|
*/
|
|
1175
|
-
declare
|
|
1225
|
+
declare const Alpha: ComponentType<AlphaValue>;
|
|
1176
1226
|
//#endregion
|
|
1177
|
-
//#region src/plugins/
|
|
1227
|
+
//#region src/plugins/effects/filters/define.d.ts
|
|
1178
1228
|
/**
|
|
1179
|
-
*
|
|
1180
|
-
*
|
|
1229
|
+
* Turns a WGSL fragment body and its GLSL ES 3.0 twin into a filter component type; Pixi draws
|
|
1230
|
+
* the one of the running backend. To the WGSL the engine prepends the vertex stage, the input
|
|
1231
|
+
* bindings and a `FilterUniforms` struct in declaration order, bound as `fu`. To the GLSL it
|
|
1232
|
+
* prepends `#version 300 es`, `vTextureCoord`, `finalColor`, `uTexture`, the global filter
|
|
1233
|
+
* uniforms as `vec4` and one `uniform` per declared uniform under its bare name. Every number
|
|
1234
|
+
* uniform is a number field, so the existing `tween` drives it; a colour is one hex field sent as
|
|
1235
|
+
* a `vec3`; a tuple is an array field and not tweenable. Every filter component also carries
|
|
1236
|
+
* `enabled: true` and `order: 0`. Register it through the `filters` key of a feature.
|
|
1181
1237
|
*
|
|
1182
|
-
* @param
|
|
1183
|
-
* @
|
|
1238
|
+
* @param id - The filter id, also the component name; unique, and not one of the built-ins.
|
|
1239
|
+
* @param spec - Both bodies, the uniforms, the passes one apply costs and the padding.
|
|
1240
|
+
* @returns The component type, with the frozen `filter` definition attached.
|
|
1241
|
+
* @throws {Error} When the id is empty, the WGSL has no `mainFragment`, the GLSL no `void main(`,
|
|
1242
|
+
* a uniform is reserved, badly named or of no known form, or the passes or the padding break
|
|
1243
|
+
* their rules.
|
|
1184
1244
|
* @example
|
|
1185
1245
|
* ```ts
|
|
1186
|
-
*
|
|
1246
|
+
* // features/board/effects.ts: a gold tint a motion hook tweens on a merge, on WebGPU and WebGL.
|
|
1247
|
+
* const Tint = defineFilter("fx.tint", { wgsl: tintWgsl, glsl: tintGlsl, uniforms: { amount: 0, color: { color: 0xffd700 } } });
|
|
1248
|
+
* Tint({ amount: 1 }).value; // { amount: 1, color: 0xffd700, enabled: true, order: 0 }
|
|
1249
|
+
* Tint.filter.glsl.includes("uniform vec3 color;"); // true
|
|
1187
1250
|
* ```
|
|
1188
1251
|
*/
|
|
1189
|
-
declare function
|
|
1252
|
+
declare function defineFilter<Uniforms extends Record<string, UniformDeclaration> = Record<never, never>>(id: string, spec: FilterSpec<Uniforms>): FilterComponent<FilterValueOf<Uniforms>>;
|
|
1190
1253
|
//#endregion
|
|
1191
|
-
//#region src/plugins/
|
|
1254
|
+
//#region src/plugins/effects/particles/component.d.ts
|
|
1192
1255
|
/**
|
|
1193
|
-
*
|
|
1256
|
+
* A particle effect on an entity. A `burst` effect emits when the component appears or its
|
|
1257
|
+
* `effect` changes; a `rate` effect emits while `active` is true and the entity lives. An effect in
|
|
1258
|
+
* `"world"` space outlives the entity, one in `"local"` space moves and dies with it. `""` draws
|
|
1259
|
+
* nothing. Plain JSON: it shows in `snapshot()`.
|
|
1194
1260
|
*
|
|
1195
1261
|
* @example
|
|
1196
1262
|
* ```ts
|
|
1197
|
-
*
|
|
1198
|
-
*
|
|
1199
|
-
*
|
|
1200
|
-
* covered: false
|
|
1201
|
-
* };
|
|
1263
|
+
* // A merged item bursts stars from its enter hook; the generator steams for its whole life.
|
|
1264
|
+
* view.set(Emitter, { effect: "fx.starsBurst" });
|
|
1265
|
+
* Emitter({ effect: "fx.steam" }).value; // { effect: "fx.steam", active: true }
|
|
1202
1266
|
* ```
|
|
1203
1267
|
*/
|
|
1204
|
-
|
|
1205
|
-
/**
|
|
1206
|
-
* Resolves one style against the flags of the frame and the viewport.
|
|
1207
|
-
*
|
|
1208
|
-
* @param style - The style a game wrote, or nothing.
|
|
1209
|
-
* @param flags - The four viewport flags and the seven state flags. While `disabled` is true the
|
|
1210
|
-
* `hover` and `pressed` variants are skipped.
|
|
1211
|
-
* @param viewport - What `renderer.viewport.size()` answered, for the safe-area tokens.
|
|
1212
|
-
* @returns The frozen style the layout and the visual are written from.
|
|
1213
|
-
* @example
|
|
1214
|
-
* ```ts
|
|
1215
|
-
* resolve(
|
|
1216
|
-
* { gap: 8, is: { pressed: { gap: 4 } } },
|
|
1217
|
-
* { portrait: true, landscape: false, tall: false, wide: false,
|
|
1218
|
-
* pressed: true, hover: false, focus: false, disabled: false, active: false, selected: false,
|
|
1219
|
-
* covered: false },
|
|
1220
|
-
* { width: 1080, height: 1920, scale: 1, orientation: "portrait",
|
|
1221
|
-
* safeArea: { top: 0, right: 0, bottom: 0, left: 0 } }
|
|
1222
|
-
* ).gap; // 4
|
|
1223
|
-
* ```
|
|
1224
|
-
*/
|
|
1225
|
-
declare function resolve(style: Style | undefined, flags: StyleFlags, viewport: ViewportSize): ResolvedStyle;
|
|
1268
|
+
declare const Emitter: ComponentType<EmitterValue>;
|
|
1226
1269
|
//#endregion
|
|
1227
|
-
//#region src/plugins/
|
|
1270
|
+
//#region src/plugins/effects/particles/define.d.ts
|
|
1228
1271
|
/**
|
|
1229
|
-
*
|
|
1230
|
-
*
|
|
1231
|
-
*
|
|
1272
|
+
* Describes a particle effect. Every field is optional except `textures` and exactly one of
|
|
1273
|
+
* `burst` and `rate`; the definition is frozen, registered through the `emitters` key of a feature
|
|
1274
|
+
* and started by an `Emitter` component naming its id.
|
|
1232
1275
|
*
|
|
1233
|
-
* @param
|
|
1234
|
-
* @param
|
|
1235
|
-
* @returns The
|
|
1276
|
+
* @param id - The effect id, unique across the features of the game.
|
|
1277
|
+
* @param config - The effect as data.
|
|
1278
|
+
* @returns The frozen definition `{ id, config }`, the config with every default filled in.
|
|
1279
|
+
* @throws {Error} When the id is empty or a field breaks its rule.
|
|
1236
1280
|
* @example
|
|
1237
1281
|
* ```ts
|
|
1238
|
-
* //
|
|
1239
|
-
*
|
|
1240
|
-
*
|
|
1282
|
+
* // features/board/effects.ts: the steam over the generator.
|
|
1283
|
+
* const steam = defineEmitter("fx.steam", { textures: ["fx.puff"], rate: 12, space: "local" });
|
|
1284
|
+
* steam.config.rate; // 12
|
|
1285
|
+
* steam.config.lifeMs; // [600, 1000], the default
|
|
1241
1286
|
* ```
|
|
1242
1287
|
*/
|
|
1243
|
-
declare function
|
|
1288
|
+
declare function defineEmitter(id: string, config: EmitterConfig): EmitterDefinition;
|
|
1244
1289
|
//#endregion
|
|
1245
1290
|
//#region src/index.d.ts
|
|
1246
1291
|
/**
|
|
@@ -1255,7 +1300,7 @@ declare function music(key: string | null, options?: MusicOptions): Descriptor;
|
|
|
1255
1300
|
* });
|
|
1256
1301
|
* ```
|
|
1257
1302
|
*/
|
|
1258
|
-
declare const createApp: <const ExtraPlugins extends readonly import("@moku-labs/core").AnyPluginInstance[] = readonly []>(options?: import("@moku-labs/core").CreateAppOptions<Config$
|
|
1303
|
+
declare const createApp: <const ExtraPlugins extends readonly import("@moku-labs/core").AnyPluginInstance[] = readonly []>(options?: import("@moku-labs/core").CreateAppOptions<Config$8, Events$1, (import("@moku-labs/core").PluginInstance<"time", Config$6, State$6, Api$4, {}> & Record<never, never>) | (import("@moku-labs/core").PluginInstance<"lifecycle", Config$3, State$3, Api$2, {
|
|
1259
1304
|
"lifecycle:changed": {
|
|
1260
1305
|
reason: PauseReason;
|
|
1261
1306
|
action: "push" | "pop";
|
|
@@ -1263,7 +1308,7 @@ declare const createApp: <const ExtraPlugins extends readonly import("@moku-labs
|
|
|
1263
1308
|
paused: boolean;
|
|
1264
1309
|
resumed: boolean;
|
|
1265
1310
|
};
|
|
1266
|
-
}> & Record<never, never>) | (import("@moku-labs/core").PluginInstance<"model", Config$
|
|
1311
|
+
}> & Record<never, never>) | (import("@moku-labs/core").PluginInstance<"model", Config$4, State$4, {
|
|
1267
1312
|
store: StoreApi;
|
|
1268
1313
|
rng: RngApi;
|
|
1269
1314
|
}, {
|
|
@@ -1271,7 +1316,7 @@ declare const createApp: <const ExtraPlugins extends readonly import("@moku-labs
|
|
|
1271
1316
|
roots: readonly Root[];
|
|
1272
1317
|
cause: "edge" | "rollback" | "restore" | "load";
|
|
1273
1318
|
};
|
|
1274
|
-
}> & Record<never, never>) | (import("@moku-labs/core").PluginInstance<"clock", Config, State, Api, {}> & Record<never, never>) | (import("@moku-labs/core").PluginInstance<"flow", Config$
|
|
1319
|
+
}> & Record<never, never>) | (import("@moku-labs/core").PluginInstance<"clock", Config$1, State$1, Api, {}> & Record<never, never>) | (import("@moku-labs/core").PluginInstance<"flow", Config$2, State$2, Api$1, {
|
|
1275
1320
|
"flow:edge": {
|
|
1276
1321
|
flow: string;
|
|
1277
1322
|
node: string;
|
|
@@ -1295,7 +1340,7 @@ declare const createApp: <const ExtraPlugins extends readonly import("@moku-labs
|
|
|
1295
1340
|
rolledBackTo: string;
|
|
1296
1341
|
retry: boolean;
|
|
1297
1342
|
};
|
|
1298
|
-
}> & Record<never, never>) | ExtraPlugins[number], [...ExtraPlugins], import("@moku-labs/core").CoreApisFromTuple<[import("@moku-labs/core").CorePluginInstance<"log", import("@moku-labs/common/browser").LogConfig, import("@moku-labs/common/browser").LogState, import("@moku-labs/common/browser").LogApi>, import("@moku-labs/core").CorePluginInstance<"env", import("@moku-labs/common/browser").EnvConfig, import("@moku-labs/common/browser").EnvState, import("@moku-labs/common/browser").EnvApi>]>> | undefined) => import("@moku-labs/core").App<Config$
|
|
1343
|
+
}> & Record<never, never>) | ExtraPlugins[number], [...ExtraPlugins], import("@moku-labs/core").CoreApisFromTuple<[import("@moku-labs/core").CorePluginInstance<"log", import("@moku-labs/common/browser").LogConfig, import("@moku-labs/common/browser").LogState, import("@moku-labs/common/browser").LogApi>, import("@moku-labs/core").CorePluginInstance<"env", import("@moku-labs/common/browser").EnvConfig, import("@moku-labs/common/browser").EnvState, import("@moku-labs/common/browser").EnvApi>]>> | undefined) => import("@moku-labs/core").App<Config$8, Events$1, (import("@moku-labs/core").PluginInstance<"time", Config$6, State$6, Api$4, {}> & Record<never, never>) | (import("@moku-labs/core").PluginInstance<"lifecycle", Config$3, State$3, Api$2, {
|
|
1299
1344
|
"lifecycle:changed": {
|
|
1300
1345
|
reason: PauseReason;
|
|
1301
1346
|
action: "push" | "pop";
|
|
@@ -1303,7 +1348,7 @@ declare const createApp: <const ExtraPlugins extends readonly import("@moku-labs
|
|
|
1303
1348
|
paused: boolean;
|
|
1304
1349
|
resumed: boolean;
|
|
1305
1350
|
};
|
|
1306
|
-
}> & Record<never, never>) | (import("@moku-labs/core").PluginInstance<"model", Config$
|
|
1351
|
+
}> & Record<never, never>) | (import("@moku-labs/core").PluginInstance<"model", Config$4, State$4, {
|
|
1307
1352
|
store: StoreApi;
|
|
1308
1353
|
rng: RngApi;
|
|
1309
1354
|
}, {
|
|
@@ -1311,7 +1356,7 @@ declare const createApp: <const ExtraPlugins extends readonly import("@moku-labs
|
|
|
1311
1356
|
roots: readonly Root[];
|
|
1312
1357
|
cause: "edge" | "rollback" | "restore" | "load";
|
|
1313
1358
|
};
|
|
1314
|
-
}> & Record<never, never>) | (import("@moku-labs/core").PluginInstance<"clock", Config, State, Api, {}> & Record<never, never>) | (import("@moku-labs/core").PluginInstance<"flow", Config$
|
|
1359
|
+
}> & Record<never, never>) | (import("@moku-labs/core").PluginInstance<"clock", Config$1, State$1, Api, {}> & Record<never, never>) | (import("@moku-labs/core").PluginInstance<"flow", Config$2, State$2, Api$1, {
|
|
1315
1360
|
"flow:edge": {
|
|
1316
1361
|
flow: string;
|
|
1317
1362
|
node: string;
|
|
@@ -1348,14 +1393,15 @@ declare const createApp: <const ExtraPlugins extends readonly import("@moku-labs
|
|
|
1348
1393
|
* });
|
|
1349
1394
|
* ```
|
|
1350
1395
|
*/
|
|
1351
|
-
declare const createPlugin: import("@moku-labs/core").BoundCreatePluginFunction<Config$
|
|
1396
|
+
declare const createPlugin: import("@moku-labs/core").BoundCreatePluginFunction<Config$8, Events$1, import("@moku-labs/core").CoreApisFromTuple<[import("@moku-labs/core").CorePluginInstance<"log", import("@moku-labs/common/browser").LogConfig, import("@moku-labs/common/browser").LogState, import("@moku-labs/common/browser").LogApi>, import("@moku-labs/core").CorePluginInstance<"env", import("@moku-labs/common/browser").EnvConfig, import("@moku-labs/common/browser").EnvState, import("@moku-labs/common/browser").EnvApi>]>>;
|
|
1352
1397
|
/**
|
|
1353
1398
|
* Binds the authoring helpers to the types of one game: "createApp for a game". Each plugin binds
|
|
1354
1399
|
* its own helpers (`flowFor`, `projectionFor`, `componentsFor`, `bundlesFor`, `scenesFor`); this
|
|
1355
1400
|
* only spreads them, so the kit's type is inferred and never written by hand. At run time these
|
|
1356
1401
|
* are the same functions and component objects the plugins export.
|
|
1357
1402
|
*
|
|
1358
|
-
* @returns The helpers typed with the game's `player`, `session`, `assets`, `bundles
|
|
1403
|
+
* @returns The helpers typed with the game's `player`, `session`, `assets`, `bundles`, `strings`
|
|
1404
|
+
* and `emitters`.
|
|
1359
1405
|
* @example
|
|
1360
1406
|
* ```ts
|
|
1361
1407
|
* // kit.ts of a game: bound once, imported by every node, flow and view file.
|
|
@@ -1364,6 +1410,16 @@ declare const createPlugin: import("@moku-labs/core").BoundCreatePluginFunction<
|
|
|
1364
1410
|
* ```
|
|
1365
1411
|
*/
|
|
1366
1412
|
declare function defineGame<Types extends GameTypes>(): {
|
|
1413
|
+
defineEmitter: (id: EmitterIdOf<Types>, config: Omit<EmitterConfig, "textures"> & {
|
|
1414
|
+
readonly textures: readonly Types["assets"][];
|
|
1415
|
+
}) => EmitterDefinition;
|
|
1416
|
+
Emitter: Narrowed<EmitterValue, {
|
|
1417
|
+
effect?: EmitterIdOf<Types>;
|
|
1418
|
+
active?: boolean;
|
|
1419
|
+
}>;
|
|
1420
|
+
Displacement: Narrowed<DisplacementValue, Partial<Omit<DisplacementValue, "map">> & {
|
|
1421
|
+
map?: Types["assets"];
|
|
1422
|
+
}>;
|
|
1367
1423
|
music: MusicDescriptor<Types["assets"]>;
|
|
1368
1424
|
defineComponent: typeof defineComponent;
|
|
1369
1425
|
defineStyle: <const Given extends Style<Types["assets"]>>(style: Given) => Readonly<Given>;
|
|
@@ -1392,6 +1448,9 @@ declare function defineGame<Types extends GameTypes>(): {
|
|
|
1392
1448
|
bus?: string;
|
|
1393
1449
|
}) => SfxDescriptor;
|
|
1394
1450
|
play: typeof play;
|
|
1451
|
+
Frames: Narrowed<FramesValue, Partial<Omit<FramesValue, "keys">> & {
|
|
1452
|
+
keys?: readonly Types["assets"][];
|
|
1453
|
+
}>;
|
|
1395
1454
|
defineScene: DefineScene<Types["assets"], BundlesOf<Types>>;
|
|
1396
1455
|
defineBundles: DefineBundles<BundlesOf<Types>>;
|
|
1397
1456
|
load: LoadBundles<BundlesOf<Types>>;
|
|
@@ -1415,14 +1474,14 @@ declare function defineGame<Types extends GameTypes>(): {
|
|
|
1415
1474
|
};
|
|
1416
1475
|
/**
|
|
1417
1476
|
* The screen plugins, in dependency order. A game with a screen spreads them into `plugins`;
|
|
1418
|
-
* a headless test leaves them out. V2: `world`, `renderer`, `input`, `assets`, `scenes`. V3 appends `anim`, `i18n`, `text`, `ui`; `audio`
|
|
1477
|
+
* a headless test leaves them out. V2: `world`, `renderer`, `input`, `assets`, `scenes`. V3 appends `anim`, `i18n`, `text`, `ui`; `audio`, `effects` and `platform` stay opt-in: `[...screen, effectsPlugin, audioPlugin, platformPlugin]`.
|
|
1419
1478
|
*
|
|
1420
1479
|
* @example
|
|
1421
1480
|
* ```ts
|
|
1422
1481
|
* createApp({ plugins: [...screen, boardFeature], pluginConfigs: { renderer: { mount: "#game" } } });
|
|
1423
1482
|
* ```
|
|
1424
1483
|
*/
|
|
1425
|
-
declare const screen: readonly [import("@moku-labs/core").PluginInstance<"world", Config$7, State$
|
|
1484
|
+
declare const screen: readonly [import("@moku-labs/core").PluginInstance<"world", Config$7, State$7, Api$5, {
|
|
1426
1485
|
"world:reconciled": {
|
|
1427
1486
|
mode: "play" | "direct";
|
|
1428
1487
|
projections: number;
|
|
@@ -1434,12 +1493,12 @@ declare const screen: readonly [import("@moku-labs/core").PluginInstance<"world"
|
|
|
1434
1493
|
hintsRouted: number;
|
|
1435
1494
|
hintsDropped: number;
|
|
1436
1495
|
};
|
|
1437
|
-
}> & Record<never, never>, import("@moku-labs/core").PluginInstance<"renderer", Config$
|
|
1496
|
+
}> & Record<never, never>, import("@moku-labs/core").PluginInstance<"renderer", Config$5, State$5, Api$3, {
|
|
1438
1497
|
"renderer:device-lost": {
|
|
1439
1498
|
kind: "webgpu" | "webgl";
|
|
1440
1499
|
reason: string;
|
|
1441
1500
|
};
|
|
1442
|
-
}> & Record<never, never>, import("@moku-labs/core").PluginInstance<"input", Config$
|
|
1501
|
+
}> & Record<never, never>, import("@moku-labs/core").PluginInstance<"input", Config$11, State$10, InputApi, {}> & Record<never, never>, import("@moku-labs/core").PluginInstance<"assets", Config$9, State$8, Api$6, {
|
|
1443
1502
|
"assets:bundle-loaded": {
|
|
1444
1503
|
bundle: string;
|
|
1445
1504
|
tier: Tier;
|
|
@@ -1458,13 +1517,13 @@ declare const screen: readonly [import("@moku-labs/core").PluginInstance<"world"
|
|
|
1458
1517
|
reason: "budget" | "request";
|
|
1459
1518
|
keys: readonly string[];
|
|
1460
1519
|
};
|
|
1461
|
-
}> & Record<never, never>, import("@moku-labs/core").PluginInstance<"scenes", Record<string, never>, State$
|
|
1520
|
+
}> & Record<never, never>, import("@moku-labs/core").PluginInstance<"scenes", Record<string, never>, State$16, ScenesApi, {
|
|
1462
1521
|
"scenes:changed": {
|
|
1463
1522
|
from: string | undefined;
|
|
1464
1523
|
to: string;
|
|
1465
1524
|
music: string | undefined;
|
|
1466
1525
|
};
|
|
1467
|
-
}> & Record<never, never>, import("@moku-labs/core").PluginInstance<"anim", Config$
|
|
1526
|
+
}> & Record<never, never>, import("@moku-labs/core").PluginInstance<"anim", Config$12, State$11, AnimApi, {
|
|
1468
1527
|
"anim:mark": {
|
|
1469
1528
|
animation: string;
|
|
1470
1529
|
mark: string;
|
|
@@ -1472,10 +1531,10 @@ declare const screen: readonly [import("@moku-labs/core").PluginInstance<"world"
|
|
|
1472
1531
|
"anim:finished": {
|
|
1473
1532
|
animation: string;
|
|
1474
1533
|
};
|
|
1475
|
-
}> & Record<never, never>, import("@moku-labs/core").PluginInstance<"i18n", Config$
|
|
1534
|
+
}> & Record<never, never>, import("@moku-labs/core").PluginInstance<"i18n", Config$10, State$9, I18nApi, {
|
|
1476
1535
|
"i18n:locale-changed": {
|
|
1477
1536
|
locale: string;
|
|
1478
1537
|
};
|
|
1479
|
-
}> & Record<never, never>, import("@moku-labs/core").PluginInstance<"text", Config$
|
|
1538
|
+
}> & Record<never, never>, import("@moku-labs/core").PluginInstance<"text", Config$13, State$12, TextApi, {}> & Record<never, never>, import("@moku-labs/core").PluginInstance<"ui", Config$14, State$13, UiApi, {}> & Record<never, never>];
|
|
1480
1539
|
//#endregion
|
|
1481
|
-
export { types_d_exports as Anim, Animation, types_d_exports$1 as Assets, types_d_exports$2 as Audio, Box, types_d_exports$3 as Clock, type DescriptionNode, Display, Draggable, DropTarget, Exiting, types_d_exports$
|
|
1540
|
+
export { Alpha, types_d_exports as Anim, Animation, types_d_exports$1 as Assets, types_d_exports$2 as Audio, type BackResult, Blur, Box, types_d_exports$3 as Clock, ColorMatrix, type DescriptionNode, Displacement, Display, Draggable, DropTarget, types_d_exports$4 as Effects, Emitter, Exiting, types_d_exports$5 as Flow, Frames, Glow, HAPTIC_KINDS, type HapticKind, Held, Hovered, types_d_exports$6 as I18n, types_d_exports$7 as Input, Layer, types_d_exports$8 as Lifecycle, LocalWrite, types_d_exports$9 as Model, NineSlice, Noise, Order, Outline, Parent, types_d_exports$10 as Platform, type PlatformProvider, Pointer, PointerOver, Pressable, Pressed, types_d_exports$11 as Renderer, SaveUnreadableError, types_d_exports$12 as Scenes, Shape, Sprite, Swipeable, Tappable, Text, types_d_exports$13 as TextTypes, types_d_exports$14 as Time, Touchable, Transform, Tree, types_d_exports$15 as Ui, types_d_exports$16 as World, animPlugin, assetsPlugin, audioPlugin, clockPlugin, component, createApp, createPlugin, defineAnimation, defineBundles, defineComponent, defineEmitter, defineFeature, defineFilter, defineGame, defineMotion, defineScene, defineStyle, defineTextStyles, defineTokens, effectsPlugin, exit, external, flowPlugin, frames, guide, haptic, hint, i18nPlugin, inputPlugin, label, lifecyclePlugin, load, mark, modelPlugin, music, mut, parallel, platformPlugin, play, popup, projection, rendererPlugin, resolve, resource, scenesPlugin, schedule, screen, sequence, set, sfx, slot, spawn, spawned, sprite, stagger, system, tag, textPlugin, timePlugin, to, tr, tween, type, uiPlugin, use, wait, worldPlugin };
|