Starsector API
Loading...
Searching...
No Matches
IntervalUtil.java
Go to the documentation of this file.
1package com.fs.starfarer.api.util;
2
3import java.util.Random;
4
5public class IntervalUtil {
6
7 private float minInterval;
8 private float maxInterval;
9
10 private float currInterval;
11 private float elapsed = 0;
12 private boolean intervalElapsed = false;
13
14 private Random random;
15
16 public IntervalUtil(float minInterval, float maxInterval) {
17 setInterval(minInterval, maxInterval);
18 }
19
20 public void forceCurrInterval(float value) {
21 currInterval = value;
22 }
23
24 public Random getRandom() {
25 return random;
26 }
27
28 public void setRandom(Random random) {
29 this.random = random;
30 }
31
32 public void randomize() {
33 if (random != null) {
34 advance(random.nextFloat() * minInterval);
35 } else {
36 advance((float) Math.random() * minInterval);
37 }
38 }
39
40 public void forceIntervalElapsed() {
41 elapsed = currInterval;
42 }
43
44
45 public float getElapsed() {
46 return elapsed;
47 }
48
49 private void nextInterval() {
50 if (random != null) {
51 currInterval = minInterval + (maxInterval - minInterval) * random.nextFloat();
52 } else {
53 currInterval = minInterval + (maxInterval - minInterval) * (float) Math.random();
54 }
55 elapsed = 0;
56 intervalElapsed = false;
57 }
58
59 public void advance(float amount) {
60 if (intervalElapsed) {
61 nextInterval();
62 }
63 elapsed += amount;
64 if (elapsed >= currInterval) {
65 intervalElapsed = true;
66 }
67 }
68
74 public boolean intervalElapsed() {
75 return intervalElapsed;
76 }
77
78 public float getIntervalDuration() {
79 return currInterval;
80 }
81
82 public void setInterval(float min, float max) {
83 this.minInterval = min;
84 this.maxInterval = max;
85 nextInterval();
86 }
87
88 public void setElapsed(float elapsed) {
89 this.elapsed = elapsed;
90 }
91
92 public float getMinInterval() {
93 return minInterval;
94 }
95
96 public float getMaxInterval() {
97 return maxInterval;
98 }
99
100
101}
void setInterval(float min, float max)
IntervalUtil(float minInterval, float maxInterval)