https://github.com/you21979/node-binaryarray
https://github.com/you21979/node-binaryarray
binaryarray bitflags typescript
Last synced: 12 months ago
JSON representation
- Host: GitHub
- URL: https://github.com/you21979/node-binaryarray
- Owner: you21979
- License: mit
- Created: 2015-11-28T05:36:07.000Z (about 10 years ago)
- Default Branch: master
- Last Pushed: 2018-04-25T03:06:58.000Z (almost 8 years ago)
- Last Synced: 2024-10-22T17:22:46.322Z (over 1 year ago)
- Topics: binaryarray, bitflags, typescript
- Language: TypeScript
- Size: 37.1 KB
- Stars: 0
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# binaryarray
[](https://nodei.co/npm/binaryarray)
[](https://travis-ci.org/you21979/node-binaryarray)
[](https://coveralls.io/r/you21979/node-binaryarray)
## 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")
}
```