import { IOffsetData } from "./interfaces/offsetData"; import { Type } from "fsuipc"; import { MAPPINGS } from "./mappings/index"; import { OffsetCategory } from "./enums/offsetCategory"; export class Offset { public value: number = 0; public category: OffsetCategory = OffsetCategory.NAN; public name: string = ""; public type: Type = 0; public mapping: boolean = false; public length: number = 0; public convert: string = ""; public reverseConvert: string = ""; public permission: string = ""; public description: string = ""; //index [key: string]: any; constructor(offsetData: Partial) { Object.keys(offsetData).forEach((key: string) => { if (key in this) { this[key] = offsetData[key]; } }); } public get hasMapping(): boolean { return !!(this.mapping && this.convert); } public get isMappingInvalid(): boolean { return !MAPPINGS[this.convert]; } public get isInvalidConvertExpression(): boolean { return typeof this.convert !== "string"; } public get isInvalidReverseConvertExpression(): boolean { return typeof this.reverseConvert !== "string"; } public get mappingFunction(): (_: any) => any { return MAPPINGS[this.convert]; } }