View difference between Paste ID: 7LPR67UD and HQ3q8Vwz
SHOW: | | - or go back to the newest paste.
1
/*
2
Урезанная клавограмма + измеритель брутто* для Клавогонок.
3
автор: MMMAAANNN
4
v 0.02
5
6
Это альфа версия. Чтобы ее использовать, нужно:
7
1) Скопировать этот код
8
2) Открыть JS-консоль браузера
9
3) Создать заезд
10
4) Вставить код в консоль и нажать Enter ДО НАЧАЛА ЗАЕЗДА
11
5) Пройти заезд
12
6) Нажать любую клавишу
13
7) В консоли прочесть результат замера скорости нетто и брутто*
14
15
Планируется далее оформить это все в юзерскрипт, чтобы не нужно было ничего никуда вставлять и чтобы результат выводился прямо на странице заезда, а не в консоли.
16
17
*/
18
19
var x = 0;
20
var keybogram = [];
21
var nonPrintedKeys = "ShiftRight ShiftLeft ControlRight ControlLeft AltRight AltLeft".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
			if (keybogram[i][2].ctrlKey) {
41
				while (cleanKeybogram[cleanKeybogram.length-1] != 'Space') 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 = 1; i < keybogram.length; i++) { totalTime += keybogram[i][1]; }
52
53
var cleanTime = 0;
54
for (i = 1; i < cleanKeybogram.length; i++) { cleanTime += cleanKeybogram[i][1]; }
55
56
console.log("Net speed:", cleanKeybogram.length/(totalTime/60000));
57
console.log("Brutto* speed:", cleanKeybogram.length/(cleanTime/60000));
58
}