constructor()

in src/input/xbox-gamepad.ts [22:61]


  constructor(public pad: Gamepad) {
    const left = new DirectionalDebouncer(() => {
      /* left joystick                                 */
      return (
        this.pad.axes[0] < -XboxGamepadWrapper.joystickThreshold ||
        this.pad.buttons[Button.Left].pressed
      );
    });
    const right = new DirectionalDebouncer(() => {
      /* right joystick                               */
      return (
        this.pad.axes[0] > XboxGamepadWrapper.joystickThreshold ||
        this.pad.buttons[Button.Right].pressed
      );
    });
    const up = new DirectionalDebouncer(() => {
      /* up joystick                                   */
      return (
        this.pad.axes[1] < -XboxGamepadWrapper.joystickThreshold ||
        this.pad.buttons[Button.Up].pressed
      );
    });
    const down = new DirectionalDebouncer(() => {
      /* down joystick                                */
      return (
        this.pad.axes[1] > XboxGamepadWrapper.joystickThreshold ||
        this.pad.buttons[Button.Down].pressed
      );
    });

    this.events.set(Button.Left, now => left.attempt(now));
    this.events.set(Button.Right, now => right.attempt(now));
    this.events.set(Button.Up, now => up.attempt(now));
    this.events.set(Button.Down, now => down.attempt(now));

    for (const button of nonDirectionalButtons) {
      const debouncer = new FiredDebouncer(() => this.pad.buttons[button].pressed);
      this.events.set(button, () => debouncer.attempt());
    }
  }