tsinsim
Version:
An InSim library for Node.js (JavaScript runtime environment) with TypeScript support.
46 lines (45 loc) • 1.34 kB
JavaScript
import "reflect-metadata";
const key = Symbol("format");
export const char = (length) => {
return Reflect.metadata(key, { type: 'char', length });
};
export const byte = () => {
return Reflect.metadata(key, { type: 'byte', length: 1 });
};
export const word = () => {
return Reflect.metadata(key, { type: 'word', length: 2 });
};
export const short = () => {
return Reflect.metadata(key, { type: 'short', length: 2 });
};
export const unsigned = () => {
return Reflect.metadata(key, { type: 'unsigned', length: 4 });
};
export const int = () => {
return Reflect.metadata(key, { type: 'int', length: 4 });
};
export const float = () => {
return Reflect.metadata(key, { type: 'float', length: 4 });
};
export const vector = () => {
return Reflect.metadata(key, { type: 'vector', length: 12 });
};
export const vec = () => {
return Reflect.metadata(key, { type: 'vec', length: 12 });
};
export const getFormat = (target, propertyKey) => {
return Reflect.getMetadata(key, target, propertyKey);
};
class PacketHandler {
all = {};
set(constructor) {
this.all[constructor.name.replace('IS_', 'ISP_')] = constructor;
}
get(name) {
return this.all[name];
}
}
export const Packets = new PacketHandler;
export const define = (constructor) => {
Packets.set(constructor);
};