import p5 from 'p5'; import { Socket } from 'socket.io'; import { Environment, Id, Interpreter } from 'wollok-ts'; import { GameProject, MediaFile } from './gameProject.js'; import { GameSound } from './gameSound.js'; import { Howl } from 'howler'; import { BoardState, Position, Resolution, SoundState, VisualState } from './utils.js'; interface GameState { images: Map; sounds: Map; currentSounds: Map; gamePaused: boolean; audioMuted: boolean; } export interface Game { start(canvasParent?: Element): void; get running(): boolean; get board(): BoardState; get visuals(): VisualState[]; get canvasResolution(): Resolution; get soundStates(): SoundState[]; queueKeyPressEvent(...events: string[]): void; queueKeyReleaseEvent(...events: string[]): void; queueMouseClickedEvent(position: Position): void; queueDoubleClickedEvent(position: Position): void; flushEvents(ms: number): void; step(sketch: p5, gameState: GameState): void; } export declare class LocalGame implements Game { environment: Environment; project: GameProject; interpreter: Interpreter; constructor(project: GameProject); start(canvasParent?: HTMLElement): p5; get running(): boolean; get board(): BoardState; get visuals(): VisualState[]; get canvasResolution(): Resolution; get soundStates(): SoundState[]; queueKeyPressEvent(...events: string[]): void; queueKeyReleaseEvent(...events: string[]): void; queueMouseClickedEvent(position: Position): void; queueDoubleClickedEvent(position: Position): void; flushEvents(ms: number): void; step(sketch: p5, gameState: GameState): void; private get gameObject(); } export declare class SocketGame implements Game { socket: Socket; board: BoardState; images: MediaFile[]; sounds: MediaFile[]; visuals: VisualState[]; soundStates: SoundState[]; running: boolean; constructor(socket: Socket); start(canvasParent?: HTMLElement): p5; get canvasResolution(): Resolution; queueKeyPressEvent(...events: string[]): void; queueKeyReleaseEvent(...events: string[]): void; queueMouseClickedEvent(position: Position): void; queueDoubleClickedEvent(position: Position): void; flushEvents(_ms: number): void; step(sketch: p5, gameState: GameState): void; } export default Game;