@hiddentao/clockwork-engine
Version:
A TypeScript/PIXI.js game engine for deterministic, replayable games with built-in rendering
40 lines (39 loc) • 1.15 kB
JavaScript
export class RecordedEventSource {
constructor(events) {
this.currentIndex = 0;
// Clone the events array to prevent external modifications
this.events = events.map((event) => ({ ...event }));
this.currentIndex = 0;
}
/**
* Get events for the current tick
* Returns all events that are due for this tick or earlier
*/
getNextEvents(totalTicks) {
const readyEvents = [];
while (this.currentIndex < this.events.length) {
const event = this.events[this.currentIndex];
// Only return events that are due for the current tick or earlier
if (event.tick <= totalTicks) {
readyEvents.push(event);
this.currentIndex++;
}
else {
break;
}
}
return readyEvents;
}
/**
* Check if there are more events available
*/
hasMoreEvents() {
return this.currentIndex < this.events.length;
}
/**
* Reset the event source to the beginning of the recording
*/
reset() {
this.currentIndex = 0;
}
}