View difference between Paste ID: QTnApzP1 and WYkhZMgw
SHOW: | | - or go back to the newest paste.
1
/*
2
Урезанная клавограмма + измеритель брутто* для Клавогонок.
3-
автор: MMMAAANNN
3+
авторы: MMMAAANNN, al1as
4-
v 0.02
4+
v 0.04
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 keybogram = ['Start'];
20
var nonPrintedKeys = "ShiftRight ShiftLeft ControlRight ControlLeft AltRight AltLeft".split(' ');
21
var ctrlBackspaceStoppers = "Space Comma Start".split(' ');
22
23
document.onkeydown = function(ev) {
24
	if (game.gamestatus === 'racing') {
25
		if (!game.finished) {
26
			y = performance.now();
27
			keybogram.push([ev.code, y - x, ev]); x = y;
28
		} else {
29
			analyzeKeybogram(keybogram);
30
		}
31
	}
32
		
33
}
34
35
36
function analyzeKeybogram(keybogram) {
37
	var cleanKeybogram = [];
38
	for (i = 0; i < keybogram.length; i++) {
39
		if (keybogram[i][0] === 'Backspace') {
40-
				while (cleanKeybogram[cleanKeybogram.length-1][0] === 'Space')  cleanKeybogram.pop();
40+
41-
				while (cleanKeybogram[cleanKeybogram.length-1][0] != 'Space' && cleanKeybogram[cleanKeybogram.length-1] != 'Start')  cleanKeybogram.pop();
41+
				while (ctrlBackspaceStoppers.indexOf(cleanKeybogram[cleanKeybogram.length-1][0]) === -1)  cleanKeybogram.pop();
42
			} else {
43
				cleanKeybogram.pop();
44
			}
45
		} else if (nonPrintedKeys.indexOf(keybogram[i][0]) === -1) {
46
			cleanKeybogram.push(keybogram[i]);
47
		}
48
	}
49
50
var totalTime = 0;
51
for (i = 2; i < keybogram.length; i++) { totalTime += keybogram[i][1]; }
52
53
var cleanTime = 0;
54
for (i = 2; i < cleanKeybogram.length; i++) { cleanTime += cleanKeybogram[i][1]; }
55
56
console.log("Net speed:", (cleanKeybogram.length-1)/(totalTime/60000));
57
console.log("Brutto* speed:", (cleanKeybogram.length-1)/(cleanTime/60000));
58
}