IdlePixel Dialogue Handler

Library which creates a modal for opening plugin panels.

目前为 2025-02-19 提交的版本。查看 最新版本

此脚本不应直接安装,它是一个供其他脚本使用的外部库。如果您需要使用该库,请在脚本元属性加入:// @require https://update.cn-greasyfork.org/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();
})();