export enum ComponentType { POSITION = "POSITION", RENDERABLE = "RENDERABLE", TRAILING_POSITION = "TRAILING_POSITION", } export interface Component { name: ComponentType; } export interface PositionComponent extends Component { name: ComponentType.POSITION; x: number; y: number; } export interface TrailingPositionComponent extends Component { name: ComponentType.TRAILING_POSITION; trails: Array<{ x: number; y: number; time: number }>; } export interface RenderableComponent extends Component { name: ComponentType.RENDERABLE; }