Sha256: b98fb9db042e888be7c257ee963ad5b9f6fd0f43ed62a462a35965d5fc6aa6eb

Contents?: true

Size: 1.55 KB

Versions: 4

Compression:

Stored size: 1.55 KB

Contents

import { Button } from "../types/button";
import { Flip, Macro, Remap } from "../types/buttons_setting_type";

export const flip_types = ["disable", "always", "ifPress"] as const;
export type FlipType = typeof flip_types[number];

export class ButtonState {
  button: Button;
  flip?: Flip;
  remap?: Remap;

  constructor(button: Button, flip?: Flip, remap?: Remap) {
    this.button = button;
    this.flip = flip;
    this.remap = remap;
  };

  isDisabledFlip(): boolean {
    if(!this.flip && !this.remap) { return true }
    if(this.remap) { return true }
    if(!this.flip) { return false }
    return this.flip && !this.flip?.enable;
  }

  isAlwaysFlip(): boolean {
    if(!this.flip && !this.remap) { return false }
    if(this.isDisabledFlip()) { return false };
    return !!this.flip && !!this.flip.enable && (this.flip?.if_pressed || []) ?.length === 0;
  }

  isFlipIfPressedSelf(): boolean {
    if(!this.flip && !this.remap) { return false }
    if(this.isDisabledFlip() || this.isAlwaysFlip() || !this.flip || !this.flip.if_pressed) { return false }
    return this.flip.if_pressed.length === 1 && this.flip.if_pressed[0] === this.button;
  }

  isFlipIfPressedSomeButtons(): boolean {
    if(!this.flip) { return false }
    if(this.isDisabledFlip() || this.isAlwaysFlip() || this.isFlipIfPressedSelf()) { return false }
    return true;
  }

  hasFlipSetting(): boolean {
    return !this.isDisabledFlip();
  }

  isRemap(): boolean {
    if(this.hasFlipSetting()) { return false }
    if(this.remap && this.remap.to?.length > 0) { return true }
    return false;
  }
}

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
procon_bypass_man-web-0.1.3 src/lib/button_state.ts
procon_bypass_man-web-0.1.2 src/lib/button_state.ts
procon_bypass_man-web-0.1.1 src/lib/button_state.ts
procon_bypass_man-web-0.1.0 src/lib/button_state.ts