mwg API
    Preparing search index...

    Class MessageBox

    The dialogue box.

    It reveals text a character at a time, advances page by page on confirm, and can end on a set of choices. Pressing confirm while text is still appearing completes the page instead of advancing: the behaviour every player expects, and the reason the reveal is driven by a character count rather than by animating the label.

    This is the one window that is not closable by cancel: a conversation ends when it ends, or a cutscene would be left half-run. It swallows clicks for the same reason, and because it is not closable that can only ever swallow them: a click under the box does not move the player or open something, it does nothing at all.

    import { MessageBox } from '@datamoc/mw_games/two-d/ui';

    const box = new MessageBox({
    width: 400,
    height: 120,
    pages: [
    { text: 'The old door creaks open. {sound:door-creak.wav}' },
    { speaker: 'Guard', text: 'Who goes there?' },
    ],
    choices: [{ text: 'A friend' }, { text: 'None of your business' }],
    onDone: (chosen) => console.log('player answered', chosen),
    onSound: (path) => console.log('play sound', path),
    });

    box.handleAction('confirm'); // reveals the rest of the first page instantly
    box.handleAction('confirm'); // advances to the second page

    Hierarchy (View Summary)

    Index
    anchor: "center" | "bottom" | "top"
    closable: boolean
    content: Container<ContainerChild> = ...
    delegate: { handleAction(action: string): boolean } | null = null

    A widget offered actions before the window itself sees them.

    Set it to the list or field the window exists to show. Without it, every window holding a widget has to override handleAction just to forward, which is noise at best and, done by assigning over the method, a trap.

    dims: boolean
    modal: boolean
    onClose: Signal<void> = ...
    • get closed(): boolean

      true once close() (or destroy()) has run. A closed window is spent: close() freed it and its contents through Pixi, so the caller's this.someWindow reference must not be written to any more. Guard with this rather than discovering it as a null-internal throw, and drop the reference.

      Returns boolean

    • get contentWidth(): number

      the space available inside the frame, which is what contents should lay out against

      Returns number

    • Announces the close and frees this window and its contents. Idempotent, so a second close() (a pop() racing a cancel, a closeAll() after a manual close) is a no-op rather than a second destroy. The instance is spent afterwards; see closed.

      Returns void

    • Removes all internal references and listeners as well as removes children from the display list. Do not use a Container after calling destroy.

      Parameters

      • Optionaloptions: DestroyOptions

        Options parameter. A boolean will act as if all options have been set to that value

      Returns void

      container.destroy();
      container.destroy(true);
      container.destroy({ children: true });
      container.destroy({ children: true, texture: true, textureSource: true });
    • Offered every action while this window is on top of the stack.

      Parameters

      • action: string

      Returns boolean

      true if the window used it, which stops it going any further down

    • Offered a click that landed on the blocker, at x, y in this window's own coordinates (its top-left corner is 0, 0). A click outside the window closes it when it is closable - the pointer's answer to handleAction('cancel') - and a click on the window itself is swallowed without closing, so its frame and empty body are never a dismiss button.

      The blocker calls this for every click it takes, which is all a game usually needs; it is public because it is also the whole decision, and a headless test can ask it directly.

      Parameters

      • x: number
      • y: number

      Returns boolean

      true when the click closed the window

    • positions the window in a viewport of the given size, per its anchor

      Parameters

      • viewportWidth: number
      • viewportHeight: number

      Returns void