@woosh/meep-engine
Version:
Pure JavaScript game engine. Fully featured and production ready.
85 lines (70 loc) • 1.4 kB
JavaScript
import { MarkerNodeConsumer } from "./MarkerNodeConsumer.js";
export class MarkerNodeConsumerBuffer extends MarkerNodeConsumer {
/**
*
* @type {MarkerNode[]}
*/
data = [];
/**
*
* @type {number}
*/
pointer = 0;
reset() {
this.pointer = 0;
}
/**
*
* @return {MarkerNode}
*/
last() {
return this.data[this.pointer - 1];
}
/**
*
* @return {boolean}
*/
isEmpty() {
return this.pointer <= 0;
}
/**
*
* @return {number}
*/
size() {
return this.pointer;
}
/**
*
* @param {number} index
* @return {MarkerNode}
*/
get(index) {
return this.data[index];
}
consume(node) {
this.data[this.pointer++] = node;
}
/**
*
* @param {MarkerNodeConsumer} target
*/
emit(target) {
const p = this.pointer;
for (let i = 0; i < p; i++) {
const node = this.data[i];
target.consume(node);
}
}
/**
*
* @param {GridData} grid
*/
writeToGrid(grid) {
const p = this.pointer;
for (let i = 0; i < p; i++) {
const node = this.data[i];
grid.addMarker(node);
}
}
}