-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathrepo.js
127 lines (113 loc) · 2.76 KB
/
repo.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
'use strict';
function decisecond(){
time = core_round({
'decimals': 1,
'number': time - .1,
});
core_ui_update({
'ids': {
'time': core_number_format({
'decimals-min': 1,
'number': time,
}),
},
});
if(time <= 0){
core_interval_pause_all();
core_elements['text'].readOnly = true;
}
}
function enter(){
if(core_intervals['interval']['paused']){
start();
}
if(core_elements['text'].value !== core_elements['target'].textContent){
return;
}
audio_start('boop');
core_ui_update({
'ids': {
'score': Number.parseInt(
core_elements['score'].textContent,
10
) + 1,
'target': core_random_string({
'characters': letters,
'length': core_storage_data['length'],
}),
},
});
core_elements['text'].value = '';
set_time_remaining(time_remaining - core_storage_data['time-decrease']);
}
function repo_escape(){
if(!core_intervals['interval']
&& !core_menu_open){
start();
}
}
function repo_init(){
core_repo_init({
'events': {
'start-button': {
'onclick': function(){
core_escape();
start();
},
},
},
'globals': {
'letters': 'abcdefghijklmnopqrstuvwxyz',
'time': 0,
'time_remaining': 0,
},
'info': '<button id=start-button type=button>Restart</button>',
'keybinds': {
'Enter': {
'todo': enter,
},
},
'menu': true,
'storage': {
'length': 5,
'time-decrease': .1,
'time-max': 10,
},
'storage-menu': '<table><tr><td><input class=mini id=length min=1 step=1 type=number><td>Length'
+ '<tr><td><input class=mini id=time-decrease step=any type=number><td>Time Decrease'
+ '<tr><td><input class=mini id=time-max step=any type=number><td>Time Max</table>',
'title': 'SpeedType.htm',
});
}
function set_time_remaining(new_time_remaining){
time_remaining = new_time_remaining;
time = time_remaining;
core_ui_update({
'ids': {
'time': core_round({
'decimals': 1,
'number': time_remaining,
}),
},
});
}
function start(){
set_time_remaining(core_storage_data['time-max']);
core_ui_update({
'ids': {
'score': 0,
'target': core_random_string({
'characters': letters,
'length': core_storage_data['length'],
}),
'text': '',
},
});
core_elements['text'].readOnly = false;
core_elements['text'].focus();
core_interval_modify({
'id': 'interval',
'interval': 100,
'todo': decisecond,
});
}