Greasy Fork

MH - Show Trains

Shows you the upcoming train schedule even when your on the train. Originally found at http://mhutilitiesbyshk.altervista.org/scripts.php

目前为 2020-04-04 提交的版本。查看 最新版本

// ==UserScript==
// @name      MH - Show Trains
// @author    Giuseppe Di Sciacca (Improved by Hazado)
// @version   1.002
// @description Shows you the upcoming train schedule even when your on the train. Originally found at http://mhutilitiesbyshk.altervista.org/scripts.php
// @require     https://code.jquery.com/jquery-1.12.4.min.js
// @include     http://mousehuntgame.com/*
// @include		https://mousehuntgame.com/*
// @include		http://www.mousehuntgame.com/*
// @include		https://www.mousehuntgame.com/*
// @include		http://apps.facebook.com/mousehunt/*
// @include		https://apps.facebook.com/mousehunt/*
// @namespace https://greasyfork.org/users/149039
// ==/UserScript==

if(user.environment_name=='Gnawnian Express Station') {
  window.setInterval(function(){
    if(jQuery('#hudLocationContent .trainStationHUD').is(':visible'))
      return;
    else
      jQuery('#hudLocationContent .trainStationHUD').show();
  },1000);
  showMHTrains();
}

// the guts of this userscript
function showMHTrains() {
    //add css
    var TrainCss = document.createElement( 'style' );
    TrainCss.type = 'text/css';
    TrainCss.id = 'MHTrainScriptCss';
    TrainCss.innerHTML = "#toggleTrainHUD{cursor:pointer;position:absolute;top:5px;left:17px;font-size:10px;letter-spacing:normal;border:0;background-color:#FFF;border-radius:3px;box-shadow:-3px 3px 3px rgb(0, 0, 0);padding:3px 8px;}#TrainHUDToResize.hiddenTrainHUD{height:30px;}";
    document.head.appendChild(TrainCss);
    jQuery('.trainStationHUD .pendingTrainContainer')[0].hidden=true;

    //add show/hide button
    jQuery('.trainStationHUD .trainStationBar .trainTitle').parent().parent().attr('id','TrainHUDToResize');
    jQuery('#TrainHUDToResize').addClass('hiddenTrainHUD');

    jQuery('#hudLocationContent .trainStationHUD').removeClass('hidden').slideDown(function(){
        //add button to reduce HUD
        jQuery('.trainStationHUD .trainStationBar .trainTitle').append('<button id="toggleTrainHUD">Show/Hide HUD</button>');
        jQuery(document).on('click','#toggleTrainHUD',function(){
            if(jQuery('#TrainHUDToResize').hasClass('hiddenTrainHUD')) {
                jQuery('#TrainHUDToResize').removeClass('hiddenTrainHUD');
                jQuery('.trainStationHUD .pendingTrainContainer')[0].hidden=false;
            }
            else{
                jQuery('#TrainHUDToResize').addClass('hiddenTrainHUD');
                jQuery('.trainStationHUD .pendingTrainContainer')[0].hidden=true;
            }
        });
    });
    jQuery(document).on('click','.refreshTrains.trainButton',function(){
      refreshTrains();
    });
}

function refreshTrains() {
  var interval=window.setInterval(function(){
    if(!jQuery('#hudLocationContent .trainStationHUD').is(':visible')){
        window.clearInterval(interval);
        jQuery('#hudLocationContent .trainStationHUD').show();
        //this is function trainStationUpdatePendingTrains()
        jQuery('#hudLocationContent .trainStationHUD .countDown').each(function(index, element) {
            var trainDepartsInTimestamp = new Date(jQuery(element).data('end'));
            var startsInString = '';
            var secondsRemaining = trainDepartsInTimestamp - new Date().getTime();
            secondsRemaining = (secondsRemaining > 0) ? Math.ceil(secondsRemaining / 1000) : 0;
            var mins = Math.floor(secondsRemaining / 60) % 60;
            var hours = Math.floor(secondsRemaining / 3600);
            var seconds = secondsRemaining % 60;
            if (mins == 0 && hours == 0) {
                if (secondsRemaining > 0) {
                    startsInString = secondsRemaining + ' secs.';
                }
                else {
                    startsInString = 'Departing...';
                }
            }
            else {
                if (hours) {
                    startsInString += hours + ' hr ';
                }
                startsInString += mins + ' mins';
                if (hours == 0 && mins < 5) {
                    startsInString += ' ' + seconds + ' secs';
                }
            }
            jQuery(element).text(startsInString);
        });//end of function
    }
  },100);
}