Skip to content

Commit 7c81895

Browse files
committed
feat: migrated initial code from previous repo
1 parent 9c448ea commit 7c81895

13 files changed

Lines changed: 207 additions & 117 deletions

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@ sysinfo.txt
3434
*.apk
3535
*.unitypackage
3636
/Logs/Packages-Update.log
37+
Logs/
3738

3839
# Node.js
3940
node_modules

Assets/com.fluid.unity-gauges/Runtime/Scripts.meta

Lines changed: 3 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
using UnityEngine;
2+
using UnityEngine.Events;
3+
4+
namespace CleverCrow.Fluid.Gauges {
5+
public class GaugeChangeEvent : UnityEvent<int, int>, IGaugeChangeEvent {
6+
}
7+
8+
public class Gauge : IGauge {
9+
private readonly GaugeChangeEvent _onChange = new GaugeChangeEvent();
10+
private int _chargeMax;
11+
private int _charge;
12+
13+
public int ChargeMax {
14+
get => _chargeMax;
15+
set {
16+
_chargeMax = Mathf.Max(1, value);
17+
18+
if (Charge > _chargeMax) {
19+
Charge = _chargeMax;
20+
}
21+
22+
_onChange.Invoke(Charge, ChargeMax);
23+
}
24+
}
25+
26+
public int Charge {
27+
get => _charge;
28+
set {
29+
_charge = Mathf.Clamp(value, 0, ChargeMax);
30+
_onChange.Invoke(Charge, ChargeMax);
31+
}
32+
}
33+
34+
public float ChargePercent => Charge / (float)ChargeMax;
35+
public GaugeChangeEvent OnChange => _onChange;
36+
37+
public bool IsEmpty => _charge == 0;
38+
39+
public Gauge (int chargeMax) {
40+
ChargeMax = chargeMax;
41+
Charge = chargeMax;
42+
}
43+
}
44+
}

Assets/com.fluid.unity-gauges/Runtime/Scripts/Gauge.cs.meta

Lines changed: 11 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
namespace CleverCrow.Fluid.Gauges {
2+
public interface IGauge {
3+
int Charge { get; set; }
4+
int ChargeMax { get; set; }
5+
float ChargePercent { get; }
6+
GaugeChangeEvent OnChange { get; }
7+
bool IsEmpty { get; }
8+
}
9+
}

Assets/com.fluid.unity-gauges/Runtime/Scripts/IGauge.cs.meta

Lines changed: 3 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
using UnityEngine.Events;
2+
3+
namespace CleverCrow.Fluid.Gauges {
4+
public interface IGaugeChangeEvent {
5+
void AddListener (UnityAction<int, int> call);
6+
void RemoveListener (UnityAction<int, int> call);
7+
}
8+
}

Assets/com.fluid.unity-gauges/Runtime/Scripts/IGaugeChangeEvent.cs.meta

Lines changed: 3 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Lines changed: 122 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,122 @@
1+
using NUnit.Framework;
2+
3+
namespace CleverCrow.Fluid.Gauges.Tests {
4+
public class GaugeTest {
5+
public class OnCreation {
6+
[Test]
7+
public void Sets_the_max_value () {
8+
var gauge = new Gauge(20);
9+
10+
Assert.AreEqual(20, gauge.ChargeMax);
11+
}
12+
13+
[Test]
14+
public void Sets_the_value_to_max_value () {
15+
var gauge = new Gauge(20);
16+
17+
Assert.AreEqual(20, gauge.Charge);
18+
}
19+
}
20+
21+
public class OnChangeEvent {
22+
[Test]
23+
public void Triggers_if_charge_max_changes () {
24+
var gauge = new Gauge(20);
25+
var maxValue = -1;
26+
27+
gauge.OnChange.AddListener((value, max) => maxValue = max);
28+
gauge.ChargeMax = 10;
29+
30+
Assert.AreEqual(10, maxValue);
31+
}
32+
33+
[Test]
34+
public void Triggers_if_charge_changes () {
35+
var gauge = new Gauge(20);
36+
var newValue = -1;
37+
38+
gauge.OnChange.AddListener((value, max) => newValue = value);
39+
gauge.Charge = 2;
40+
41+
Assert.AreEqual(2, newValue);
42+
}
43+
}
44+
45+
public class ChargeMaxProperty {
46+
[Test]
47+
public void Cannot_be_set_less_than_one () {
48+
var gauge = new Gauge(0);
49+
50+
Assert.AreEqual(1, gauge.ChargeMax);
51+
}
52+
53+
[Test]
54+
public void Can_be_changed_after_constructing () {
55+
var gauge = new Gauge(20);
56+
gauge.ChargeMax = 10;
57+
58+
Assert.AreEqual(10, gauge.ChargeMax);
59+
}
60+
61+
[Test]
62+
public void Changing_ChargeMax_removes_Charge_overflow () {
63+
var gauge = new Gauge(20);
64+
gauge.ChargeMax = 10;
65+
66+
Assert.AreEqual(10, gauge.Charge);
67+
}
68+
69+
[Test]
70+
public void Changing_ChargeMax_does_not_increase_Charge () {
71+
var gauge = new Gauge(20);
72+
gauge.ChargeMax = 10;
73+
gauge.ChargeMax = 20;
74+
75+
Assert.AreEqual(10, gauge.Charge);
76+
}
77+
}
78+
79+
public class ChargeProperty {
80+
[Test]
81+
public void Changes_when_set () {
82+
var gauge = new Gauge(20);
83+
gauge.Charge = 10;
84+
85+
Assert.AreEqual(10, gauge.Charge);
86+
}
87+
88+
[Test]
89+
public void Cannot_exceed_charge_max_value () {
90+
var gauge = new Gauge(20);
91+
gauge.Charge = 21;
92+
93+
Assert.AreEqual(20, gauge.Charge);
94+
}
95+
96+
[Test]
97+
public void Cannot_drop_below_zero () {
98+
var gauge = new Gauge(20);
99+
gauge.Charge = -1;
100+
101+
Assert.AreEqual(0, gauge.Charge);
102+
}
103+
}
104+
105+
public class IsEmptyProperty {
106+
[Test]
107+
public void Returns_true_when_zero () {
108+
var gauge = new Gauge(20);
109+
gauge.Charge = 0;
110+
111+
Assert.IsTrue(gauge.IsEmpty);
112+
}
113+
114+
[Test]
115+
public void Returns_false_when_not_zero () {
116+
var gauge = new Gauge(20);
117+
118+
Assert.IsFalse(gauge.IsEmpty);
119+
}
120+
}
121+
}
122+
}

Assets/com.fluid.unity-gauges/Tests/Editor/GaugeTest.cs.meta

Lines changed: 3 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)