@gdquest/gd-exercise
Version:
Core package that handles logic for the GDExercise project.
100 lines • 4.52 kB
text/typescript
import { type GdExerciseFile, type GdExerciseLog, type GdProjectSettings } from "./utils.mts";
export declare const GdMessageTypeContent: {
readonly READY: "READY";
readonly INIT: "INIT";
readonly DONE: "DONE";
readonly LOAD_PLAYER_PROJECT_FILE: "LOAD_PLAYER_PROJECT_FILE";
readonly LOAD_PLAYER_PROJECT_DIRECTORY: "LOAD_PLAYER_PROJECT_DIRECTORY";
readonly LOAD_PLAYER_PROJECT_SETTINGS: "LOAD_PLAYER_PROJECT_SETTINGS";
readonly LOAD_PLAYER_ENGINE: "LOAD_PLAYER_ENGINE";
readonly PLAYER_PROGRESS: "PLAYER_PROGRESS";
readonly SET_PLAYER_SCENE_TO_LOAD_PATH: "SET_PLAYER_SCENE_TO_LOAD_PATH";
readonly LOAD_CODE_EDITOR_FILE: "LOAD_CODE_EDITOR_FILE";
readonly FOCUS_CODE_EDITOR_FILE: "FOCUS_CODE_EDITOR_FILE";
readonly SCRIPT_UPDATED: "SCRIPT_UPDATED";
readonly SCRIPT_ERROR: "SCRIPT_ERROR";
readonly SCRIPT_LOG: "SCRIPT_LOG";
};
export type GdMessageType = keyof typeof GdMessageTypeContent;
export interface GdMessageSource {
[GdMessageTypeContent.READY]: GdMessageReady;
[GdMessageTypeContent.INIT]: GdMessageInit;
[GdMessageTypeContent.DONE]: GdMessageDone;
[GdMessageTypeContent.LOAD_PLAYER_PROJECT_FILE]: GdMessageLoadPlayerProjectFile;
[GdMessageTypeContent.LOAD_PLAYER_PROJECT_DIRECTORY]: GdMessageLoadPlayerProjectDirectory;
[GdMessageTypeContent.LOAD_PLAYER_PROJECT_SETTINGS]: GdMessageLoadPlayerProjectSettings;
[GdMessageTypeContent.LOAD_PLAYER_ENGINE]: GdMessageLoadPlayerEngine;
[GdMessageTypeContent.PLAYER_PROGRESS]: GdMessagePlayerProgress;
[GdMessageTypeContent.SET_PLAYER_SCENE_TO_LOAD_PATH]: GdMessageSetPlayerSceneToLoadPath;
[GdMessageTypeContent.LOAD_CODE_EDITOR_FILE]: GdMessageLoadCodeEditorFile;
[GdMessageTypeContent.FOCUS_CODE_EDITOR_FILE]: GdMessageFocusCodeEditorFile;
[GdMessageTypeContent.SCRIPT_UPDATED]: GdMessageScriptUpdated;
[GdMessageTypeContent.SCRIPT_ERROR]: GdMessageScriptError;
[GdMessageTypeContent.SCRIPT_LOG]: GdMessageScriptLog;
}
export interface GdMessage {
type: keyof GdMessageSource;
}
export interface GdMessageReady extends GdMessage {
type: typeof GdMessageTypeContent.READY;
origin: "CODE" | "GDEDITOR" | "GDPLAYER";
}
export interface GdMessageInit extends GdMessage {
type: typeof GdMessageTypeContent.INIT;
}
export interface GdMessageDone extends GdMessage {
type: typeof GdMessageTypeContent.DONE;
of: keyof GdMessageSource;
}
export interface GdMessageLoadPlayerProjectFile extends GdMessage {
type: typeof GdMessageTypeContent.LOAD_PLAYER_PROJECT_FILE;
path: string;
data: ArrayBuffer;
}
export interface GdMessageLoadPlayerProjectDirectory extends GdMessage {
type: typeof GdMessageTypeContent.LOAD_PLAYER_PROJECT_DIRECTORY;
path: string;
}
export interface GdMessageLoadPlayerProjectSettings extends GdMessage {
type: typeof GdMessageTypeContent.LOAD_PLAYER_PROJECT_SETTINGS;
settings: GdProjectSettings;
}
export interface GdMessageLoadPlayerEngine extends GdMessage {
type: typeof GdMessageTypeContent.LOAD_PLAYER_ENGINE;
}
export interface GdMessagePlayerProgress extends GdMessage {
type: typeof GdMessageTypeContent.PLAYER_PROGRESS;
current: number;
total: number;
status: "PROGRESS" | "INDETERMINATE" | "READY";
}
export interface GdMessageSetPlayerSceneToLoadPath extends GdMessage {
type: typeof GdMessageTypeContent.SET_PLAYER_SCENE_TO_LOAD_PATH;
scenePath: string;
}
export interface GdMessageLoadCodeEditorFile extends GdMessage {
type: typeof GdMessageTypeContent.LOAD_CODE_EDITOR_FILE;
file: GdExerciseFile;
}
export interface GdMessageFocusCodeEditorFile extends GdMessage {
type: typeof GdMessageTypeContent.FOCUS_CODE_EDITOR_FILE;
path: string;
}
export interface GdMessageScriptUpdated extends GdMessage {
type: typeof GdMessageTypeContent.SCRIPT_UPDATED;
file: GdExerciseFile;
}
export interface GdMessageScriptError extends GdMessage {
type: typeof GdMessageTypeContent.SCRIPT_ERROR;
error: string;
}
export interface GdMessageScriptLog extends GdMessage {
type: typeof GdMessageTypeContent.SCRIPT_LOG;
log: GdExerciseLog;
}
export declare function isGdMessage<T extends keyof GdMessageSource>(message: GdMessage, type: T): message is GdMessageSource[T];
export interface WaitForDoneOptions {
timeout?: number;
}
export declare function waitForGdMessageDone<T extends keyof GdMessageSource>(channel: BroadcastChannel, type: T, options?: WaitForDoneOptions): Promise<void>;
//# sourceMappingURL=message.d.mts.map