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

View File

@@ -36,20 +36,19 @@ namespace Barotrauma.Items.Components
get { return falseOutput; }
set { falseOutput = value; }
}
public AndComponent(Item item, XElement element)
: base (item, element)
{
timeSinceReceived = new float[] { Math.Max(timeFrame*2.0f,0.1f), Math.Max(timeFrame*2.0f, 0.1f) };
//output = "1";
public AndComponent(Item item, XElement element)
: base(item, element)
{
timeSinceReceived = new float[] { Math.Max(timeFrame * 2.0f, 0.1f), Math.Max(timeFrame * 2.0f, 0.1f) };
IsActive = true;
}
public override void Update(float deltaTime, Camera cam)
{
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;
timeSinceReceived[i] += deltaTime;
}
@@ -67,12 +66,10 @@ namespace Barotrauma.Items.Components
case "signal_in1":
if (signal == "0") return;
timeSinceReceived[0] = 0.0f;
IsActive = true;
break;
case "signal_in2":
if (signal == "0") return;
timeSinceReceived[1] = 0.0f;
IsActive = true;
break;
case "set_output":
output = signal;

View File

@@ -5,14 +5,15 @@ namespace Barotrauma.Items.Components
class OrComponent : AndComponent
{
public OrComponent(Item item, XElement element)
: base (item, element)
: base(item, element)
{
IsActive = true;
}
public override void Update(float deltaTime, Camera cam)
{
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;
timeSinceReceived[i] += deltaTime;