mirror of
https://github.com/tobspr/shapez.io.git
synced 2025-12-13 18:21:51 +00:00
Add support for paste signals
This commit is contained in:
parent
459cc76d96
commit
8943dc045c
@ -8,6 +8,10 @@ const steam = require("./steam");
|
|||||||
const asyncLock = require("async-lock");
|
const asyncLock = require("async-lock");
|
||||||
const windowStateKeeper = require("electron-window-state");
|
const windowStateKeeper = require("electron-window-state");
|
||||||
|
|
||||||
|
// Disable hardware key handling, i.e. being able to pause/resume the game music
|
||||||
|
// with hardware keys
|
||||||
|
app.commandLine.appendSwitch("disable-features", "HardwareMediaKeyHandling");
|
||||||
|
|
||||||
const isDev = app.commandLine.hasSwitch("dev");
|
const isDev = app.commandLine.hasSwitch("dev");
|
||||||
const isLocal = app.commandLine.hasSwitch("local");
|
const isLocal = app.commandLine.hasSwitch("local");
|
||||||
const safeMode = app.commandLine.hasSwitch("safe-mode");
|
const safeMode = app.commandLine.hasSwitch("safe-mode");
|
||||||
|
|||||||
@ -106,17 +106,6 @@ class Mod extends shapez.Mod {
|
|||||||
// Add an atlas
|
// Add an atlas
|
||||||
this.modInterface.registerAtlas(RESOURCES["demoAtlas.png"], RESOURCES["demoAtlas.json"]);
|
this.modInterface.registerAtlas(RESOURCES["demoAtlas.png"], RESOURCES["demoAtlas.json"]);
|
||||||
|
|
||||||
this.modInterface.registerTranslations("en", {
|
|
||||||
ingame: {
|
|
||||||
interactiveTutorial: {
|
|
||||||
title: "Hello",
|
|
||||||
hints: {
|
|
||||||
"1_1_extractor": "World!",
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
});
|
|
||||||
|
|
||||||
// Register a new component
|
// Register a new component
|
||||||
this.modInterface.registerComponent(DemoModComponent);
|
this.modInterface.registerComponent(DemoModComponent);
|
||||||
|
|
||||||
@ -128,29 +117,29 @@ class Mod extends shapez.Mod {
|
|||||||
drawHooks: ["staticAfter"],
|
drawHooks: ["staticAfter"],
|
||||||
});
|
});
|
||||||
|
|
||||||
// Register the new building
|
// // Register the new building
|
||||||
this.modInterface.registerNewBuilding({
|
// this.modInterface.registerNewBuilding({
|
||||||
metaClass: MetaDemoModBuilding,
|
// metaClass: MetaDemoModBuilding,
|
||||||
buildingIconBase64: RESOURCES["demoBuilding.png"],
|
// buildingIconBase64: RESOURCES["demoBuilding.png"],
|
||||||
|
|
||||||
variantsAndRotations: [
|
// variantsAndRotations: [
|
||||||
{
|
// {
|
||||||
description: "A test building",
|
// description: "A test building",
|
||||||
name: "A test name",
|
// name: "A test name",
|
||||||
|
|
||||||
regularImageBase64: RESOURCES["demoBuilding.png"],
|
// regularImageBase64: RESOURCES["demoBuilding.png"],
|
||||||
blueprintImageBase64: RESOURCES["demoBuildingBlueprint.png"],
|
// blueprintImageBase64: RESOURCES["demoBuildingBlueprint.png"],
|
||||||
tutorialImageBase64: RESOURCES["demoBuildingBlueprint.png"],
|
// tutorialImageBase64: RESOURCES["demoBuildingBlueprint.png"],
|
||||||
},
|
// },
|
||||||
],
|
// ],
|
||||||
});
|
// });
|
||||||
|
|
||||||
// Add it to the regular toolbar
|
// Add it to the regular toolbar
|
||||||
this.modInterface.addNewBuildingToToolbar({
|
// this.modInterface.addNewBuildingToToolbar({
|
||||||
toolbar: "regular",
|
// toolbar: "regular",
|
||||||
location: "primary",
|
// location: "primary",
|
||||||
metaClass: MetaDemoModBuilding,
|
// metaClass: MetaDemoModBuilding,
|
||||||
});
|
// });
|
||||||
|
|
||||||
// Register keybinding
|
// Register keybinding
|
||||||
this.modInterface.registerIngameKeybinding({
|
this.modInterface.registerIngameKeybinding({
|
||||||
|
|||||||
25
mod_examples/pasting.js
Normal file
25
mod_examples/pasting.js
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
/**
|
||||||
|
* This is the minimal structure of a mod
|
||||||
|
*/
|
||||||
|
|
||||||
|
const METADATA = {
|
||||||
|
website: "https://tobspr.io",
|
||||||
|
author: "tobspr",
|
||||||
|
name: "Mod Example: Pasting",
|
||||||
|
version: "1",
|
||||||
|
id: "pasting",
|
||||||
|
description: "Shows how to properly receive paste events ingame",
|
||||||
|
};
|
||||||
|
|
||||||
|
class Mod extends shapez.Mod {
|
||||||
|
init() {
|
||||||
|
this.signals.gameInitialized.add(root => {
|
||||||
|
root.gameState.inputReciever.paste.add(event => {
|
||||||
|
event.preventDefault();
|
||||||
|
|
||||||
|
const data = event.clipboardData.getData("text");
|
||||||
|
this.dialogs.showInfo("Pasted", "You pasted: '" + data + "'");
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -149,6 +149,8 @@ export class InputDistributor {
|
|||||||
window.addEventListener("mouseup", this.handleKeyMouseUp.bind(this));
|
window.addEventListener("mouseup", this.handleKeyMouseUp.bind(this));
|
||||||
|
|
||||||
window.addEventListener("blur", this.handleBlur.bind(this));
|
window.addEventListener("blur", this.handleBlur.bind(this));
|
||||||
|
|
||||||
|
document.addEventListener("paste", this.handlePaste.bind(this));
|
||||||
}
|
}
|
||||||
|
|
||||||
forwardToReceiver(eventId, payload = null) {
|
forwardToReceiver(eventId, payload = null) {
|
||||||
@ -186,6 +188,13 @@ export class InputDistributor {
|
|||||||
this.keysDown.clear();
|
this.keysDown.clear();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
handlePaste(ev) {
|
||||||
|
this.forwardToReceiver("paste", ev);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param {KeyboardEvent | MouseEvent} event
|
* @param {KeyboardEvent | MouseEvent} event
|
||||||
*/
|
*/
|
||||||
|
|||||||
@ -12,12 +12,15 @@ export class InputReceiver {
|
|||||||
|
|
||||||
// Dispatched on destroy
|
// Dispatched on destroy
|
||||||
this.destroyed = new Signal();
|
this.destroyed = new Signal();
|
||||||
|
|
||||||
|
this.paste = new Signal();
|
||||||
}
|
}
|
||||||
|
|
||||||
cleanup() {
|
cleanup() {
|
||||||
this.backButton.removeAll();
|
this.backButton.removeAll();
|
||||||
this.keydown.removeAll();
|
this.keydown.removeAll();
|
||||||
this.keyup.removeAll();
|
this.keyup.removeAll();
|
||||||
|
this.paste.removeAll();
|
||||||
|
|
||||||
this.destroyed.dispatch();
|
this.destroyed.dispatch();
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user