kinhopGameAuto

kinhop game auto

// ==UserScript==
// @name        kinhopGameAuto
// @namespace   kinhop.com
// @include     *www.kinhop.com/game/index.html
// @description kinhop game auto
// @homepageURL https://greasyfork.org/zh-CN/scripts/19517
// @version     0.0.1
// @grant       none
// ==/UserScript==

var gameLoopIntervalID = 'None';

function GameElement(top, left, width, height) {
    this.top = top;
    this.left = left;
    this.width = width;
    this.height = height;
}

function createGameElement(type, element) {
    return new GameElement(
        parseInt(element.style.top),
        parseInt(element.style.left),
        parseInt(element.style.width),
        parseInt(element.style.height)
        );
};


function sortElementByTop(a, b) {
    return a.top < b.top;
};


function isVisiableDia(element) {
    return parseInt(element.style.top) > 0
    && element.tagName == 'IMG'
    && element.src.indexOf('/dia.png') > 0;
};


function isVisiablePig(element) {
    return parseInt(element.style.top) > 0
    && element.tagName == 'DIV'
    && element.style.backgroundImage.indexOf('/pig_fly.png') > 0;
};

function isVisiableLayer(element) {
    return parseInt(element.style.top) > 0
    && parseInt(element.style.top) < 800
    && element.tagName == 'IMG'
    && (element.src.indexOf('layer1.png') > 0 
        || element.src.indexOf('layer2.png') > 0);
}

function chooseRightElement(eles, pigs) {

    var manElement = createGameElement(GamePlay.manDiv);
    manElement.width = 62;
    manElement.height = 102;
    for (var i = 0; i <= eles.length; i++) {
        var oneEle = eles[i];

        var manNewLeft = oneEle.left + manElement.width/2;
        var manNewTop = oneEle.top + manElement.height/2;

        GamePlay.manDiv.style.left = manNewLeft + 'px';
        GamePlay.manDiv.style.top = manNewTop + 'px';

        break;
    }
}

function autoGameLoop() {
    var dias = [];
    var pigs = [];
    var layers = [];

    var nodes = GamePlay.manDiv.parentNode.childNodes;

    for (var i = nodes.length - 1; i >= 0; i--) {
        var oneNode = nodes.item(i);
        if (isVisiableDia(oneNode)) {
            dias.push(createGameElement(oneNode));
        }
        else if (isVisiablePig(oneNode)) {
            pigs.push(createGameElement(oneNode));
        }
        else if (isVisiableLayer(oneNode)) {
            layers.push(createGameElement(oneNode));
        }
    }

    dias.sort(sortElementByTop);
    pigs.sort(sortElementByTop);
    layers.sort(sortElementByTop);


    chooseRightElement(dias, pigs);
};


var btn = document.createElement("input");
btn.type = "button";
btn.value = 'start';
btn.style.position = 'fixed';
btn.style.top = '10';
btn.style.left = '200px';
btn.style.width = '50px';
btn.style.height = '50px';
btn.style.backgroundColor = '#208F72';
btn.style.borderStyle = 'none';
btn.style.borderRadius = '25px';
btn.style.color = 'white';
btn.style.fontSize = '15px';
btn.onclick = function(){
    if (gameLoopIntervalID == 'None') {
        gameLoopIntervalID = setInterval(autoGameLoop, 60);
        this.value = 'stop';
    } else {
        clearInterval(gameLoopIntervalID);
        gameLoopIntervalID = 'None';
        this.value = 'start';
    }
};
document.body.appendChild(btn);