Starsector API
Loading...
Searching...
No Matches
MutatingValueUtil.java
Go to the documentation of this file.
1package com.fs.starfarer.api.util;
2
3public class MutatingValueUtil {
4
5 private float value;
6
7 private float min;
8 private float max;
9
10 private float rate;
11 private float rateSign;
12 private float rateMult = 1f;
13 private float valueMult = 1f;
14
15 private float sign = 0;
16
18
19 }
20
21 public MutatingValueUtil(float min, float max, float rate) {
22 this.min = min;
23 this.max = max;
24 this.rate = Math.abs(rate);
25
26 value = min + (float) Math.random() * (max - min);
27 rateSign = Math.signum(rate);
28 }
29
30 public void advance(float amount) {
31 if (rateSign != 0) {
32 value += amount * rate * rateSign * rateMult;
33 } else {
34 value += amount * rate * rateMult;
35 }
36 if (value > max) {
37 rateSign = -1f;
38 } else if (value < min) {
39 rateSign = 1f;
40 }
41 }
42
43 public float getRateMult() {
44 return rateMult;
45 }
46
47 public void setRateMult(float rateMult) {
48 this.rateMult = rateMult;
49 }
50
51 public float getValue() {
52 if (sign != 0) return value * sign * valueMult;
53 return value * valueMult;
54 }
55
56
57 public float getValueMult() {
58 return valueMult;
59 }
60
61 public void setValueMult(float valueMult) {
62 this.valueMult = valueMult;
63 }
64
65 public void setValue(float value) {
66 this.value = value;
67 }
68
69 public float getMin() {
70 return min;
71 }
72
73 public void setMin(float min) {
74 this.min = min;
75 }
76
77 public float getMax() {
78 return max;
79 }
80
81 public void setMax(float max) {
82 this.max = max;
83 }
84
85 public float getRate() {
86 return rate;
87 }
88
89 public void setRate(float rate) {
90 //System.out.println("RATE: " + rate);
91 this.rate = Math.abs(rate);
92 //rateSign = Math.signum(rate);
93 }
94
95 public float getSign() {
96 return sign;
97 }
98
99 public void setSign(float sign) {
100 this.sign = Math.signum(sign);
101 }
102
103 public void setRandomSign() {
104 sign = (float) Math.signum(Math.random() - 0.5f);
105 if (sign == 0) sign = 1;
106 }
107 public void setRandomRateSign() {
108 rateSign = (float) Math.signum(Math.random() - 0.5f);
109 if (rateSign == 0) rateSign = 1;
110 }
111
112
113 public float getRateSign() {
114 return rateSign;
115 }
116
117
118 public void setRateSign(float rateSign) {
119 this.rateSign = rateSign;
120 }
121
122
123
124}
MutatingValueUtil(float min, float max, float rate)