Browser Ponies

Ponify Scratch!

K instalaci tototo skriptu si budete muset nainstalovat rozšíření jako Tampermonkey, Greasemonkey nebo Violentmonkey.

You will need to install an extension such as Tampermonkey to install this script.

K instalaci tohoto skriptu si budete muset nainstalovat rozšíření jako Tampermonkey nebo Violentmonkey.

K instalaci tohoto skriptu si budete muset nainstalovat rozšíření jako Tampermonkey nebo Userscripts.

You will need to install an extension such as Tampermonkey to install this script.

K instalaci tohoto skriptu si budete muset nainstalovat manažer uživatelských skriptů.

(Už mám manažer uživatelských skriptů, nechte mě ho nainstalovat!)

You will need to install an extension such as Stylus to install this style.

You will need to install an extension such as Stylus to install this style.

You will need to install an extension such as Stylus to install this style.

You will need to install a user style manager extension to install this style.

You will need to install a user style manager extension to install this style.

You will need to install a user style manager extension to install this style.

(Už mám manažer uživatelských stylů, nechte mě ho nainstalovat!)

// ==UserScript==
// @name       Browser Ponies
// @namespace  http://scratch.mit.edu
// @version    1.0
// @description  Ponify Scratch!
// @match      *://scratch.mit.edu/projects/*
// @author Katherine C.
// ==/UserScript==

//Install base scripts
var basecfg_script = document.createElement('script');
basecfg_script.setAttribute('type', 'text/javascript');
basecfg_script.setAttribute('src', 'https://panzi.github.io/Browser-Ponies/basecfg.js');
basecfg_script.setAttribute('id', 'browser-ponies-config');
document.head.appendChild(basecfg_script);

var browserponies_script = document.createElement('script'); 
browserponies_script.setAttribute('type', 'text/javascript');
browserponies_script.setAttribute('src', 'https://panzi.github.io/Browser-Ponies/browserponies.js');
browserponies_script.setAttribute('id', 'browser-ponies-script');
document.head.appendChild(browserponies_script);
	
function installExtensionBrowserPonies() {
	var cfg = {
		"fadeDuration": 500,
		"volume": 1,
		"fps": 25,
		"speed": 3,
		"audioEnabled": false,
		"showFps": false,
		"showLoadProgress": true,
		"speakProbability": 0.1,
		"baseurl": "https://panzi.github.io/Browser-Ponies/",
		"spawn": {}
	};

    (function(ext) {
        // Cleanup function when the extension is unloaded
        ext._shutdown = function() {};

        // Status reporting code
        // Use this to report missing hardware, plugin or unsupported browser
        ext._getStatus = function() {
        	if(BrowserPoniesBaseConfig.loaded){
            	return {status: 2, msg: 'Ready'};
            }
            else if(BrowserPonies != undefined && BrowserPoniesBaseConfig != undefined){
            	BrowserPonies.setBaseUrl(cfg.baseurl);
				BrowserPonies.loadConfig(BrowserPoniesBaseConfig);
				BrowserPonies.start();
				BrowserPoniesBaseConfig.loaded = true;
            	return {status: 1, msg: 'Not Ready'};
            }
            return {status: 0, msg: 'Not Ready'};
        };
        
        // Block and block menu descriptions
        var descriptor = {
            blocks: [
            	[' ', 'start', 'startPonies'],
            	[' ', 'stop', 'stopPonies'],
            	[' ', 'pause', 'pausePonies'],
            	[' ', 'resume', 'resumePonies'],
            	[' ', 'toggle ponies in background', 'toggleInBackground'],
            	[' ', 'remove all ponies', 'removePonies'],
            	['-'],
                [' ', 'add pony %s', 'addPony', 'derpy hooves'],
                [' ', 'add random pony', 'addRandomPony']
            ],

            menus: {
                ponies: ['derpy hooves', 'applejack','fluttershy','pinkie pie','rainbow dash','rarity','twilight sparkle']
            }
        };
		
		var ponyNames = [];
		
		//Commands
		ext.startPonies = function(){BrowserPonies.start();};
		ext.stopPonies = function(){BrowserPonies.stop();};
		ext.pausePonies = function(){BrowserPonies.pause();};
		ext.resumePonies = function(){BrowserPonies.resume();};
		ext.toggleInBackground = function(){BrowserPonies.togglePoniesToBackground()};
		ext.removePonies = function(){BrowserPonies.unspawnAll();};
		
		//Adding ponies
		ext.addPony = function(name){
			addPonyByName(name);
		}
		
		ext.addRandomPony = function(){
			checkLoaded();
			BrowserPonies.spawnRandom()
		}
		
		function addPonyByName (name){
			checkLoaded();
			if(BrowserPonies.ponies()[name] != undefined){
				//Check if the pony exists
				if(name == 'vinyl scratch'){
					//Seizure warning
					if(confirm('WARNING:\nContains flashing lights/patterns that may not be suitable for people with photosensitive epilepsy.')){
						if(BrowserPonies.ponies()[name] != undefined){
							console.log(cfg)
							cfg['spawn'] = {};
							cfg['spawn'][name] = 1;
							BrowserPonies.loadConfig(cfg);
						}
					}
				}
				else{
					console.log(cfg)
					cfg['spawn'] = {};
					cfg['spawn'][name] = 1;
					BrowserPonies.loadConfig(cfg);
				}
			}
		}
		
		function checkLoaded (){
			//Load BrowserPonies if it is not already loaded
			if(!BrowserPoniesBaseConfig.loaded){
				BrowserPonies.setBaseUrl(cfg.baseurl);
				BrowserPonies.loadConfig(BrowserPoniesBaseConfig);
				BrowserPonies.start();
				BrowserPoniesBaseConfig.loaded = true;
				ponyNames = keys(BrowserPonies.ponies());
			}
		}
		
        // Register the extension
        ScratchExtensions.register('Browser Ponies', descriptor, ext);
    })({});
}

installExtensionBrowserPonies();