View difference between Paste ID: 6abjkJfG and g1jRDsVy
SHOW: | | - or go back to the newest paste.
1
/*
2
Урезанная клавограмма + измеритель брутто* для Клавогонок.
3
авторы: MMMAAANNN, al1as
4-
v 0.05
4+
v 0.07
5
 
6
Это альфа версия. Чтобы ее использовать, нужно:
7
1) Скопировать этот код
8
2) Открыть JS-консоль браузера
9
3) Создать заезд
10
4) Вставить код в консоль и нажать Enter ДО НАЧАЛА ЗАЕЗДА
11
5) Пройти заезд
12
6) Нажать любую клавишу
13
7) В консоли прочесть результат замера скорости нетто и брутто*
14
 
15
Планируется далее оформить это все в юзерскрипт, чтобы не нужно было ничего никуда вставлять и чтобы результат выводился прямо на странице заезда, а не в консоли.
16
 
17
*/
18
var x = 0;
19
var i;
20
var keybogram = ['Start'];
21
var nonPrintedKeys = "ShiftRight ShiftLeft ControlRight ControlLeft AltRight AltLeft".split(' ');
22
var ctrlBackspaceStoppers = "Space".split(' ');
23
24
document.onkeydown = function(ev) {
25
	if (game.gamestatus === 'racing') {
26
		if (!game.finished) {
27
			y = performance.now();
28
			keybogram.push([ev.code, y - x, ev]); x = y;
29
		} else {
30
			analyzeKeybogram(keybogram);
31
		}
32
	}
33
		
34
}
35
36
37
function analyzeKeybogram(keybogram) {
38
	var cleanKeybogram = [];
39
	for (i = 0; i < keybogram.length; i++) {
40
		if (keybogram[i][0] === 'Backspace') {
41
			if (keybogram[i][2].ctrlKey) {
42-
				while (ctrlBackspaceStoppers.indexOf(cleanKeybogram[cleanKeybogram.length-1][0])   > -1 && cleanKeybogram.length > 0)  cleanKeybogram.pop();
42+
				while (ctrlBackspaceStoppers.indexOf(cleanKeybogram[cleanKeybogram.length-1][0])   > -1 && cleanKeybogram.length > 1)  cleanKeybogram.pop();
43-
				while (ctrlBackspaceStoppers.indexOf(cleanKeybogram[cleanKeybogram.length-1][0]) === -1 && cleanKeybogram.length > 0)  cleanKeybogram.pop();
43+
				while (ctrlBackspaceStoppers.indexOf(cleanKeybogram[cleanKeybogram.length-1][0]) === -1 && cleanKeybogram.length > 1)  cleanKeybogram.pop();
44
			} else {
45
				cleanKeybogram.pop();
46
			}
47
		} else if (nonPrintedKeys.indexOf(keybogram[i][0]) === -1) {
48
			cleanKeybogram.push(keybogram[i]);
49
		}
50
	}
51
52
var totalTime = 0;
53
for (i = 2; i < keybogram.length; i++) { totalTime += keybogram[i][1]; }
54
55
var cleanTime = 0;
56
for (i = 2; i < cleanKeybogram.length; i++) { cleanTime += cleanKeybogram[i][1]; }
57
58
console.log("Net speed:", (cleanKeybogram.length-1)/(totalTime/60000));
59
console.log("Brutto* speed:", (cleanKeybogram.length-1)/(cleanTime/60000));
60
}