// ==UserScript==
// @name Grepolis Academy Overview
// @name:de Grepolis Akademie Übersicht
// @name:en Grepolis Academy Overview
// @namespace grepolis
// @description Grepolis: List all researches of all towns
// @description:de Grepolis: Eine Übersicht über alle Forschungen aller Städte.
// @description:en Grepolis: List all researches of all towns
// @include http://*.grepolis.*
// @exclude http://forum.*.grepolis.*
// @exclude http://wiki.*.grepolis.*
// @icon http://s3.amazonaws.com/uso_ss/icon/185038/large.png?1385676234
// @version 2.12
// @grant GM_listValues
// @grant GM_getValue
// @grant GM_setValue
// @grant GM_deleteValue
// @grant GM_info
// @grant GM_xmlhttpRequest
// @downloadURL none
// ==/UserScript==
/************************************************************************
* Main Script
***********************************************************************/
function XR_main_script(DATA) {
/************************************************************************
* Global variables
***********************************************************************/
var XR = {};
var wID = Game.world_id;
var mID = Game.market_id;
var aID = Game.alliance_id;
var sID = Game.player_id;
var pName = Game.player_name;
console.log("start");
console.log(DATA.XR_research_technology);
console.log("start2");
$(".tb_activities").css("left","227px");
$(".toolbar_buttons").append('\
\
');
$("#BTN_academyoverview").click(function() {
XR.Functions.academyOverview();
});
/************************************************************************
* Languages
***********************************************************************/
XR.Lang = {
get : function (a, b) {
if (XR.Lang[mID] != undefined && XR.Lang[mID][a] != undefined && XR.Lang[mID][a][b] != undefined) {
return XR.Lang[mID][a][b]
} else if (XR.Lang[mID] != undefined && XR.Lang[mID][a] != undefined) {
return XR.Lang[mID][a]
} else {
return XR.Lang.en[a][b]
}
},
de : {
meta : {
lang : 'deutsch'
},
academyoverview :"Akademie-Übersicht",
research_technology :"Technologie erforschen",
reset_technology :"Forschung zurücksetzen",
save :"Speichern"
},
en : {
meta : {
lang : 'english'
},
academyoverview :"Academy Overview",
research_technology :"Research Technology",
reset_technology :"Reset Technology",
save :"Save"
}
};
/************************************************************************
* Ajax Call functions
***********************************************************************/
XR.CallAjaxFunction = {
town_overviews : {
culture_overview : function () {
//XR.Functions.cultureOverview();
},
start_celebration : function () {
//XR.Functions.cultureOverview();
},
start_all_celebrations : function () {
//XR.Functions.cultureOverview();
},
},
building_place : {
culture : function () {
console.log("Agora");
},
},
player : {
index : function () {
XR.Functions.SettingsWindow();
},
}
};
/************************************************************************
* Functions
***********************************************************************/
XR.Functions = {
academyOverview : function () {
console.log("-> AcademyOverview");
var wnd = GPWindowMgr.Create(GPWindowMgr.TYPE_XR_ACADEMYOVERVIEW) || GPWindowMgr.getOpenFirst(GPWindowMgr.TYPE_XR_ACADEMYOVERVIEW);
wnd.setTitle(XR.Lang.get("academyoverview"));
var research_ids = [];
for (i=1; i<=34; i=i+3) {
$.each(GameData.researches, function () {
if ($(this)[0].building_dependencies.academy==i) {
research_ids.push($(this)[0].id);
}
});
}
var factor = Math.min(Math.max(Math.ceil(research_ids.length/3), 10), 13);
wincontent = '\
\
';
wnd.setContent(wincontent);
if (research_ids.length>0) {
$("#header").append('');
$("#moveleft").click(function(){
if (parseInt($("#academyoverview_header").css("left"))<0) {
$(".academyoverview_movetab").animate({left:'+='+factor*46+'px'},"slow");
} else {
$(".academyoverview_movetab").animate({left:'-'+(Math.ceil(research_ids.length/factor)-1)*factor*46+'px'},"slow");
}
});
$("#moveright").click(function(){
if (parseInt($("#academyoverview_header").css("left"))<=(Math.ceil(research_ids.length/factor)-1)*factor*-46) {
$(".academyoverview_movetab").animate({left:'0px'},"slow");
} else {
$(".academyoverview_movetab").animate({left:'-='+factor*46+'px'},"slow");
}
});
}
$.each(research_ids, function(i, val) {
if (research_ids[i]=="take_over") {
$("#academyoverview_header").append('');
} else {
$("#academyoverview_header").append('\
\
');
}
});
for (i=research_ids.length; i<=Math.floor(research_ids.length/factor+1)*factor; i++) {
$("#academyoverview_header").append('');
}
XRTownNames = [];
for (i=0; i\
\
\
\
\
\
');
for (j=0; j');
} else {
$("#researches_"+XRtownid).append('');
}
}
if (liclass=="even") { liclass = "odd"; } else { liclass = "even"; }
break;
}
}
}
$(".research40x40").css("background-repeat","no-repeat");
$(".townlist_width").css("width",Math.round(200+((13-factor)*46)).toString()+"px");
},
SettingsWindow : function () {
console.log("Einstellungen");
/*
var b = GPWindowMgr.getOpenFirst(Layout.wnd.TYPE_PLAYER_SETTINGS);
if (!b)
return;
var c = $("DIV#gpwnd_" + b.getID() + " .settings-menu ul:last");
if ($(c).find('#quack-toolsammlung').length == 0) {
$(c[0]).append('
Quack Toolsammlung');
$("#quack-toolsammlung").click(function () {
QT.Functions.scriptmanager();
})
}
*/
if ($(".XR_settings").length==0) {
$("DIV.settings-menu ul:last").append('\
\
\
'+XR.Lang.get("academyoverview")+'\
\
')
$(".XR_settings").click(function() {
console.log("XR_settings");
if ($("#settings_form").length == 0) {
console.log("settings_neu");
$(".settings-container").html('\
\
');
} else {
console.log("settings_vorhanden");
$("#s_email_notifications").hide();
$("#s_notifications").hide();
$("#s_windows_mgr").hide();
$("#s_buffering").hide();
$("#s_map").hide();
$("#s_timezone").hide();
$("#s_city_preview").hide();
$("#s_confirmations").hide();
$("#s_sound_config").hide();
console.log("hide ok");
$("#settings_form").append('\
\
\
\
'+XR.Lang.get("research_technology")+'
\
\
\
'+XR.Lang.get("reset_technology")+'
\
\
\
');
console.log("show ok");
}
$(".research_technology").click(function() {
if ($(this).hasClass("checked")) {
$(this).removeClass("checked");
DATA["XR_research_technology"] = "";
XR_setValue("XR_research_technology", "");
} else {
$(this).addClass("checked");
DATA["XR_research_technology"] = "checked";
XR_setValue("XR_research_technology", "checked");
}
});
$(".reset_technology").click(function() {
if ($(this).hasClass("checked")) {
$(this).removeClass("checked");
DATA["XR_reset_technology"] = "";
XR_setValue("XR_reset_technology", "");
} else {
$(this).addClass("checked");
DATA["XR_reset_technology"] = "checked";
XR_setValue("XR_reset_technology", "checked");
}
});
});
} else {
console.log("schon da");
}
},
mutationobserver : function () {
var observer = new MutationObserver(function (mutations) {
});
observer.observe($('body').get(0), {
attributes : false,
childList : true,
characterData : false
});
},
windowmanager : function () {
//Academyoverview
function WndHandlerXRacademyoverview(wndhandle) {
this.wnd = wndhandle;
}
Function.prototype.inherits.call(WndHandlerXRacademyoverview, WndHandlerDefault);
WndHandlerXRacademyoverview.prototype.getDefaultWindowOptions = function () {
return {
position : ["center","center"],
width : 850,
height : 500,
minimizable : true,
title :"Academy Overview"
};
};
GPWindowMgr.addWndType("XR_ACADEMYOVERVIEW","xracademyoverview", WndHandlerXRacademyoverview, 1);
}
};
/************************************************************************
* Observer
***********************************************************************/
$.Observer(GameEvents.game.load).subscribe('XR', function (e, data) {
XR.Functions.mutationobserver();
XR.Functions.windowmanager();
$(document).ajaxComplete(function (event, xhr, settings) {
var a = settings.url.split("?");
var b = a[0].substr(6);
var c = a[1].split("&")[1].substr(7);
console.log(b+" "+c);
if (b in XR.CallAjaxFunction && c in XR.CallAjaxFunction[b]) {
console.log("Function found");
XR.CallAjaxFunction[b][c](event, xhr, settings);
}
});
});
}
/************************************************************************
* Start Method
***********************************************************************/
var DATA = {
script_version : GM_info.script.version,
XR_research_technology : (GM_getValue("XR_research_technology") !== undefined ? GM_getValue("XR_research_technology") : "checked"),
XR_reset_technology : (GM_getValue("XR_reset_technology") !== undefined ? GM_getValue("XR_reset_technology") : "")
};
var keys = GM_listValues();
for (var i = 0, key = null; key = keys[i]; i++) {
if (exceptions.indexOf(key) > -1) {
continue;
}
GM_deleteValue(key);
}
for (key in values) {
GM_setValue(key, values[key]);
}
console.log("1");
console.log(DATA);
unsafeWindow.XR_setValue = function (name, val) {
setTimeout(function () {
GM_setValue(name, val);
}, 0);
};
unsafeWindow.XR_getValue = function (name) {
return GM_getValue(name);
};
if (typeof exportFunction == 'function') {
exportFunction(unsafeWindow.XR_setValue, unsafeWindow, {
defineAs : "XR_setValue"
});
exportFunction(unsafeWindow.XR_getValue, unsafeWindow, {
defineAs : "XR_getValue"
});
}
function appendScript() {
if (unsafeWindow.Game) {
var XR_script = document.createElement('script');
XR_script.type = 'text/javascript';
XR_script.id ="XR_script";
console.log(JSON.stringify(DATA));
XR_script.textContent = XR_main_script.toString() +"\n XR_main_script(" + JSON.stringify(DATA) +");";
document.body.appendChild(XR_script);
} else if (mID=="") {
setTimeout(function () {
appendScript();
}, 100);
}
}
appendScript();