Skip to main content

DialogMenu <ModeType, ClickedObj, PropType>

Abstract base class for a simplistic DOM subscreen with three-ish components:

  • A menubar with a set of buttons which are generally heterogeneous in function (e.g. perform arbitrary, unrelated task #1, #2 or #3)
  • A status message of some sort
  • A grid with some type of misc element, generally a set of buttons homogeneous in function (e.g. equip item #1, #2 or #3). See below for more details.

Grid button clicks

Grid button clicks in the ids.grid-referenced element generally involve the following four steps:

  1. The click listener (see eventListeners._ClickButton) performs some basic generic validation, like checking whether the character has been initialized. A validation failure is considered an internal error, and will lead to a premature termination of the click event.
  2. The click listener retrieves some type of underlying object associated with the grid button, like an item or activity (see _GetClickedObject).
  3. The click listener performs more extensive, subscreen-/class-specific validation (see GetClickStatus), like checking whether an item has not been blacklisted. A validation failure here will trigger a soft reload, updating the status message and re-evaluating the enabled/disabled state of all pre-existing grid buttons.
  4. The click listener finally performs a subscreen-/class-specific action based on the grid button click, like equipping an item (see _ClickButton).

Parameters

@abstract

Hierarchy

Index

Constructors

constructor

  • new DialogMenu<ModeType, ClickedObj, PropType>(mode: ModeType): DialogMenu<ModeType, ClickedObj, PropType>
  • Type parameters

    Parameters

    • mode: ModeType

      The name of the mode associated with this instance

    Returns DialogMenu<ModeType, ClickedObj, PropType>

Properties

_initProperties

_initProperties: PropType = null

An object for storing all of this classes init properties.

Subclasses should generally implement a public getter/setter interface for safely manipulating each property stored herein.

readonly_initPropertyNames

_initPropertyNames: readonly keyof PropType[]

A list of all init property names as supported by this class. Represents the set of keys that will be stored in _initProperties

@abstract

readonlyclickStatusCallbacks

clickStatusCallbacks: Record<string, (C: Character, clickedObj: ClickedObj, equippedItem?: Item) => string>

An object mapping IDs to DialogMenu.GetClickStatus helper functions. Used for evaluating the error statuses of item clicks.

Additional checks can be freely added here.

@abstract

readonlydefaultShape

defaultShape: readonly [number, number, number, number] = ...

The default position & shape of the current subscreen as defined by the root element.

See DialogMenu.shape.

readonlyeventListeners

eventListeners: { _ClickButton: (this: HTMLButtonElement, ev: MouseEvent) => string; _ClickDisabledButton: (this: HTMLButtonElement, ev: MouseEvent) => string; _ClickPaginateNext: (this: HTMLButtonElement, ev: MouseEvent) => void; _ClickPaginatePrev: (this: HTMLButtonElement, ev: MouseEvent) => void; _WheelGrid: (this: HTMLDivElement, event: WheelEvent) => void }

An object containg all event listeners referenced in the DialogMenu subclass.


Type declaration

  • _ClickButton: (this: HTMLButtonElement, ev: MouseEvent) => string
    @returns

    A status message if an unexpected error is encountered and null otherwise

      • (this: HTMLButtonElement, ev: MouseEvent): string
      • Parameters

        • this: HTMLButtonElement
        • ev: MouseEvent

        Returns string

  • _ClickDisabledButton: (this: HTMLButtonElement, ev: MouseEvent) => string
    @returns

    A status message if an expected error is encountered and null otherwise

      • (this: HTMLButtonElement, ev: MouseEvent): string
      • Parameters

        • this: HTMLButtonElement
        • ev: MouseEvent

        Returns string

  • _ClickPaginateNext: (this: HTMLButtonElement, ev: MouseEvent) => void
      • (this: HTMLButtonElement, ev: MouseEvent): void
      • Parameters

        • this: HTMLButtonElement
        • ev: MouseEvent

        Returns void

  • _ClickPaginatePrev: (this: HTMLButtonElement, ev: MouseEvent) => void
      • (this: HTMLButtonElement, ev: MouseEvent): void
      • Parameters

        • this: HTMLButtonElement
        • ev: MouseEvent

        Returns void

  • _WheelGrid: (this: HTMLDivElement, event: WheelEvent) => void

    Provide more consistent mouse wheel scroll behavior by using browser-independent increments.

      • (this: HTMLDivElement, event: WheelEvent): void
      • Parameters

        • this: HTMLDivElement
        • event: WheelEvent

        Returns void

readonlyids

ids: Readonly<Record<string, string> & { grid?: string; icon?: string; menubar?: string; paginate?: string; root: string; status?: string }>

An object containg all DOM element IDs referenced in the DialogMenu subclass.

@abstract

readonlymode

mode: ModeType

The name of the mode associated with this instance (see DialogMenuMode).

Accessors

C

  • get C(): PropType[C]
  • set C(value: PropType[C]): void
  • Get or set the currently selected character.

    Performs a hard DialogMenu.Reload if a new character is assigned.


    Returns PropType[C]

  • Parameters

    • value: PropType[C]

    Returns void

focusGroup

shape

  • Get or set the position & shape of the current subscreen as defined by the root element.

    Performs a DialogMenu.Resize if a new shape is assigned.


    Returns RectTuple

  • Parameters

    Returns void

Methods

Click

  • Click(event: MouseEvent | TouchEvent): void
  • Parameters

    • event: MouseEvent | TouchEvent

    Returns void

Draw

  • Draw(): void
  • Returns void

Exit

  • Exit(): void
  • Returns void

GetClickStatus

  • GetClickStatus(C: Character, clickedObj: ClickedObj, equippedItem?: Item): string
  • Return an error status (if any) for when an item or activity is clicked.

    Error statuses are used for evaluating whether the relevant grid buttons must be disabled or not.


    Parameters

    • C: Character

      The target character

    • clickedObj: ClickedObj

      The item that is clicked

    • equippedItem: Item = null

      The item that is equipped (if any)

    Returns string

    • The error status or null if everything is ok

Init

  • Init(properties: PropType, style?: { shape?: RectTuple }): HTMLDivElement
  • Initialize the DialogMenu subscreen.

    Serves as a ScreenLoadHandler wrapper with added parameters.


    Parameters

    • properties: PropType

      The to be initialized character and any other properties

    • style: { shape?: RectTuple } = null

      Misc styling for the subscreen

    Returns HTMLDivElement

    The div containing the dialog subscreen root element or null if the screen failed to initialize

KeyDown

  • KeyDown(event: KeyboardEvent): boolean
  • Parameters

    • event: KeyboardEvent

    Returns boolean

Load

  • Load(): void
  • Returns void

Reload

  • Reload(properties?: Partial<PropType>, options?: ReloadOptions): Promise<boolean>
  • Reload the subscreen, updating the DOM elements and, if required, re-assigning the character and focus group.


    Parameters

    • properties: Partial<PropType> = null
    • optionaloptions: ReloadOptions = null

      Further customization options

    Returns Promise<boolean>

    • Whether an update was triggered or aborted

Resize

  • Resize(load: boolean): void
  • Parameters

    • load: boolean

    Returns void

Run

  • Run(time: number): void
  • Parameters

    • time: number

    Returns void

Unload

  • Unload(): void
  • Returns void

_ClickButton

  • _ClickButton(button: HTMLButtonElement, C: Character, clickedObj: ClickedObj, equippedItem: Item): void
  • Helper function for handling the clicks of succesfully validated grid button clicks.

    @abstract

    Parameters

    • button: HTMLButtonElement

      The clicked button

    • C: Character

      The target character

    • clickedObj: ClickedObj

      The buttons underlying object (item or activity)

    • equippedItem: Item

      The currently equipped item

    Returns void

_ConstructPaginateButtons

  • _ConstructPaginateButtons(id: string): HTMLDivElement

  • Parameters

    • id: string

    Returns HTMLDivElement

_GetClickedObject

  • _GetClickedObject(button: HTMLButtonElement): ClickedObj
  • Return the underlying item or activity object of the passed grid button.

    @abstract

    Parameters

    • button: HTMLButtonElement

      The clicked button

    Returns ClickedObj

    • The button's underlying item or activity object

_Load

  • _Load(): HTMLElement
  • Construct and return the (unpopulated) DialogMenu.ids.root element.

    @abstract

    Returns HTMLElement

_Reload

_ReloadButtonGrid

  • _ReloadButtonGrid(root: HTMLElement, buttonGrid: HTMLElement, properties: PropType, options: Pick<ReloadOptions, reset | resetScrollbar | resetDialogItems>): void

_ReloadIcon

  • _ReloadIcon(root: HTMLElement, icon: HTMLElement, properties: PropType, options: Pick<ReloadOptions, never>): void

_ReloadMenubar

  • _ReloadMenubar(root: HTMLElement, menubar: HTMLElement, properties: PropType, options: Pick<ReloadOptions, reset>): void

_ReloadStatus

  • _ReloadStatus(root: HTMLElement, status: HTMLElement, properties: PropType, options: Pick<ReloadOptions, status | statusTimer>): void

_ReloadValidate

  • _ReloadValidate(properties: Partial<PropType>): { param?: never; status: false } | { param: ReloadParam<PropType>; status: true }

  • Parameters

    • properties: Partial<PropType>

    Returns { param?: never; status: false } | { param: ReloadParam<PropType>; status: true }