WF Explorer Next Planet Button

Adds a next planet button for probes which launches fleet to next planet. For www.war-facts.com .

目前為 2015-05-08 提交的版本,檢視 最新版本

// ==UserScript==
// @name        WF Explorer Next Planet Button
// @namespace   https://greasyfork.org/en/users/10321-nikitas
// @description Adds a next planet button for probes which launches fleet to next planet. For www.war-facts.com .
// @include     http://*.war-facts.com/fleet.php*
// @version     5
// @grant       none
// ==/UserScript==

//Configuration Options:

//Change this if you do not want Auto Launch when Next Button is Pressed, or if you don't want to Auto Select Next Explorer
unsafeWindow.AutoLaunch = true;
unsafeWindow.AutoSelectNextExplorer = true;


// Change this if you wish to exclude Fleets whose names contain the excludeString from being auto Selected as next explorer.
unsafeWindow.useExcludeString = false;
// Change this to what you would like to put into a fleet's name in order to exclude it from being auto selected.
unsafeWindow.excludeString = "#NotAuto#";


// Change this if you wish to auto Select Fleets as next explorer ONLY if their names contain the includeString.
unsafeWindow.useIncludeString = false;
// Change this to what you would like to put into a fleet's name in order to include it into being auto selected.
unsafeWindow.includeString = "#Auto#";




//Script

$(window).load(function(){

window.setTimeout(runWholeScript,100);  //Added some extra delay cause sometimes script didn't have time to load correctly

    
    function runWholeScript(){

    var classificationNode = document.getElementById('fleetClass');
    var isExplorer = document.evaluate("//text()[contains(.,'Explorer') or contains(.,'Sentry') or contains(.,'Probe Rush')]", classificationNode, null, XPathResult.BOOLEAN_TYPE, null).booleanValue;

    
    if (isExplorer){

        var info = document.getElementById('navData').getElementsByTagName('div')[4];
        var infoSpan = info.getElementsByTagName('span')[0];

        // not  containing world in the span.
        var isAtSystemEntrance  =  ! (document.evaluate("//text()[contains(.,'World:')]", infoSpan, null, XPathResult.BOOLEAN_TYPE, null).booleanValue);

    
        //alert("Is explorer = " + isExplorer);
        //alert("Is at system Entrance = " + isAtSystemEntrance);
        var currentPlanet = info.getElementsByTagName('a')[0].innerHTML;


        //alert(currentPlanet);
        var optionGroup = document.getElementById('target1');       
        optionGroup = optionGroup.getElementsByTagName('optgroup')[0];
        optionGroup = optionGroup.getElementsByTagName('option');      

        var i = 0 , found = false,  optionsLength = optionGroup.length;
        var nextPlanetOption, finishedSystem = false;

        


        //if PlanetLess system
        if (optionsLength === 0 ) {
//            alert("Planetless System");
            found = true;
            finishedSystem = true;
        } else if (isAtSystemEntrance){ //if I am at system entrance
//            alert("At System Entrance");
            found = true;
            nextPlanetOption = optionGroup[0].value;
        }

        // If I am at a planet, Find next planet through the local target option list

        while ( (i < optionsLength) && (found == false) ) {

            if (optionGroup[i].innerHTML == currentPlanet ){
                found = true;

                if ( i == optionsLength -1 ){
                    finishedSystem = true;

                } else {
                    nextPlanetOption = optionGroup[i+1].value;
                }
            }

            i++;

        }

//   alert("finished system = " + finishedSystem);
//   alert("next planet = " + nextPlanetOption);


//       alert("Reached finished System");

        if (finishedSystem) {
//            alert("Inside finished System");
            document.getElementById('missionData').innerHTML += '<input  class = "greenbutton darkbutton" type="button" id="nextPlanetButton" value = "Done" onclick="openStarMap()" />';
            document.getElementById('nextPlanetButton').addEventListener('click', openStarMap, false);
        } else {
 //           alert("Inside NOT finished System");
            document.getElementById('missionData').innerHTML += '<input  class = "greenbutton darkbutton" type="button" id="nextPlanetButton" value = "Next Planet" onclick="selectNextPlanet()" />';
            document.getElementById('nextPlanetButton').addEventListener('click', selectNextPlanet, false);

        }

    }


    function selectNextPlanet(){
        jQuery('#target1').val(nextPlanetOption).trigger ('change');

        if (unsafeWindow.AutoLaunch){
            unsafeWindow.hasLaunched = false;
            window.setTimeout(launchFleet,100);
        }

    }

    function openStarMap(){
        var starMapLink;
        if (isAtSystemEntrance){
            starMapLink  = document.getElementById('navData').getElementsByTagName('div')[10].getElementsByTagName('a')[0].href;
        } else {
            starMapLink  = document.getElementById('navData').getElementsByTagName('div')[11].getElementsByTagName('a')[0].href;
        }

        starMapLink = starMapLink.substring(19, starMapLink.length - 3 );   //Keep only the link, throw away the functions

        // mapWin is war-facts.com function to open javascript map
        mapWin(starMapLink);

    }



    function launchFleet(){
        var launchButton = document.getElementById('mButton').getElementsByTagName('input')[0];

        if (launchButton) { //So Button has been created
            getMission('launch');   //Launch Fleet
            unsafeWindow.hasLaunched = true;

            autoSelectNextExplorer();

        } else {
            window.setTimeout(launchFleet,100);
        }




    }




    function checkIfLaunched(){
        var abortButton = document.getElementById('mButton').children[0];

        if (    (abortButton)  && (abortButton.value == "Abort Mission") ) {
            autoSelectNextExplorer();
        }else {
            alert("Trying Again");
            window.setTimeout(checkIfLaunched,250);
        }

    }


    function autoSelectNextExplorer(){

        if (unsafeWindow.AutoSelectNextExplorer) {


            var explorerList = document.getElementById('fc_Explorer').children;
            var index = 0;
            var explorerListLength = explorerList.length;


            while (index < explorerListLength) {

                if (explorerList[index].children[0].style.color == "rgb(242, 242, 242)") {
                    var link = explorerList[index].children[0].href;
                    var name = explorerList[index].children[0].innerHTML;

                    if (( ( !unsafeWindow.useIncludeString) || ( name.indexOf(unsafeWindow.includeString) > -1  )  ) //If not using include string or String is in name
                        && ( ( !unsafeWindow.useExcludeString) || ( name.indexOf(unsafeWindow.excludeString) == -1 )  ) //If not using exclude string or String is NOT in name
                        && ( link != window.location.href )  //Make sure we are not chosing ourselve as this fleet is still "white"
                    ) {
                        index = explorerListLength; //To make sure if load doesn't happen immediately it stops running through fleet list
                        window.open(link, "_self");
                    }
                }

                index++;
            }
        }
    }
    }

 

});