forked from flanchan/doushio
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
65 lines
1.5 KiB
65 lines
1.5 KiB
5 years ago
|
(function () {
|
||
|
|
||
|
function game_over() {
|
||
|
setTimeout(function () {
|
||
|
location.reload(true);
|
||
|
}, 2000);
|
||
|
$DOC.children().remove();
|
||
|
}
|
||
|
|
||
|
function shut_down_everything() {
|
||
|
var $threads = $('section');
|
||
|
if (!$threads.length)
|
||
|
return setTimeout(game_over, 1000);
|
||
|
pick_random($threads, 0.2).remove();
|
||
|
pick_random($('hr, aside, h1, fieldset'), 0.2).remove();
|
||
|
setTimeout(shut_down_everything, 500);
|
||
|
}
|
||
|
|
||
|
function shut_down_something() {
|
||
|
var $posts = $('article');
|
||
|
if (!$posts.length)
|
||
|
return setTimeout(shut_down_everything, 500);
|
||
|
var $posts = pick_random($posts, 0.1);
|
||
|
$posts.each(function () {
|
||
|
var $post = $(this);
|
||
|
var $section = $post.closest('section');
|
||
|
try {
|
||
|
var thread = Threads.get(extract_num($section));
|
||
|
var replies = thread.get('replies');
|
||
|
var num = extract_num($post);
|
||
|
clear_post_links(replies.get(num), replies);
|
||
|
}
|
||
|
catch (e) {}
|
||
|
});
|
||
|
$posts.remove();
|
||
|
if (Math.random() < 0.2)
|
||
|
pick_random($('figure, blockquote, b'), 0.002).remove();
|
||
|
setTimeout(shut_down_something, 500);
|
||
|
}
|
||
|
|
||
|
var tearingDown = false;
|
||
|
dispatcher[TEARDOWN] = function () {
|
||
|
if (tearingDown)
|
||
|
return;
|
||
|
tearingDown = true;
|
||
|
window.onbeforeunload = null;
|
||
|
shut_down_something();
|
||
|
};
|
||
|
|
||
|
function pick_random($items, proportion) {
|
||
|
var len = $items.length;
|
||
|
var origLen = len;
|
||
|
var toDelete = Math.max(1, Math.min(len, Math.ceil(len * proportion)));
|
||
|
var $picked = $();
|
||
|
for (; len > 0 && toDelete > 0; toDelete--) {
|
||
|
var i = Math.floor(Math.random() * len);
|
||
|
$picked = $picked.add($items[i]);
|
||
|
$items.splice(i, 1);
|
||
|
len = $items.length;
|
||
|
}
|
||
|
return $picked;
|
||
|
}
|
||
|
|
||
|
})();
|