jacobinathanialpeterson's picture
Upload 1035 files
1e40c2a
raw
history blame
6.12 kB
var controlsLoaded = false;
var curControl = null;
function onControlsLoad() {
jaws.start(InputMonitor);
// check for an existing controls cookie
var customControls = readCookie('customControls');
// these actions will trigger the controls configurations
if (customControls === 'TRUE') {
// if there is a cookie, set up the controls for it
document.getElementById('customRadio').checked = true;
configureCustomControls();
} else {
// if no cookie, assign defaults, create the cookie
document.getElementById('defaultRadio').checked = true;
setDefaultControls();
}
configureAutoRepeat();
controlsLoaded = true;
}
function setDefaultControls() {
stopPollingInput();
document.getElementById('instructionsDefault').setAttribute('class', 'withDisplay');
document.getElementById('instructionsCustom').setAttribute('class', 'noDisplay');
document.getElementById('instructionsPending').setAttribute('class', 'noDisplay');
// set the cookies
createCookie('customControls', 'FALSE', 1000);
// configure the gui to the default text
document.getElementById('rotateLeftValue')
.innerHTML = 'Z';
document.getElementById('rotateRightValue')
.innerHTML = 'X, UP';
document.getElementById('shiftLeftValue')
.innerHTML = 'LEFT';
document.getElementById('shiftRightValue')
.innerHTML = 'RIGHT';
document.getElementById('softDropValue')
.innerHTML = 'DOWN';
document.getElementById('hardDropValue')
.innerHTML = 'SPACE';
document.getElementById('swapValue')
.innerHTML = 'SHIFT, C';
}
function configureCustomControls(fromCookie, fromThreshold) {
stopPollingInput();
document.getElementById('instructionsDefault').setAttribute('class', 'noDisplay');
document.getElementById('instructionsCustom').setAttribute('class', 'withDisplay');
document.getElementById('instructionsPending').setAttribute('class', 'noDisplay');
if (controlsLoaded && !fromCookie) {
// the cookies need to be created & initialized
createCookie('rotateLeft', 'Z', 1000);
createCookie('rotateRight', 'X', 1000);
createCookie('shiftLeft', 'LEFT', 1000);
createCookie('shiftRight', 'RIGHT', 1000);
createCookie('softDrop', 'DOWN', 1000);
createCookie('hardDrop', 'SPACE', 1000);
createCookie('swap', 'C', 1000);
createCookie('customControls', 'TRUE', 1000);
}
// assign all of the GUI elements based on the cookie
document.getElementById('rotateLeftValue')
.innerHTML = readCookie('rotateLeft');
document.getElementById('rotateRightValue')
.innerHTML = readCookie('rotateRight');
document.getElementById('shiftLeftValue')
.innerHTML = readCookie('shiftLeft');
document.getElementById('shiftRightValue')
.innerHTML = readCookie('shiftRight');
document.getElementById('softDropValue')
.innerHTML = readCookie('softDrop');
document.getElementById('hardDropValue')
.innerHTML = readCookie('hardDrop');
document.getElementById('swapValue')
.innerHTML = readCookie('swap');
}
function controlsUnitClicked(controlName) {
// if default controls, switch to custom
if (readCookie('customControls') !== 'TRUE') {
// if no cookie, assign defaults, create the cookie
document.getElementById('customRadio').checked = true;
configureCustomControls();
}
document.getElementById('instructionsDefault').setAttribute('class', 'noDisplay');
document.getElementById('instructionsCustom').setAttribute('class', 'noDisplay');
document.getElementById('instructionsPending').setAttribute('class', 'withDisplay');
if (curControl !== null) {
stopPollingInput();
}
curControl = {
name: controlName,
containerId: controlName + 'Div'
};
startPollingInput();
}
function startPollingInput() {
document.getElementById(curControl.containerId).setAttribute('class', 'controlsUnit controlsUnitPending');
inputPolling = true;
}
function stopPollingInput() {
if (curControl !== null) {
inputPolling = false;
document.getElementById(curControl.containerId).setAttribute('class', 'controlsUnit');
curControl = null;
}
}
function findWhereKeyUsed(key) {
var cookies = ['rotateLeft',
'rotateRight',
'shiftLeft',
'shiftRight',
'softDrop',
'hardDrop',
'swap'],
i;
for (i = 0; i < cookies.length; i += 1) {
if (readCookie(cookies[i]) === key) {
return cookies[i];
}
}
return null;
}
function reportKeyPressed(keyLower) {
// should never fail this case...
if (curControl !== null) {
var key = keyLower.toUpperCase();
// if this key is used anywhere else
var controlUsed = findWhereKeyUsed(key);
if (controlUsed !== null) {
// swap the two controls
createCookie(controlUsed, readCookie(curControl.name), 1000);
createCookie(curControl.name, key, 1000);
} else {
// set this key to the new value
createCookie(curControl.name, key, 1000);
}
configureCustomControls(true);
stopPollingInput();
}
}
function configureAutoRepeat() {
var autoRepeat = readCookie('autoRepeat');
if (autoRepeat === null) {
autoRepeat = "50";
createCookie('autoRepeat', autoRepeat, 1000);
}
var threshold = readCookie('threshold');
if (threshold === null) {
threshold = "200";
createCookie("threshold", threshold, 1000);
}
document.getElementById('autoRepeatRange').value = autoRepeat;
document.getElementById('autoRepeatValue').innerHTML = autoRepeat;
document.getElementById('thresholdRange').value = threshold;
document.getElementById('thresholdValue').innerHTML = threshold;
}
function updateAutoRepeat() {
var newVal = document.getElementById('autoRepeatRange').value;
document.getElementById('autoRepeatValue').innerHTML = newVal;
createCookie('autoRepeat', newVal, 1000);
}
function updateThreshold() {
var newVal = document.getElementById('thresholdRange').value;
document.getElementById('thresholdValue').innerHTML = newVal;
createCookie('threshold', newVal, 1000);
}
function resetAutoRepeat() {
eraseCookie('autoRepeat');
eraseCookie('threshold');
configureAutoRepeat();
}