import BitFlag from './BitFlag'; const AFF_BITS_MAX = 64; export default class AffectBitFlag { private flags: [BitFlag, BitFlag]; constructor(v1 = 0, v2 = 0) { this.flags = [new BitFlag(v1), new BitFlag(v2)]; } isSet(flag: number): boolean { if (flag <= 0 || flag > AFF_BITS_MAX) return false; const index = Math.floor((flag - 1) / 32); const bit = 1 << ((flag - 1) % 32); return this.flags[index].is(bit); } set(flag: number): void { if (flag <= 0 || flag > AFF_BITS_MAX) return; const index = Math.floor((flag - 1) / 32); const bit = 1 << ((flag - 1) % 32); this.flags[index].set(bit); } reset(flag: number): void { if (flag <= 0 || flag > AFF_BITS_MAX) return; const index = Math.floor((flag - 1) / 32); const bit = 1 << ((flag - 1) % 32); this.flags[index].remove(bit); } toggle(flag: number): void { if (flag <= 0 || flag > AFF_BITS_MAX) return; const index = Math.floor((flag - 1) / 32); const bit = 1 << ((flag - 1) % 32); this.flags[index].toggle(bit); } getFlags(): [number, number] { return [this.flags[0].getFlag(), this.flags[1].getFlag()]; } }