您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Library which creates a modal for opening plugin panels.
此脚本不应直接安装。它是供其他脚本使用的外部库,要使用该库请加入元指令 // @require https://update.cn-greasyfork.org/scripts/491983/1368960/IdlePixel%2B%20Plugin%20Paneller.js
- // ==UserScript==
- // @name IdlePixel+ Plugin Paneller
- // @namespace lbtechnology.info
- // @version 1.1.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.Paneller) {
- // already loaded
- return;
- }
- class Paneller {
- constructor() {
- this.registered_panels = []
- this.uit_found = 0
- this.addStyles()
- this.createModal()
- this.registerPanel("varviewer", "Var Viewer")
- const onlineCount = $(".game-top-bar .gold:not(#top-bar-admin-link)");
- onlineCount.before(`<a href="#" class="hover float-end link-no-decoration" id="panellerLink">Panel Selector</a>`);
- $("#panellerLink").attr("onclick", "event.preventDefault(); Paneller.showModal()")
- }
- addStyles(){
- $("head").append(`
- <style id="styles-paneller">
- #panellerLink {
- margin: 0 20px;
- }
- .panellerModalInner {
- background-color: white;
- color: black;
- }
- #panellerModalHeader {
- padding: calc(var(--bs-modal-padding) - var(--bs-modal-header-gap) * .5);
- background-color: var(--bs-modal-header-bg);
- border-bottom: var(--bs-modal-header-border-width) solid var(--bs-modal-header-border-color);
- border-top-right-radius: var(--bs-modal-inner-border-radius);
- border-top-left-radius: var(--bs-modal-inner-border-radius);
- }
- #panellerModal .modal-body {
- overflow-y: auto;
- }
- .panellerModalButton {
- background-color: RGBA(1, 150, 150, 0.5);
- margin-bottom: 2px;
- cursor: pointer;
- }
- .panellerModalText {
- margin-left: 20px;
- }
- #panellerModalDialogue {
- margin-top: 20vh;
- }
- </style>
- `)
- }
- registerPanel(panelName, displayName, target="panel"){
- this.registered_panels.push({
- name: panelName,
- display: displayName,
- target: target
- })
- }
- createModal(){
- const modalString = `
- <div id="panellerModal" class="modal fade" role="dialog" tabindex="-1"">
- <div id="panellerModalDialogue" class="modal-dialog" role="document">
- <div id="panellerModalInner" class="modal-content panellerModalInner">
- <div id="panellerModalHeader" class="modal-header text-center">
- <h3 class="modal-title w-100"><u>Panel Selector</u></h3>
- </div>
- <div class="modal-body">
- <div id="panellerModalList" class="overflow-auto"></div>
- </div>
- </div>
- </div>
- </div>
- `
- const modalElement = $.parseHTML(modalString)
- $(document.body).append(modalElement)
- }
- populateModal(){
- const panellerModalList = $("#panellerModalList")
- panellerModalList.empty()
- this.registered_panels.forEach(panel => {
- const newItemString = `<div class="d-flex justify-content-between rounded-pill panellerModalButton" data-panelName="${panel.name}"><span class="panellerModalText">${panel.display}</span></div>`
- const newItemElement = $.parseHTML(newItemString)
- panellerModalList.append(newItemElement)
- })
- $(".panellerModalButton").attr("onclick", "Paneller.switchPanel(this.getAttribute('data-panelName'))")
- }
- showModal(){
- if (this.uit_found === 0){
- if ("ui-tweaks" in IdlePixelPlus.plugins){
- this.uit_found = 1
- const backgroundColour = IdlePixelPlus.plugins["ui-tweaks"].config["color-chat-area"]
- const textColour = IdlePixelPlus.plugins["ui-tweaks"].config["font-color-chat-area"]
- $("head").append(`
- <style id="styles-paneller-annex">
- .panellerModalInnerUIT {
- background-color: ${backgroundColour};
- color: ${textColour};
- }
- </style>
- `)
- $("#panellerModalInner").removeClass("panellerModalInner").addClass("panellerModalInnerUIT")
- } else {
- this.uit_found = -1
- }
- }
- this.populateModal()
- document.body.scrollTop = document.documentElement.scrollTop = 0;
- $('#panellerModal').modal('show')
- }
- switchPanel(panelName){
- this.registered_panels.forEach(panel=>{
- if(panel.name===panelName){
- if(panel.target==="panel"){
- IdlePixelPlus.setPanel(panelName)
- } else {
- panel.target.apply()
- }
- }
- })
- $('#panellerModal').modal('hide')
- }
- }
- // Add to window and init
- window.Paneller = new Paneller();
- })();