avocado-old/packages/entity/trait/registry.js

31 lines
686 B
JavaScript
Raw Normal View History

2019-09-30 19:23:11 -05:00
let traitId = 0;
const idToTraitMap = new Map();
const traitToIdMap = new Map();
const traitRegistry = new Map();
export function registerTrait(Trait) {
2019-10-15 03:28:54 -05:00
const hadTrait = traitRegistry.has(Trait.type());
traitRegistry.set(Trait.type(), Trait);
2019-10-15 03:28:54 -05:00
if (!hadTrait) {
traitToIdMap.set(Trait.type(), traitId);
idToTraitMap.set(traitId, Trait.type());
traitId += 1;
}
}
export function hasTrait(type) {
return traitRegistry.has(type);
}
2019-09-30 19:23:11 -05:00
export function idFromTrait(Trait) {
2019-10-15 03:28:54 -05:00
return traitToIdMap.get(Trait.type());
2019-09-30 19:23:11 -05:00
}
export function lookupTrait(type) {
return traitRegistry.get(type);
}
2019-09-30 19:23:11 -05:00
export function traitFromId(id) {
2019-10-15 03:28:54 -05:00
return lookupTrait(idToTraitMap.get(id));
2019-09-30 19:23:11 -05:00
}