-
Notifications
You must be signed in to change notification settings - Fork 11
/
hexhex.js
62 lines (50 loc) · 1.05 KB
/
hexhex.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
class StateSaver {
constructor(string) {
this.newRNG = true;
this.nrs = [];
this.nrsbackup = [];
console.log(string);
if(string){
this.newRNG = false;
this.nrs = JSON.parse(string);
this.nrsbackup = [...this.nrs];
this.nrs.reverse(); //reverse for easy pap later
}
}
getLength(){
return this.nrs.length;
}
getSeed(){
return JSON.stringify(this.nrs);
}
hasNextNr(){
return !this.newRNG && this.nrs.length>0 ? true : false;
}
saveUserInput(nr){
this.nrs.push(nr);
}
removeLast(x){
this.nrs.splice(this.nrs.length-x, this.nrs.length);
}
getNextInt(min, max){
if(this.newRNG){
var nr = this.rnd(min, max);
this.saveUserInput(nr);
return nr;
}else{
//console.log(this.intnrs);
var val = this.nrs.pop();
if(this.getLength()==0){
this.nrs = [...this.nrsbackup];
this.newRNG = true;
}
return val;
}
}
//returns a random Int between min and max
rnd(min, max) {
min = Math.ceil(min);
max = Math.floor(max);
return Math.floor(Math.random() * (max - min + 1)) + min;
}
}