diff --git a/Barotrauma/BarotraumaShared/Content/Items/Electricity/signalcomp.png b/Barotrauma/BarotraumaShared/Content/Items/Electricity/signalcomp.png index 3bcb19786..e6d317588 100644 Binary files a/Barotrauma/BarotraumaShared/Content/Items/Electricity/signalcomp.png and b/Barotrauma/BarotraumaShared/Content/Items/Electricity/signalcomp.png differ diff --git a/Barotrauma/BarotraumaShared/Content/Items/Electricity/signalitems.xml b/Barotrauma/BarotraumaShared/Content/Items/Electricity/signalitems.xml index 4da203057..687e98788 100644 --- a/Barotrauma/BarotraumaShared/Content/Items/Electricity/signalitems.xml +++ b/Barotrauma/BarotraumaShared/Content/Items/Electricity/signalitems.xml @@ -449,6 +449,40 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + = pulseInterval) + { + item.SendSignal(0, "1", "signal_out", null); + phase -= pulseInterval; + } + break; + case WaveType.Square: + phase = (phase + deltaTime * frequency) % 1.0f; + item.SendSignal(0, phase < 0.5f ? "0" : "1", "signal_out", null); + break; + case WaveType.Sine: + phase = (phase + deltaTime * frequency) % 1.0f; + item.SendSignal(0, Math.Sin(phase * MathHelper.TwoPi).ToString(CultureInfo.InvariantCulture), "signal_out", null); + break; + } + } + + public override void ReceiveSignal(int stepsTaken, string signal, Connection connection, Item source, Character sender, float power = 0.0f) + { + switch (connection.Name) + { + case "set_frequency": + case "frequency_in": + float newFrequency; + if (float.TryParse(signal, out newFrequency)) + { + Frequency = newFrequency; + } + IsActive = true; + break; + case "set_outputtype": + case "set_wavetype": + WaveType newOutputType; + if (Enum.TryParse(signal, out newOutputType)) + { + OutputType = newOutputType; + } + break; + } + } + } +}