mirror of
https://github.com/litruv/picoGraph.git
synced 2026-07-24 02:36:04 +10:00
Add initial Pico-8 cartridges for testing
- Created test_cart.p8 with basic drawing functionality and a print statement. - Created test_unix.p8 with a simple initialization function.
This commit is contained in:
116
preload.js
116
preload.js
@@ -59,6 +59,122 @@ const api = {
|
||||
|
||||
return ipcRenderer.invoke("player:writeCart", cartContent);
|
||||
},
|
||||
|
||||
/**
|
||||
* Minimizes the current window.
|
||||
*
|
||||
* @returns {Promise<void>}
|
||||
*/
|
||||
minimizeWindow() {
|
||||
return ipcRenderer.invoke("window:minimize");
|
||||
},
|
||||
|
||||
/**
|
||||
* Toggles the current window maximize state.
|
||||
*
|
||||
* @returns {Promise<boolean>}
|
||||
*/
|
||||
toggleMaximizeWindow() {
|
||||
return ipcRenderer.invoke("window:toggle-maximize");
|
||||
},
|
||||
|
||||
/**
|
||||
* Closes the current window.
|
||||
*
|
||||
* @returns {Promise<void>}
|
||||
*/
|
||||
closeWindow() {
|
||||
return ipcRenderer.invoke("window:close");
|
||||
},
|
||||
|
||||
/**
|
||||
* Reads the current maximize state for the window.
|
||||
*
|
||||
* @returns {Promise<boolean>}
|
||||
*/
|
||||
getWindowMaximized() {
|
||||
return ipcRenderer.invoke("window:is-maximized");
|
||||
},
|
||||
|
||||
/**
|
||||
* Subscribes to maximize state changes.
|
||||
*
|
||||
* @param {(isMaximized: boolean) => void} callback
|
||||
* @returns {() => void}
|
||||
*/
|
||||
onWindowMaximizedChanged(callback) {
|
||||
if (typeof callback !== "function") {
|
||||
return () => {};
|
||||
}
|
||||
|
||||
const listener = (_event, isMaximized) => {
|
||||
callback(Boolean(isMaximized));
|
||||
};
|
||||
ipcRenderer.on("window:maximized-changed", listener);
|
||||
return () => {
|
||||
ipcRenderer.removeListener("window:maximized-changed", listener);
|
||||
};
|
||||
},
|
||||
|
||||
/**
|
||||
* Saves a tileset image file to the application data directory.
|
||||
*
|
||||
* @param {Uint8Array} fileBuffer The PNG file data
|
||||
* @param {string} suggestedName Suggested filename
|
||||
* @returns {Promise<{ filePath: string, fileName: string }>}
|
||||
*/
|
||||
saveTileset(fileBuffer, suggestedName) {
|
||||
if (!(fileBuffer instanceof Uint8Array)) {
|
||||
return Promise.reject(new TypeError("File buffer must be a Uint8Array"));
|
||||
}
|
||||
if (typeof suggestedName !== "string") {
|
||||
return Promise.reject(new TypeError("Suggested name must be a string"));
|
||||
}
|
||||
|
||||
return ipcRenderer.invoke("tileset:save", fileBuffer, suggestedName);
|
||||
},
|
||||
|
||||
/**
|
||||
* Shows a tileset file in the system file explorer.
|
||||
*
|
||||
* @param {string} filePath Path to the tileset file
|
||||
* @returns {Promise<void>}
|
||||
*/
|
||||
showTilesetInFolder(filePath) {
|
||||
if (typeof filePath !== "string") {
|
||||
return Promise.reject(new TypeError("File path must be a string"));
|
||||
}
|
||||
|
||||
return ipcRenderer.invoke("tileset:show-in-folder", filePath);
|
||||
},
|
||||
|
||||
/**
|
||||
* Reloads a tileset image from disk.
|
||||
*
|
||||
* @param {string} filePath Path to the tileset file
|
||||
* @returns {Promise<{ buffer: number[] }>}
|
||||
*/
|
||||
reloadTileset(filePath) {
|
||||
if (typeof filePath !== "string") {
|
||||
return Promise.reject(new TypeError("File path must be a string"));
|
||||
}
|
||||
|
||||
return ipcRenderer.invoke("tileset:reload", filePath);
|
||||
},
|
||||
|
||||
/**
|
||||
* Gets PICO-8 cart statistics using p8tool stats command.
|
||||
*
|
||||
* @param {string} cartContent Complete .p8 cart file content
|
||||
* @returns {Promise<{ tokens: number, lines: number, chars: number, rawOutput: string }>}
|
||||
*/
|
||||
getCartStats(cartContent) {
|
||||
if (typeof cartContent !== "string") {
|
||||
return Promise.reject(new TypeError("Cart content must be a string"));
|
||||
}
|
||||
|
||||
return ipcRenderer.invoke("cart:get-stats", cartContent);
|
||||
},
|
||||
};
|
||||
|
||||
contextBridge.exposeInMainWorld("electronAPI", api);
|
||||
|
||||
Reference in New Issue
Block a user