-
Notifications
You must be signed in to change notification settings - Fork 0
/
progress.nut
44 lines (38 loc) · 1.06 KB
/
progress.nut
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
class ProgressReport {
_total_work = 0;
_percent = 10;
_progress = 0;
_milestone = 0;
constructor(total_work, pct = 10) {
this.Reset(total_work, pct);
}
function Increment() {
if (this._progress >= this._total_work)
return false;
++this._progress;
if (100 * this._progress >= this._milestone * this._total_work) {
this._milestone += this._percent;
return true;
}
return false;
}
function GetProgress() {
return this._progress;
}
function GetProgressPct() {
return (100 * this._progress) / this._total_work;
}
function _tostring() {
return GetProgressPct() + "% [" + this._progress + "/" + this._total_work + "]";
}
function Reset(total_work, pct = null) {
assert(total_work > 0);
if (pct != null) {
assert(pct > 0 && pct < 100);
this._percent = pct;
}
this._total_work = total_work;
this._progress = 0;
this._milestone = this._percent;
}
}