IdlePixel Dialogue Handler

Library which creates a modal for opening plugin panels.

Version vom 19.02.2025. Aktuellste Version

Dieses Skript sollte nicht direkt installiert werden. Es handelt sich hier um eine Bibliothek für andere Skripte, welche über folgenden Befehl in den Metadaten eines Skriptes eingebunden wird // @require https://update.greatest.deepsurf.us/scripts/527481/1540076/IdlePixel%20Dialogue%20Handler.js

// ==UserScript==
// @name			IdlePixel Dialogue Handler
// @namespace		luxferre.dev
// @version			1.0.0
// @description		Library which creates a modal for opening plugin panels.
// @author			Lux-Ferre
// @license			MIT
// @match			*://idle-pixel.com/login/play*
// @grant			none
// ==/UserScript==

(function () {
	if (window.dialoguer) {
		// already loaded
		return;
	}

	class Dialoguer {
		constructor() {
			this.original_dialogue = Modals.open_image_modal
			this.handlers = {}
		}

		register_handler(selector, handler, propagate) {
			this.handlers[selector] = {
				handler: handler,
				propagate: propagate
			}
		}

		open_image_modal(title, image_path, message, primary_button_text, secondary_button_text, command, force_unclosable) {
			const check_text = title + image_path + message

			for (const [selector, handler] of Object.entries(this.handlers)) {
				if (check_text.includes(selector)) {
					[title, image_path, message, primary_button_text, secondary_button_text, command, force_unclosable] = handler.handler(title, image_path, message, primary_button_text, secondary_button_text, command, force_unclosable)
					if (!handler.propagate) {
						return
					}
				}
			}

			this.original_dialogue(title, image_path, message, primary_button_text, secondary_button_text, command, force_unclosable)
		}

		onLogin(){
			Modals.open_image_modal = this.open_image_modal
		}
	}

	// Add to window and init
	window.dialoguer = new Dialoguer();
})();