IdlePixel Dialogue Handler

Library which creates a modal for opening plugin panels.

Tính đến 19-02-2025. Xem phiên bản mới nhất.

Script này sẽ không được không được cài đặt trực tiếp. Nó là một thư viện cho các script khác để bao gồm các chỉ thị meta // @require https://updategreasyfork.deno.dev/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();
})();