NOTICE: By continued use of this site you understand and agree to the binding Terms of Service and Privacy Policy.
// ==UserScript== // @name SudPuce // @namespace sudpuce // @grant none // @match http://www.dreadcast.net/Main* // @version 0.1.4 // @description Accès aux serveurs matriciels liés aux puces du Sud // @require https://cdnjs.cloudflare.com/ajax/libs/socket.io/1.7.2/socket.io.min.js // ==/UserScript== (function () { 'use strict'; var target = 'http://puce-sudard.rhcloud.com:8000/'; var socket = io.connect(target); var chip_serial = ''; var chip_cmd_filter = /^puce\+(.*)$/gm; var hasFocus = true; $('#img_avatar').append('<span id="mysouthchip" style="display:none;position:absolute;border-radius: 50%;width: 10px;height: 10px;background: gray;border:1px solid black;right:1px;top:1px;" title="Puce inactive"></span>'); socket.on('disconnect', function () { chip_serial = ''; $('#mysouthchip').hide(); $('#mysouthchip').css({ "background": 'gray' }); $('#mysouthchip').attr('title', 'Puce inactive'); }); socket.on('error', function () { chip_serial = ''; $('#mysouthchip').hide(); $('#mysouthchip').css({ "background": 'gray' }); $('#mysouthchip').attr('title', 'Puce inactive'); }); socket.on('blink', function (data) { if (hasFocus) { var current_title = $('#mysouthchip').attr("title"); var current_color = $('#mysouthchip').css("background"); $('#mysouthchip').attr('title', data.chip_title); $('#mysouthchip').css({ background: data.color }); $('#mysouthchip').fadeOut(100).fadeIn(100).fadeOut(100).fadeIn(100).fadeOut(100).fadeIn(100).fadeOut(100).fadeIn(100).fadeOut(100).fadeIn(100).fadeOut(100).fadeIn(100).fadeOut(100).fadeIn(100).fadeOut(100).fadeIn(100).fadeOut(100).fadeIn(100, function () { $('#mysouthchip').attr('title', current_title); $('#mysouthchip').css({ background: current_color }); }); } }); socket.on('update', function (data) { $('#mysouthchip').css({ background: data.color }); $('#mysouthchip').attr('title', data.chip_title); }); function parsePostData(data) { return JSON.parse('{"' + decodeURI(data).replace(/"/g, '\\"').replace(/&/g, '","').replace(/=/g, '":"') + '"}'); } function genResponseLine() { var response = $('<div />'); response.addClass('ligne_resultat_fixed'); var resval = $('<span />').appendTo(response); resval.text('Vérification en cours...'); return response; } function updatePosition() { if (chip_serial === '') { return false; } if ($('#lieu_actuel .titre1').text() === 'Dans la rue') { socket.emit('noposition'); } else { socket.emit('position', { position: $('#lieu_actuel .titre2').text(), timestamp: new Date().getTime() }); } } function interceptDeckCommand(data) { var $span = genResponseLine(); $('.deck_main .zone_ecrit').append($span); if (data[1]) { socket.emit('activate', { serial: data[1], timestamp: new Date().getTime() }, function (databack) { if (!databack.error) { chip_serial = data[1]; $('#mysouthchip').show(); $('#mysouthchip').css({ "background": databack.color }); $('#mysouthchip').attr('title', databack.chip_title); } updatePosition(); $span.text(databack.message); }); } } window.addEventListener('focus', function () { hasFocus = true; }); window.addEventListener('blur', function () { hasFocus = false; }); $(document).ajaxComplete(function (event, xhr, settings) { if (settings.url === "http://www.dreadcast.net/Check") { return false; } if (settings.url === "Deck/Command") { var parse_data = parsePostData(settings.data); var matched = parse_data.commande.match(chip_cmd_filter); if (matched) { interceptDeckCommand(chip_cmd_filter.exec(parse_data.commande)); } } updatePosition(); }); })();