// ==UserScript==
// @name twitchplaysdark
// @namespace https://greasyfork.org/en/scripts/13027-twitchplaysdark
// @version 0.50
// @description twitchplaysdark controller
// @author You
// @match http://www.twitch.tv/twitchplaysdark
// @match https://www.twitch.tv/twitchplaysdark
// @grant GM_getValue
// @grant GM_setValue
// @grant GM_addStyle
// @require http://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js
// @require http://code.jquery.com/ui/1.9.2/jquery-ui.js
// @run-at document-end
// ==/UserScript==
GM_addStyle ( "\
.tpdb {\
cursor:pointer;\
position:absolute;\
background: #999999;\
background-image: -webkit-linear-gradient(top, #999999, #404040);\
background-image: -moz-linear-gradient(top, #999999, #404040);\
background-image: -ms-linear-gradient(top, #999999, #404040);\
background-image: -o-linear-gradient(top, #999999, #404040);\
background-image: linear-gradient(to bottom, #999999, #404040);\
-webkit-border-radius: 10;\
-moz-border-radius: 10;\
border-radius: 10px;\
font-family: Arial;\
color: #ffffff;\
font-size: 20px;\
padding: 4px 2px 2px 2px;\
text-decoration: none;\
text-align:center;\
height:30px;\
width:30px;\
}\
.tpdb_v {\
-webkit-transform: rotate(-90deg);\
-moz-transform: rotate(-90deg);\
-ms-transform: rotate(-90deg);\
-o-transform: rotate(-90deg);\
filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=3);\
}\
.tpdb_u {\
-webkit-transform: rotate(-180deg);\
-moz-transform: rotate(-180deg);\
-ms-transform: rotate(-180deg);\
-o-transform: rotate(-180deg);\
filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=2);\
}\
\
.tpdb:hover {\
background: #bfbfbf;\
background-image: -webkit-linear-gradient(top, #bfbfbf, #969696);\
background-image: -moz-linear-gradient(top, #bfbfbf, #969696);\
background-image: -ms-linear-gradient(top, #bfbfbf, #969696);\
background-image: -o-linear-gradient(top, #bfbfbf, #969696);\
background-image: linear-gradient(to bottom, #bfbfbf, #969696);\
text-decoration: none;\
}\
#TPD {\
-moz-user-select: -moz-none;\
-khtml-user-select: none;\
-webkit-user-select: none;\
-ms-user-select: none;\
user-select: none;\
position:absolute;\
z-index:1000;\
background:black;\
border:1px solid #333;\
-webkit-border-radius: 10;\
-moz-border-radius: 10;\
border-radius: 10px;\
height:260px;\
width:400px;\
color:white;\
}\
.tpd_option{\
cursor:pointer;\
}\
#selectable .ui-selecting { background: #FECA40; }\
#selectable .ui-selected { background: #F39814; color: white; }\
#selectable { list-style-type: none; margin: 0; padding: 0;width: 40px;}\
#selectable li { height: 20px; width:20px; cursor:pointer; \
padding: 0px 2px 2px 2px;\
text-decoration: none;\
text-align:center;\
-webkit-border-radius: 10;\
-moz-border-radius: 10;\
border-radius: 10px;\
border:1px solid #FFF;\
float: left;\
margin: 2px;\
}\
#tpd_multi{\
position:absolute;\
right:10px;\
top:55px;\
-webkit-border-radius: 10;\
-moz-border-radius: 10;\
border-radius: 10px;\
}\
" );
window.setTimeout(jqueryLoaded, 10000);
function jqueryLoaded() {
TPDNS = {
sendCommand: function(cmd) {
document.getElementsByClassName("chat_text_input")[0].focus();
var val = $( cmd ).attr('id').replace('c_','');
if(!$( "#tpd_target" ).prop('readonly'))
if($( "#tpd_target" ).attr('checked'))
val = 't' + val;
else
val = 'n' + val;
var multi = $( '.ui-selected' ).first().attr('id');
if(multi != 'x1')
val = val + multi;
console.log("cmd:" + val);
$( '.chat_text_input' ).val($( '.chat_text_input' ).val()+val);
if($( "#tpd_two" ).attr('checked')){
if(this.first){
this.first = false;
$( '.chat_text_input' ).val($( '.chat_text_input' ).val()+'+');
return;
}else
this.first = true;
}
try{
document.getElementsByClassName("chat_text_input")[0].focus();
TPDNS.eventFire(document.getElementsByClassName("chat_text_input")[0],'change');
TPDNS.eventFire(document.getElementsByClassName("send-chat-button")[0],'click');
//this.eventFire(a,'click');
}catch(err){console.log(err);}
},
ts: function (cb) {
if (cb.readOnly) cb.checked=cb.readOnly=false;
else if (!cb.checked) cb.readOnly=cb.indeterminate=true;
},
first:true,
val:'',
eventFire :function(el, etype){
if (el.fireEvent) {
el.fireEvent('on' + etype);
} else {
var evObj = document.createEvent('Events');
evObj.initEvent(etype, true, false);
el.dispatchEvent(evObj);
}
}
}
unsafeWindow.TPDNS = cloneInto(TPDNS, unsafeWindow,{cloneFunctions: true});
$('body').append('<div id="TPD"></div>');
$( "#TPD" ).css("top",GM_getValue("top",0));
$( "#TPD" ).css("left",GM_getValue("left",0));
$( "#TPD" ).draggable();
$( "#TPD" ).draggable('disable');
$( '#TPD' ).mouseup(function() {
var divOffset = $("#TPD").offset();
GM_setValue("left", divOffset.left);
GM_setValue("top", divOffset.top);
console.log(divOffset.top + " , " + divOffset.left);
});
//checkboxes
$( '#TPD' ).append('<div class=tpd_option style="position:absolute;top:10px;right:10px;"><input alt="Move this window" id=tpd_drag class=tpd_option type="checkbox" value="0"><label for=tpd_drag class=tpd_option>✣</label></div>');
$( '#tpd_drag' ).click(function() {
if($( "#tpd_drag" ).attr('checked'))
$( "#TPD" ).draggable('enable');
else
$( "#TPD" ).draggable('disable');
});
$( '#TPD' ).append('<div class=tpd_option style="position:absolute;top:10px;right:27px;"><input alt="Target (n,t or none)" id=tpd_target class=tpd_option type="checkbox" value="0" onclick="window.TPDNS.ts(this)" readonly><label for=tpd_target class=tpd_option>⊚</label></div>');
$( '#tpd_target' ).prop("indeterminate", true);
$( '#TPD' ).append('<div class=tpd_option style="position:absolute;top:10px;right:44px;"><input alt="2 commands" id=tpd_two class=tpd_option type="checkbox" value="0"><label for=tpd_two class=tpd_option>2</label></div>');
//directions
$( '#TPD' ).append('<div id=c_f class=tpdb style="top:10px;left:50px;" onclick="window.TPDNS.sendCommand(this);">↑</div>');
$( '#TPD' ).append('<div id=c_b class=tpdb style="top:90px;left:50px;" onclick="window.TPDNS.sendCommand(this);">↓</div>');
$( '#TPD' ).append('<div id=c_l class=tpdb style="top:50px;left:10px;" onclick="window.TPDNS.sendCommand(this);">←</div>');
$( '#TPD' ).append('<div id=c_r class=tpdb style="top:50px;left:90px;" onclick="window.TPDNS.sendCommand(this);">→</div>');
$( '#TPD' ).append('<div id=c_fr class=tpdb style="top:10px;left:90px;" onclick="window.TPDNS.sendCommand(this);">↗</div>');
$( '#TPD' ).append('<div id=c_fl class=tpdb style="top:10px;left:10px;" onclick="window.TPDNS.sendCommand(this);">↖</div>');
$( '#TPD' ).append('<div id=c_br class=tpdb style="top:90px;left:90px;" onclick="window.TPDNS.sendCommand(this);">↘</div>');
$( '#TPD' ).append('<div id=c_bl class=tpdb style="top:90px;left:10px;" onclick="window.TPDNS.sendCommand(this);">↙</div>');
//flong
$( '#TPD' ).append('<div id=c_flong class=tpdb style="top:50px;left:50px;" onclick="window.TPDNS.sendCommand(this);">↟</div>');
//attacks
$( '#TPD' ).append('<div id=c_l1 class=tpdb style="top:10px;left:140px;" onclick="window.TPDNS.sendCommand(this);">ᗢ</div>');
$( '#TPD' ).append('<div id=c_l2 class=tpdb style="top:50px;left:140px;" onclick="window.TPDNS.sendCommand(this);">☇</div>');
$( '#TPD' ).append('<div id=c_g class=tpdb style="top:50px;left:180px;" onclick="window.TPDNS.sendCommand(this);">✌</div>');
$( '#TPD' ).append('<div id=c_u class=tpdb style="top:90px;left:140px;" onclick="window.TPDNS.sendCommand(this);">⚕</div>');
$( '#TPD' ).append('<div id=c_r1 class=tpdb style="top:10px;left:180px;" onclick="window.TPDNS.sendCommand(this);">⚔</div>');
$( '#TPD' ).append('<div id=c_r2 class=tpdb style="top:10px;left:220px;" onclick="window.TPDNS.sendCommand(this);">⚒</div>');
$( '#TPD' ).append('<div id=c_ja class=tpdb style="top:50px;left:220px;" onclick="window.TPDNS.sendCommand(this);">☭</div>');
//waiting
$( '#TPD' ).append('<div id=c_hold class=tpdb style="top:10px;left:270px;" onclick="window.TPDNS.sendCommand(this);">⌛</div>');
$( '#TPD' ).append('<div id=c_linger class=tpdb style="top:50px;left:270px;" onclick="window.TPDNS.sendCommand(this);">☕</div>');
//rolls
$( '#TPD' ).append('<div id=c_rf class=tpdb style="top:140px;left:50px;" onclick="window.TPDNS.sendCommand(this);"><div class=tpdb_v>↬</div></div>');
$( '#TPD' ).append('<div id=c_rb class=tpdb style="top:220px;left:50px;" onclick="window.TPDNS.sendCommand(this);"><div class=tpdb_v>↫</div></div>');
$( '#TPD' ).append('<div id=c_rl class=tpdb style="top:180px;left:10px;" onclick="window.TPDNS.sendCommand(this);">↫</div>');
$( '#TPD' ).append('<div id=c_rr class=tpdb style="top:180px;left:90px;" onclick="window.TPDNS.sendCommand(this);">↬</div>');
$( '#TPD' ).append('<div id=c_d class=tpdb style="top:180px;left:50px;" onclick="window.TPDNS.sendCommand(this);">↭</div>');
$( '#TPD' ).append('<div id=c_rfl class=tpdb style="top:140px;left:10px;" onclick="window.TPDNS.sendCommand(this);"><div class=tpdb_v>↬</div></div>');
$( '#TPD' ).append('<div id=c_rbl class=tpdb style="top:220px;left:10px;" onclick="window.TPDNS.sendCommand(this);"><div class=tpdb_v>↫</div></div>');
$( '#TPD' ).append('<div id=c_rfr class=tpdb style="top:140px;left:90px;" onclick="window.TPDNS.sendCommand(this);"><div class=tpdb_v>↬</div></div>');
$( '#TPD' ).append('<div id=c_rbr class=tpdb style="top:220px;left:90px;" onclick="window.TPDNS.sendCommand(this);"><div class=tpdb_v>↫</div></div>');
//camera
$( '#TPD' ).append('<div id=c_cu class=tpdb style="top:140px;left:180px;" onclick="window.TPDNS.sendCommand(this);"><div class=tpdb_v>↷</div></div>');
$( '#TPD' ).append('<div id=c_cd class=tpdb style="top:220px;left:180px;" onclick="window.TPDNS.sendCommand(this);"><div class=tpdb_v>↶</div></div>');
$( '#TPD' ).append('<div id=c_cl class=tpdb style="top:180px;left:140px;" onclick="window.TPDNS.sendCommand(this);"><div class=tpdb_u>↷</div></div>');
$( '#TPD' ).append('<div id=c_cr class=tpdb style="top:180px;left:220px;" onclick="window.TPDNS.sendCommand(this);"><div class=tpdb_u>↶</div></div>');
$( '#TPD' ).append('<div id=c_cul class=tpdb style="top:140px;left:140px;" onclick="window.TPDNS.sendCommand(this);">↖</div>');
$( '#TPD' ).append('<div id=c_cur class=tpdb style="top:140px;left:220px;" onclick="window.TPDNS.sendCommand(this);">↗</div>');
$( '#TPD' ).append('<div id=c_cdl class=tpdb style="top:220px;left:140px;" onclick="window.TPDNS.sendCommand(this);">↙</div>');
$( '#TPD' ).append('<div id=c_clr class=tpdb style="top:220px;left:220px;" onclick="window.TPDNS.sendCommand(this);">↘</div>');
//arrows
$( '#TPD' ).append('<div id=c_aru class=tpdb style="top:180px;left:310px;" onclick="window.TPDNS.sendCommand(this);">▲</div>');
$( '#TPD' ).append('<div id=c_ard class=tpdb style="top:220px;left:310px;" onclick="window.TPDNS.sendCommand(this);">▼</div>');
$( '#TPD' ).append('<div id=c_arl class=tpdb style="top:220px;left:270px;" onclick="window.TPDNS.sendCommand(this);">◀</div>');
$( '#TPD' ).append('<div id=c_arr class=tpdb style="top:220px;left:350px;" onclick="window.TPDNS.sendCommand(this);">▶</div>');
$( '#TPD' ).append('<div id=c_e class=tpdb style="top:180px;left:350px;" onclick="window.TPDNS.sendCommand(this);">☑</div>');
$( '#TPD' ).append('<div id=c_bs class=tpdb style="top:180px;left:270px;" onclick="window.TPDNS.sendCommand(this);">☒</div>');
$( '#TPD' ).append('\
<div id=tpd_multi><ol id="selectable">\
<li id=x1 class="ui-widget-content ui-selected">x1</li>\
<li id=x2 class="ui-widget-content">x2</li>\
<li id=x3 class="ui-widget-content">x3</li>\
<li id=x4 class="ui-widget-content">x4</li>\
<li id=x5 class="ui-widget-content">x5</li>\
</ol></div>');
$( "#selectable" ).selectable();
$( "#TPD" ).children("div").each(function() {
if($(this).attr("id"))
$( this ).attr( "title", $(this).attr("id").replace('c_','')) ;
});
$( "#TPD" ).tooltip();
}