phaser3-rex-plugins
Version:
261 lines (242 loc) • 6 kB
TypeScript
import EventEmitter from '../../utils/eventemitter/EventEmitter.js';
export default RealTimeTimers;
declare namespace RealTimeTimers {
/**
* Timer data object.
*/
interface ITimer {
/**
* Timer name.
*/
name: string | number,
/**
* Start timestamp.
*/
start: number,
/**
* Period in milliseconds.
*/
period: number,
/**
* Custom data payload.
*/
data?: any
}
/**
* Serializable state.
*/
interface IState {
/**
* Timer list.
*/
timers?: ITimer[];
}
/**
* Callback that returns a timestamp.
*/
type GetTimestampCallbackType = () => number;
/**
* Configuration options for creating RealTimeTimers.
*/
interface IConfig extends IState {
/**
* Custom timestamp callback.
*/
getTimestampCallback?: GetTimestampCallbackType;
/**
* Start timestamp value.
*/
startTimestamp?: number;
}
/**
* Period expressed as time parts.
*/
interface IPeriod {
/**
* Day count.
*/
day?: number, d?: number,
/**
* Hour count.
*/
hour?: number, h?: number,
/**
* Minute count.
*/
minute?: number, m?: number,
/**
* Second count.
*/
second?: number, s?: number,
}
/**
* Progress data for a timer.
*/
interface IProgress {
/**
* Timer name.
*/
name: string | number,
/**
* Timer period.
*/
period: number,
/**
* Elapsed time in milliseconds.
*/
elapsed: number,
/**
* Progress ratio from 0 to 1.
*/
progress: number,
/**
* Source timer.
*/
timer: ITimer
}
}
/**
* Real-time timer manager with serialization.
*/
declare class RealTimeTimers extends EventEmitter {
/**
* Create a RealTimeTimers instance.
*
* @param config - Configuration options.
*/
constructor(
config?: RealTimeTimers.IConfig
);
/**
* Timer list.
*/
timers: RealTimeTimers.ITimer[];
/**
* Reset from JSON state.
*
* @param state - Serialized state.
* @returns This RealTimeTimers instance.
*/
resetFromJSON(state?: RealTimeTimers.IState): this;
/**
* Serialize to JSON state.
*
* @returns Serialized state.
*/
toJSON(): RealTimeTimers.IState;
/**
* Set start timestamp.
*
* @param timestamp - Start timestamp.
* @returns This RealTimeTimers instance.
*/
setStartTimestamp(timestamp?: number): this;
/**
* Set timestamp callback.
*
* @param callback - Timestamp callback.
* @returns This RealTimeTimers instance.
*/
setGetTimestampCallback(callback?: RealTimeTimers.GetTimestampCallbackType): this;
/**
* Add a timer.
*
* @param name - Timer name.
* @param period - Timer period in ms or parts.
* @param data - Custom data.
* @param currentTimestamp - Current timestamp.
* @returns This RealTimeTimers instance.
*/
addTimer(
name: string | number,
period: number | RealTimeTimers.IPeriod,
data?: any,
currentTimestamp?: number
): this;
/**
* Increase a timer period.
*
* @param name - Timer name.
* @param period - Period to add in ms or parts.
* @returns This RealTimeTimers instance.
*/
incTimerPeriod(
name: string | number,
period: number | RealTimeTimers.IPeriod
): this;
/**
* Get expired timers.
*
* @param currentTimestamp - Current timestamp.
* @returns Expired timers.
*/
getExpiredTimers(currentTimestamp?: number): RealTimeTimers.ITimer[];
/**
* Pop expired timers.
*
* @param currentTimestamp - Current timestamp.
* @returns Expired timers.
*/
popExpiredTimers(currentTimestamp?: number): RealTimeTimers.ITimer[];
/**
* Get progress for all timers.
*
* @param currentTimestamp - Current timestamp.
* @returns Progress list.
*/
getTimersProgress(currentTimestamp?: number): RealTimeTimers.IProgress[];
/**
* Get all timers.
*
* @returns Timer list.
*/
getTimers(): RealTimeTimers.ITimer[];
/**
* Get timers by name.
*
* @param name - Timer name.
* @returns Timer list.
*/
getTimers(name: string | number): RealTimeTimers.ITimer[];
/**
* Last timer in the list.
*/
readonly lastTimer: RealTimeTimers.ITimer;
/**
* Number of timers.
*/
readonly length: number;
/**
* Remove timers by name.
*
* @param name - Timer name.
* @returns This RealTimeTimers instance.
*/
removeTimers(name: string | number): this;
/**
* Remove a timer by object.
*
* @param timer - Timer instance.
* @returns This RealTimeTimers instance.
*/
removeTimers(timer: RealTimeTimers.ITimer): this;
/**
* Remove timers by list.
*
* @param timers - Timer list.
* @returns This RealTimeTimers instance.
*/
removeTimers(timers: RealTimeTimers.ITimer[]): this;
/**
* Clear all timers.
*
* @returns This RealTimeTimers instance.
*/
clearTimers(): this;
/**
* Emit an update event.
*
* @returns This RealTimeTimers instance.
*/
emitUpdateEvent(): this;
}