Yajirin Customizer of pzpr

ぱずぷれのヤジリンの数字の挙動を変更します。

// ==UserScript==
// @name         Yajirin Customizer of pzpr
// @namespace    http://twitter.com/udop_/
// @version      0.1
// @description  ぱずぷれのヤジリンの数字の挙動を変更します。
// @author       udop_
// @match        http://pzv.jp/p.html?yajilin/*
// @require      https://code.jquery.com/jquery-3.4.1.min.js
// @run-at       document-ready
// ==/UserScript==

(function($) {

    var boardx, boardy,fig

    setTimeout(function(){
        ui.debug.filesave_pencilbox()
        var data = ui.debug.getTA().split("\n")
        boardy = data[0] -0
        boardx = data[1] -0

        fig = $("svg")
        var g = fig.find("text:first").closest("g")
        g.attr("id","original")
        var gg = g.clone().attr("id","clone").insertBefore(g)
        var boardw = parseInt(fig.find("path:first").attr("d").split(" ")[4])
        var boardh = parseInt(fig.find("path:first").attr("d").split(" ")[9])
        var cellw = boardw / boardx
        var cellh = boardh / boardy

        $("#clone text").each(function(i,e){
            let w = parseInt($(e).attr("x"))
            let h = parseInt($(e).attr("y"))
            let x = Math.floor(w / cellw)
            let y = Math.floor(h / cellh)
            $(e).attr("cx",x)
            $(e).attr("cy",y)
        });
        $("#clone path").each(function(i,e){
            let w = parseInt($(e).attr("d").split(" ")[1])
            let h = parseInt($(e).attr("d").split(" ")[2])
            let x = Math.floor(w / cellw)
            let y = Math.floor(h / cellh)
            $(e).attr("id",`allow_${x}_${y}`)
        });
        var style = $("<style></style>")
        style.html("#original path[fill=black], #original text{fill:transparent;}")
        style.appendTo($("head"))
        console.log(boardw,boardh,boardx,boardy,cellw,cellh)
    },200)

    $(document).on("click",function(){
        ui.debug.filesave_pencilbox()
        var data = ui.debug.getTA().split("\n")
        var board = []
        var color

        for(let y=0; y<boardy; y++){
            board.push(data[y+2].trim().split(" "))
        }
        $("#clone text").each(function(i,e){
            let cx = $(e).attr("cx") -0
            let cy = $(e).attr("cy") -0
            let d = Math.floor((board[cy][cx] - 0) / 16)
            let n = (board[cy][cx] - 0) % 16
            let tar,bn=0

            if( d==0 ){
                tar = board.map((b) => {return b[cx]}).slice(0,cy).reverse()
            } else if(d==1){
                tar = board[cy].slice(0,cx).reverse()
            } else if(d==2){
                tar = board.map((b) => {return b[cx]}).slice(cy+1)
            } else {
                tar = board[cy].slice(cx+1)
            }

            bn = tar.filter(c => c == "#").length
            $(e).text(n-bn)

            if(n-bn>0){
                color = "black"
            } else if(n-bn == 0){
                color = "gray"
            } else {
                color = "red"
            }
            $(e).attr("fill",color)
            $(`#allow_${cx}_${cy}`).attr("fill",color)
        });
    })
})(jQuery);