/
SimResource.cs
50 lines (40 loc) · 1.04 KB
/
SimResource.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
using static MechJebLib.Statics;
#nullable enable
namespace MechJebLib.Simulations
{
public struct SimResource
{
public bool Free;
public double MaxAmount;
private double _amount;
public double Amount
{
get => _amount + _rcsAmount;
set => _amount = value;
}
private double _rcsAmount;
public int Id;
public double Density;
public double Residual;
public double ResidualThreshold => Residual * MaxAmount;
public SimResource Drain(double resourceDrain)
{
_amount -= resourceDrain;
if (_amount < 0)
_amount = 0;
return this;
}
public SimResource RCSDrain(double rcsDrain)
{
_rcsAmount -= rcsDrain;
if (Amount < 0)
_rcsAmount = -_amount;
return this;
}
public SimResource ResetRCS()
{
_rcsAmount = 0;
return this;
}
}
}