Dreadcast Chat Enhancer

Améliore le chat de Dreadcast.

目前為 2016-07-13 提交的版本,檢視 最新版本

// ==UserScript==
// @name         Dreadcast Chat Enhancer
// @namespace    http://tampermonkey.net/
// @version      1.0
// @description  Améliore le chat de Dreadcast.
// @author       MockingJay
// @match        http://www.dreadcast.net/Main
// @grant        none
// ==/UserScript==

//-------------------------------------
//Fonctions de gestion des cookies

function setCookie(cname, cvalue, exdays) {
    var d = new Date();
    d.setTime(d.getTime() + (exdays*24*60*60*1000));
    var expires = "expires="+d.toUTCString();
    document.cookie = cname + "=" + cvalue + "; " + expires;
}

function getCookie(cname) {
    var name = cname + "=";
    var ca = document.cookie.split(';');
    for(var i=0; i<ca.length; i++) {
        var c = ca[i];
        while (c.charAt(0)==' ') c = c.substring(1);
        if (c.indexOf(name) == 0) return c.substring(name.length, c.length);
    }
    return "";
}

//-------------------------------------



$(document).ready(function() {

    var autoScroll = false;

    var ck_autoScroll = getCookie("DC_autoScroll");
    if (ck_autoScroll === "") {
        setCookie("DC_autoScroll", false, 30);
    } else {
        autoScroll = ck_autoScroll;
    }

    //Initialiser le CSS et scroller en bas à l'initialisation.
    $("#zone_chat .zone_infos .msg").css({
        width: '290px',
    });
    $("#chatContent").css({
        "overflow-x": 'hidden',
        "overflow-y": 'scroll',
        height: '313px',
        width: '308px',
    });

    //Initialisation du bouton d'alerte, utilisé quand l'autoScroll est désactivé.
    var $newMessageAlert = $('<div />').appendTo($('#zone_chat'));
    $newMessageAlert.text("⚠ Nouveau message! ⚠");
    $newMessageAlert.css({
        display: 'none',
        top: '45px',
        "text-align": 'center',
        cursor: 'pointer',
        background: '#fff',
        border: '1px solid #fff',
        color: '#0296bb',
        "margin-top": '2px',
        "-webkit-box-shadow": '0 0 4px 2px #329bc2',
    });
    $newMessageAlert.attr('onmouseover', 'this.style.backgroundColor=\"#0b9bcb\";this.style.color=\"#FFFFFF\";');
    $newMessageAlert.attr('onmouseout', 'this.style.backgroundColor=\"#FFFFFF\";this.style.color=\"#0296bb\";');

    //Changer l'autoscroll via le bandeau latéral en haut de l'écran.
    var $toggleAutoScroll = $('<li id="toggleAutoScroll" class="couleur5" ></li>'+'<li class="separator"></li>').prependTo($('#bandeau ul.menus'));
    if(autoScroll) {
        $("#toggleAutoScroll").text("Désactiver l'auto-scroll");
    } else {
        $("#toggleAutoScroll").text("Activer l'auto-scroll");
    }
    $("#toggleAutoScroll").css({
        cursor: 'pointer',
    });
    $("#toggleAutoScroll").attr('onmouseover', 'this.style.color=\"#0073d5\";');
    $("#toggleAutoScroll").attr('onmouseout', 'this.style.color=\"#999\";');
    $("#toggleAutoScroll").click(function(){
        if(autoScroll) {
            autoScroll = false;
            setCookie("DC_autoScroll", false, 30);
            $("#toggleAutoScroll").text("Activer l'auto-scroll");
        } else {
            autoScroll = true;
            setCookie("DC_autoScroll", true, 30);
            $("#toggleAutoScroll").text("Désactiver l'auto-scroll");
        }
    });

    //Fait défiler le chat jusqu'en bas.
    function scrollChat(){
        $('#chatContent').stop().animate({
            scrollTop: $('#chatContent')[0].scrollHeight
        }, 800);
        $newMessageAlert.stop().fadeOut(500);
    }

    $newMessageAlert.click(scrollChat);
    $("#chatForm .text_chat").change(scrollChat()); //NON FONCTIONNEL
    scrollChat(); //Place le chat au chargement du jeu.

    var lastChat = $('#chatContent').text(); //Sert à comparer pour voir si le chat a changé.

    //Scrolle ou alerte à la réception d'un message.
    setInterval(function(){
        if(lastChat != $('#chatContent').text()) {
            lastChat = $('#chatContent').text(); //Actualiser la copie local du chat.

            if(autoScroll) {
                scrollChat();
            }
            else {
                $newMessageAlert.stop().fadeIn(500);
            }
        }
    }, 1000);
});