A simple aid for collecting ScummVM-supported games
当前为
// ==UserScript==
// @name Mark owned ScummVM Games
// @namespace ssokolow.com
// @description A simple aid for collecting ScummVM-supported games
// @license MIT
// @match *://www.scummvm.org/compatibility/*
// @version 2
// @require https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js
// @grant GM_setValue
// @grant GM_deleteValue
// @grant GM_listValues
// ==/UserScript==
const OWNED_OPACITY = 0.3;
var owned_games = GM_listValues();
var toggleOwnership = function(e) {
e.preventDefault();
var $this = $(this);
var game_id = $this.data('game_id');
// Toggle based on what's displayed so that it will always act as the
// user expects, regardless of changes since last reload
if ($this.text() == '+') {
$this.text('-');
$this.closest('a').css('opacity', OWNED_OPACITY);
GM_setValue(game_id, true);
} else {
$this.text('+');
$this.closest('a').css('opacity', 1.0);
GM_deleteValue(game_id);
}
};
$('.content a').each(function() {
var $this = $(this);
// Extract the game ID for use in record-keeping
var url = $(this).attr('href').split('/');
var game_id = url[url.length-1] ? url[url.length-1] : url[url.length-2];
// Craft a button to toggle ownership status
var togglebutton = $('<span>', {title: "Toggle Owned"})
.text(owned_games.indexOf(game_id) == -1 ? '+' : '-')
.css({
border: '1px solid black',
borderRadius: 2,
color: 'black',
display: 'inline-block',
fontWeight: 'bold',
marginRight: 5,
visibility: 'hidden',
paddingLeft: 2,
paddingRight: 2,
textAlign: 'center',
width: '1em',
}).data('game_id', game_id)
.click(toggleOwnership)
.prependTo($this);
// On-hover display in a manner which won't reposition the game title
$this.hover(function() { togglebutton.css('visibility', 'visible'); },
function() { togglebutton.css('visibility', 'hidden'); });
// TODO: Profile alternatives like an x|y|z regexp or a popping iteration
if (owned_games.indexOf(game_id) !== -1){
$this.css('opacity', OWNED_OPACITY);
}
});
// http://www.scummvm.org/compatibility/1.7.0/drascula/