UNPKG

@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
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; } }