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
13 private float sign = 0;
14
16
17 }
18
19 public MutatingValueUtil(float min, float max, float rate) {
20 this.min = min;
21 this.max = max;
22 this.rate = Math.abs(rate);
23
24 value = min + (float) Math.random() * (max - min);
25 rateSign = Math.signum(rate);
26 }
27
28 public void advance(float amount) {
29 if (rateSign != 0) {
30 value += amount * rate * rateSign;
31 } else {
32 value += amount * rate;
33 }
34 if (value > max) {
35 rateSign = -1f;
36 } else if (value < min) {
37 rateSign = 1f;
38 }
39 }
40
41 public float getValue() {
42 if (sign != 0) return value * sign;
43 return value;
44 }
45
46 public void setValue(float value) {
47 this.value = value;
48 }
49
50 public float getMin() {
51 return min;
52 }
53
54 public void setMin(float min) {
55 this.min = min;
56 }
57
58 public float getMax() {
59 return max;
60 }
61
62 public void setMax(float max) {
63 this.max = max;
64 }
65
66 public float getRate() {
67 return rate;
68 }
69
70 public void setRate(float rate) {
71 //System.out.println("RATE: " + rate);
72 this.rate = Math.abs(rate);
73 //rateSign = Math.signum(rate);
74 }
75
76 public float getSign() {
77 return sign;
78 }
79
80 public void setSign(float sign) {
81 this.sign = Math.signum(sign);
82 }
83
84 public void setRandomSign() {
85 sign = (float) Math.signum(Math.random() - 0.5f);
86 if (sign == 0) sign = 1;
87 }
88 public void setRandomRateSign() {
89 rateSign = (float) Math.signum(Math.random() - 0.5f);
90 if (rateSign == 0) rateSign = 1;
91 }
92
93
94 public float getRateSign() {
95 return rateSign;
96 }
97
98
99 public void setRateSign(float rateSign) {
100 this.rateSign = rateSign;
101 }
102
103
104
105}
MutatingValueUtil(float min, float max, float rate)