Fixed AND/OR or components staying inactive until they receive their first signal. Closes #387

This commit is contained in:
Joonas Rikkonen
2018-04-25 14:43:44 +03:00
parent 8190358d2b
commit ed22ca360f
2 changed files with 10 additions and 12 deletions
@@ -38,17 +38,16 @@ namespace Barotrauma.Items.Components
} }
public AndComponent(Item item, XElement element) public AndComponent(Item item, XElement element)
: base (item, element) : base(item, element)
{ {
timeSinceReceived = new float[] { Math.Max(timeFrame*2.0f,0.1f), Math.Max(timeFrame*2.0f, 0.1f) }; timeSinceReceived = new float[] { Math.Max(timeFrame * 2.0f, 0.1f), Math.Max(timeFrame * 2.0f, 0.1f) };
IsActive = true;
//output = "1";
} }
public override void Update(float deltaTime, Camera cam) public override void Update(float deltaTime, Camera cam)
{ {
bool sendOutput = true; bool sendOutput = true;
for (int i = 0; i<timeSinceReceived.Length; i++) for (int i = 0; i < timeSinceReceived.Length; i++)
{ {
if (timeSinceReceived[i] > timeFrame) sendOutput = false; if (timeSinceReceived[i] > timeFrame) sendOutput = false;
timeSinceReceived[i] += deltaTime; timeSinceReceived[i] += deltaTime;
@@ -67,12 +66,10 @@ namespace Barotrauma.Items.Components
case "signal_in1": case "signal_in1":
if (signal == "0") return; if (signal == "0") return;
timeSinceReceived[0] = 0.0f; timeSinceReceived[0] = 0.0f;
IsActive = true;
break; break;
case "signal_in2": case "signal_in2":
if (signal == "0") return; if (signal == "0") return;
timeSinceReceived[1] = 0.0f; timeSinceReceived[1] = 0.0f;
IsActive = true;
break; break;
case "set_output": case "set_output":
output = signal; output = signal;
@@ -5,14 +5,15 @@ namespace Barotrauma.Items.Components
class OrComponent : AndComponent class OrComponent : AndComponent
{ {
public OrComponent(Item item, XElement element) public OrComponent(Item item, XElement element)
: base (item, element) : base(item, element)
{ {
IsActive = true;
} }
public override void Update(float deltaTime, Camera cam) public override void Update(float deltaTime, Camera cam)
{ {
bool sendOutput = false; bool sendOutput = false;
for (int i = 0; i<timeSinceReceived.Length; i++) for (int i = 0; i < timeSinceReceived.Length; i++)
{ {
if (timeSinceReceived[i] <= timeFrame) sendOutput = true; if (timeSinceReceived[i] <= timeFrame) sendOutput = true;
timeSinceReceived[i] += deltaTime; timeSinceReceived[i] += deltaTime;