Sets the Kongregate Flash games fixer's default swf player to whatever you prefer.
// ==UserScript==
// @name Kongregate Flash games fixer add-on - default swf player setting
// @version 6
// @author Matrix4348
// @namespace https://greasyfork.org/users/4818
// @description Sets the Kongregate Flash games fixer's default swf player to whatever you prefer.
// @license MIT
// @match *://www.kongregate.com/games/*/*
// @match *://www.kongregate.com/*/games/*/*
// @run-at document-end
// @grant GM_setValue
// @grant GM_getValue
// ==/UserScript==
var current_player;
function FlashSupport(){
var np=navigator.plugins, npl=np.length;
for(var k=0;k<npl;k++){ if((np[k].name=="Shockwave Flash")&(np[k].filename!="ruffle.js")){return true;} }
return false;
}
function return_default_behaviour(){
if(FlashSupport()==true){ return "Flash"; }
else if(navigator.userAgent.search("Windows")>-1){ return "SuperNova"; } // At least while Ruffle is not finished.
else if(navigator.userAgent.search("Windows")==-1){ return "Ruffle"; } // Because SuperNova only works on Windows.
else { return "Flash"; }
}
function open_settings(){
var default_player=prompt("Which swf player must be used by default (when a page loads, not when buttons are clicked on): Flash, SuperNova, Ruffle or AwayFL?\n\n Note: Typing anything else will be treated like "+return_default_behaviour()+".");
switch((default_player||"null").toLowerCase()) {
case "null":
break;
case "flash":
GM_setValue("default_swf_player","Flash");
break;
case "supernova":
GM_setValue("default_swf_player","SuperNova");
break;
case "ruffle":
GM_setValue("default_swf_player","Ruffle");
break;
case "awayfl":
GM_setValue("default_swf_player","AwayFL");
break;
default:
GM_setValue("default_swf_player",return_default_behaviour());
}
document.getElementById("default swf player setting button").innerHTML="Set default swf player <br> <i>Currently: "+GM_getValue( "default_swf_player", return_default_behaviour() )+"</i>";
}
function create_settings_button(){
var b=document.createElement("button");
b.id="default swf player setting button";
b.innerHTML="Set default swf player <br> <i>Currently: "+GM_getValue( "default_swf_player", return_default_behaviour() )+"</i>";
b.onclick=open_settings;
b.style.borderWidth="1px";
b.style.backgroundColor="grey";
if(document.getElementById("fullscreen_button")){
let h=50,w=150;
b.style.height=h+"px";
b.style.width=w+"px";
b.style.fontSize="14px";
document.getElementById("fullscreen_button").parentElement.insertBefore(b,document.getElementById("fullscreen_button"));
}
else{
let h=50,w=150;
b.style.height=h+"px";
b.style.width=w+"px";
b.style.position="relative";
b.style.top=document.getElementById("maingame").clientHeight*(-1)+"px";
b.style.left=document.getElementById("maingame").clientWidth*(-1/2)+"px";
document.getElementById("floating_game_holder").appendChild(b);
}
}
function create_second_button(){
var b=document.createElement("button");
b.id="default swf player setting button 2";
b.innerHTML="Set default swf player to the currently used one ("+return_current_player()+")";
b.onclick = function(){
GM_setValue("default_swf_player",return_current_player());
document.getElementById("default swf player setting button").innerHTML="Set default swf player <br> <i>Currently: "+return_current_player()+"</i>";
};
b.style.borderWidth="1px";
b.style.backgroundColor="grey";
if(document.getElementById("fullscreen_button")){
let h=50,w=150;
b.style.height=h+"px";
b.style.width=w+"px";
b.style.fontSize="11px";
document.getElementById("fullscreen_button").parentElement.insertBefore(b,document.getElementById("fullscreen_button").parentElement.lastElementChild);
}
else{
var h=50,w=150;
b.style.height=h+"px";
b.style.width=w+"px";
b.style.position="relative";
b.style.top=document.getElementById("maingame").clientHeight*(-1)+document.getElementById("default swf player setting button").clientHeight+13+"px";
b.style.left=document.getElementById("maingame").clientWidth*(-1/2)-w+"px";
document.getElementById("floating_game_holder").appendChild(b);
}
}
function update_current_player(p){
current_player = p;
}
function return_current_player(){
return current_player;
}
function add_event_listeners(){
var players = ["Flash","Ruffle","SuperNova","AwayFL"];
for(let p of players){
document.getElementById("Button to (re)load with "+p).addEventListener("click",function(){
update_current_player(p);
document.getElementById("default swf player setting button 2").innerHTML="Set default swf player to the currently used one ("+return_current_player()+")";
});
}
}
function main_function_embed(){
if(document.URL.search("www.kongregate.com(.*?)/games/(.*?)/embed")>-1){
let is_Flash_game, everything_ready;
if( document.readyState=="complete" && typeof(active_user)!="undefined" && typeof(activateGame)!="undefined" && typeof(holodeck)!="undefined" ){
if(typeof(active_user.gameType)!="undefined"){
if(active_user.gameType()=="flash"){ is_Flash_game=true; } else{ is_Flash_game=false; }
}
else{ is_Flash_game=-1; }
if(typeof(LoadFrame4348)!="undefined"){ everything_ready=true; }
else{ everything_ready=false; }
}
if(is_Flash_game==true&&everything_ready){
let swf_player=GM_getValue( "default_swf_player", return_default_behaviour() );
update_current_player(swf_player);
LoadFrame4348(swf_player);
}
else if(is_Flash_game!=false){ setTimeout(function(){ main_function_embed(); },1000); }
}
else{
var ql=document.getElementById("quicklinks");
let is_Flash_game, everything_ready;
if( document.readyState=="complete" && typeof(active_user)!="undefined" && typeof(activateGame)!="undefined" && typeof(holodeck)!="undefined" && ql!==null ){
if(typeof(active_user.gameType)!="undefined"){
if(active_user.gameType()=="flash"){ is_Flash_game=true; } else{ is_Flash_game=false; }
}
else{ is_Flash_game=-1; }
if(typeof(LoadFrame4348)!="undefined" && document.getElementById("Button to (re)load with AwayFL")!=undefined ){ everything_ready=true; }
else{ everything_ready=false; }
}
if(is_Flash_game==true&&everything_ready){
let swf_player=GM_getValue( "default_swf_player", return_default_behaviour() );
update_current_player(swf_player);
LoadFrame4348(swf_player);
}
else if(is_Flash_game!=false){ setTimeout(function(){ main_function_embed(); },1000); }
}
}
function main_function_top_level(){
var is_Flash_game, everything_ready;
if(document.readyState=="complete" && window[0]?.active_user?.gameType){
is_Flash_game = window[0].active_user.gameType()=="flash";
}
else{ is_Flash_game = -1; }
if( document.getElementById("Button to (re)load with AwayFL")!=undefined ){ everything_ready=true; }
else{ everything_ready=false; }
if(is_Flash_game==true&&everything_ready){
var swf_player=GM_getValue( "default_swf_player", return_default_behaviour() );
update_current_player(swf_player);
create_settings_button();
add_event_listeners();
//create_second_button(); // Does not update when pressing the "play now" button. Was it that useful, anyway?
}
else if(is_Flash_game!=false){ setTimeout(function(){ main_function_top_level(); },1000); }
}
main_function_embed();
main_function_top_level();