binaryarray

the binary array

Usage no npm install needed!

<script type="module">
  import binaryarray from 'https://cdn.skypack.dev/binaryarray';
</script>

README

binaryarray

NPM
Build Status Coverage Status

install

npm i binaryarray

usage

simple

var BinaryArray = require('binaryarray');
var all_off = BinaryArray.loadFromArray([0,0,0,0,0,0,0,0]);
var all_on = BinaryArray.loadFromArray([1,1,1,1,1,1,1,1]);

application1

  • event flag
var BinaryArray = require('binaryarray');

var EVENT_CLEAR = {
    TUTORIAL : 0,
    QUEST1 : 1,
    QUEST2 : 2,
    QUEST3 : 3,
    QUEST4 : 4,
    QUEST5 : 5,
    QUEST6 : 6,
    LASTBOSS : 7,
}
var EVENT_CLEAR_MAX = Math.max.apply(Math, Object.keys(EVENT_CLEAR).map(function(k){ return EVENT_CLEAR[k] })) + 1;

var ba = new BinaryArray(EVENT_CLEAR_MAX)

ba.bitOn(EVENT_CLEAR.TUTORIAL);
ba.bitOn(EVENT_CLEAR.QUEST1);
ba.bitOn(EVENT_CLEAR.QUEST4);

var save = ba.toArray();
var ba2 = BinaryArray.loadFromArray(save);
console.log(save);
console.log(ba2.toArray());

ba2.bitOn(2);
ba2.bitOn(3);
ba2.bitOff(4);
console.log(ba.toHexString())
console.log(ba2.toHexString())


if(ba.at(EVENT_CLEAR.QUEST4)) console.log("ok")
if(!ba2.at(EVENT_CLEAR.QUEST4)) console.log("ok")

  • typescript
import BinaryArray = require('binaryarray')

enum EVENT_CLEAR {
    TUTORIAL,
    QUEST1,
    QUEST2,
    QUEST3,
    QUEST4,
    QUEST5,
    QUEST6,
    LASTBOSS,
    _SIZEOF
}
const ba = new BinaryArray(EVENT_CLEAR._SIZEOF)

ba.bitOn(EVENT_CLEAR.TUTORIAL);
ba.bitOn(EVENT_CLEAR.QUEST1);
ba.bitOn(EVENT_CLEAR.QUEST4);

const save = ba.toArray();
const ba2 = BinaryArray.loadFromArray(save);
console.log(save);
console.log(ba2.toArray());

ba2.bitOn(2);
ba2.bitOn(3);
ba2.bitOff(4);
console.log(ba.toHexString())
console.log(ba2.toHexString())

if(ba.at(EVENT_CLEAR.QUEST4)) console.log("ok")
if(!ba2.at(EVENT_CLEAR.QUEST4)) console.log("ok")

application2

  • job category
"use strict"
const BinaryArray = require("binaryarray")

const JOB = Object.freeze({
    NONE : 0,
    FIGHTER : 1,
    MAGE : 2,
    PRIEST : 3,
    MONK : 4,
    KNIGHT : 5,
    SUMMONER : 6,
});

const JOB_MAX = Math.max.apply(Math, Object.keys(JOB).map(k => JOB[k] )) + 1;

let JOB_GROUP = {
    TANK : BinaryArray.deserialize([
        'FIGHTER',
        'MONK',
        'KNIGHT'
    ], JOB, JOB_MAX),
    CASTER : BinaryArray.deserialize([
        'MAGE',
        'PRIEST',
        'SUMMONER'
    ], JOB, JOB_MAX),
    HEALER : BinaryArray.deserialize([
        'PRIEST'
    ], JOB, JOB_MAX),
    EXJOB : BinaryArray.deserialize([
        'SUMMONER',
        'KNIGHT'
    ], JOB, JOB_MAX),
}

let job_id = JOB.FIGHTER;
if( JOB_GROUP.TANK.at(job_id) ){
    console.log("tank job")
}else{
    console.log("not tank job")
}