Starsector API
Loading...
Searching...
No Matches
AutoReducingValue.java
Go to the documentation of this file.
1package com.fs.starfarer.api.util;
2
3
4public class AutoReducingValue {
5
6 public static interface ValueChangedListener {
7 void valueChanged(int prev, int val, AutoReducingValue arv);
8 }
9
10 private float elapsed = 0f;
11 private int value = 0;
12 private float elapsedPerPoint;
13 private final ValueChangedListener listener;
14
15
16 public AutoReducingValue(int value, float elapsedPerPoint, ValueChangedListener listener) {
17 this.value = value;
18 this.elapsedPerPoint = elapsedPerPoint;
19 this.listener = listener;
20 }
21
22 public void advance(float amount) {
23 elapsed += amount;
24
25 if (elapsed >= elapsedPerPoint) {
26 elapsed -= elapsedPerPoint;
27
28 int prev = value;
29 value--;
30 if (value < 0) value = 0;
31 if (prev != value && listener != null) {
32 listener.valueChanged(prev, value, this);
33 }
34 }
35 }
36
37 public int getValue() {
38 return value;
39 }
40
41 public void setValue(int value) {
42 int prev = value;
43 this.value = value;
44 if (prev != value && listener != null) {
45 listener.valueChanged(prev, value, this);
46 }
47 }
48
49 public void increaseValue(int amt) {
50 int prev = value;
51 this.value += amt;
52 if (value < 0) {
53 value = 0;
54 }
55 if (prev != value && listener != null) {
56 listener.valueChanged(prev, value, this);
57 }
58 }
59
60 public void reduceValue(int amt) {
61 int prev = value;
62 this.value -= amt;
63 if (value < 0) {
64 value = 0;
65 }
66 if (prev != value && listener != null) {
67 listener.valueChanged(prev, value, this);
68 }
69 }
70
71}
AutoReducingValue(int value, float elapsedPerPoint, ValueChangedListener listener)