Skip to content

Instantly share code, notes, and snippets.

@Purexo
Last active October 21, 2016 14:44
Show Gist options
  • Save Purexo/9d3a9bd563aa55deb943eb6d7ec63803 to your computer and use it in GitHub Desktop.
Save Purexo/9d3a9bd563aa55deb943eb6d7ec63803 to your computer and use it in GitHub Desktop.
UserScript for Candy Box 1. AutoSave and AutoQuest ^^
// ==UserScript==
// @name CandiBox 1 - AutoSave
// @namespace http://tampermonkey.net/
// @version 0.1
// @description try to take over the world!
// @author Purexo
// @require https://gist.githubusercontent.com/purexo/0d27aad481158047ae852dc10d779cd9/raw/bc931c67e74d5d9d9d205ea456bc52d64f94e124/SimpleEventManager.js
// @include http://candies.aniwey.net/*
// @grant none
// ==/UserScript==
/*jshint multistr: true */
/* --- remove alert function --- */
window.alert = function(message) { return true; };
(function(window) {
'use strict';
/* --- Auto UI --- */
var UI = {
generate: function generate() {
var ui = $.parseHTML(`
<div class="auto-ui collapse">
<span class="collapser">[+]</span>
<div class="container">
<input type="checkbox" id="chk-auto-save"> <label for="chk-auto-save">Auto Save</label> <br />
<input id="ipt-auto-save" type="range" min="1" max="30" value="5" step="1"/> <span id="auto-save-time">5</span> <br />
<label for="ipt-auto-save">in minutes</label> <br />
<input type="checkbox" id="chk-auto-quest"> <label for="chk-auto-quest">Auto Quests</label>
</div>
</div>
<style>
.auto-ui {
position: fixed;
top: 30px;
right: 5px;
overflow: hidden;
border: 1px solid black;
background: white;
}
.auto-ui.collapse {
height: 27px;
width: 29px;
}
.auto-ui .collapser {
float: right;
padding: 5px;
}
</style>
`);
$('body').append($(ui));
},
hide: function() {
$('.auto-ui').addClass('collapse');
$('.auto-ui .collapser').text('[+]');
},
display: function() {
$('.auto-ui').removeClass('collapse');
$('.auto-ui .collapser').text('[-]');
},
reverse: function() {
var _ = $('.auto-ui').hasClass('collapse') ? this.display(): this.hide();
}
};
UI.generate();
$('.auto-ui .collapser').click(function() {
UI.reverse();
});
function loggedSave() {
console.log('Save at ' + new Date());
save();
}
var idAutoSave;
$('#chk-auto-save').click(function() {
idAutoSave = $(this).is(':checked') ? setInterval(loggedSave, 60000 * $('#ipt-auto-save').val()) : clearInterval(idAutoSave);
});
$('#ipt-auto-save').on('change', function() {
$('#auto-save-time').text($(this).val());
// actualyze auto save, yeah it's ugly :p
$('#chk-auto-save').click();
$('#chk-auto-save').click();
});
$('#chk-auto-save, #chk-auto-quest').click();
/* --- Event Loop --- */
var $quest = $('#chk-auto-quest');
var event = new SimpleEventManager(function(lastState) {
lastState.autoQuest = $quest.is(':checked');
// auto-quest running
if (lastState.autoQuest && !quest.weAreQuestingRightNow && quest.tiredTime <= 0) {
this.emit('run-quest');
}
}, 1000); // each seconds
/* --- Event Handler --- */
event.on('run-quest', function() {
quest.begin(true);
});
})(window);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment