From 581c95b06522fe704f93d65267e3e05e86d8b710 Mon Sep 17 00:00:00 2001 From: Regalis Date: Fri, 11 Mar 2016 15:38:40 +0200 Subject: [PATCH] Relay and delay components --- Subsurface/Barotrauma.csproj | 2 + .../Content/Items/Electricity/signalcomp.png | Bin 8342 -> 9413 bytes .../Content/Items/Electricity/signalitems.xml | 70 ++++++++++++++++++ Subsurface/Content/watershader_opengl.xnb | Bin 0 -> 2132 bytes .../Items/Components/Signal/DelayComponent.cs | 57 ++++++++++++++ .../Items/Components/Signal/RelayComponent.cs | 43 +++++++++++ 6 files changed, 172 insertions(+) create mode 100644 Subsurface/Content/watershader_opengl.xnb create mode 100644 Subsurface/Source/Items/Components/Signal/DelayComponent.cs create mode 100644 Subsurface/Source/Items/Components/Signal/RelayComponent.cs diff --git a/Subsurface/Barotrauma.csproj b/Subsurface/Barotrauma.csproj index cc4923d8d..8c149b2ae 100644 --- a/Subsurface/Barotrauma.csproj +++ b/Subsurface/Barotrauma.csproj @@ -116,6 +116,8 @@ + + diff --git a/Subsurface/Content/Items/Electricity/signalcomp.png b/Subsurface/Content/Items/Electricity/signalcomp.png index 726b7921eac29874d5e7cbef6482fe6c53678d25..bb7510542015ef9ee6711c6db0d9c339083a0090 100644 GIT binary patch literal 9413 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 diff --git a/Subsurface/Content/Items/Electricity/signalitems.xml b/Subsurface/Content/Items/Electricity/signalitems.xml index b3f0e4b25..8128c1d74 100644 --- a/Subsurface/Content/Items/Electricity/signalitems.xml +++ b/Subsurface/Content/Items/Electricity/signalitems.xml @@ -202,7 +202,77 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ?K+YvU*MR3EI}nQ!O0kH@bUZjIbG2vOEU#}eGa9x6*@~2M7@aFolPDTUrPI)``#|zJ~xtRImC9}FCQbX)5sZdhY$iXL4 zAqt3&9ecuTdUHFzx@$G(f>{m*L1%2@EM{|RyW9*u?$S6O%8!{haqL#J)r{Ry^hS&B zfApRJwz%g931IbTUrtU8RcljC?X~H-{A;SwI|Y7gN@&@Mo}C!kNe3p!kdEUqjKI>$ zacEC@L@y(H0Wr#mQ9wFnq*Fk4)T9f@wrajPo4ZUHmuShye0OVP@}^ij-ZU!Y@}7kQ z&cy`RWRhQMG*#s^e4x>(JBBSf9dMTmY~GSP6FM^;@8q=A{MBk6LKH$%!!@)BE7`%} zdmJuN3a$!71WUr|W(hD5un>2#ae0Ed>1{M4dF-*YqpM-;sHcWop{8zDAjL(I|1)}y zD*+BqcLpQ*$T$qk!RY&g*{qUa(zG*4q1R&C7+Hjz$s+aC^*RpB>ZzMenh0jMrD+6% zy-X4*iWQI1b&MKWGzkI&0yc>uN*97p3aCc~%n(>VD~o8Qioi+41!z5~i1809ty^b5 zm8ovI2Z_f`>Jj6TaYtPgc(S7%7b}cdfxAAZ&;UTELScPcGz8IPs}2rz#)$WzOWj zJ4DajA^Wb0J$+wh_Ygz?J8H9S1&-s+p$5-6v;gjwq%TG*-^ zSq$DXNdQ!Bh7abFJvfu#IV(Pr;?K;PJ_o5>sWzm1#C;IT?xQCdgW>|7ypp0?Z-h`F wyuu=~T5o}gfCH9i)#RZ4J7Uh`HUq}#dB>(^b literal 0 HcmV?d00001 diff --git a/Subsurface/Source/Items/Components/Signal/DelayComponent.cs b/Subsurface/Source/Items/Components/Signal/DelayComponent.cs new file mode 100644 index 000000000..6bbc7db03 --- /dev/null +++ b/Subsurface/Source/Items/Components/Signal/DelayComponent.cs @@ -0,0 +1,57 @@ +using Microsoft.Xna.Framework; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Xml.Linq; + +namespace Barotrauma.Items.Components +{ + class DelayComponent : ItemComponent + { + //the output is sent if both inputs have received a signal within the timeframe + protected TimeSpan delay; + + private Queue> signalQueue; + + [InGameEditable, HasDefaultValue(1.0f, true)] + public float Delay + { + get { return (float)delay.TotalSeconds; } + set + { + float seconds = MathHelper.Clamp(value, 0.0f, 60.0f); + + delay = new TimeSpan(0,0,0,0, (int)(seconds*1000.0f)); + } + } + + public DelayComponent(Item item, XElement element) + : base (item, element) + { + signalQueue = new Queue>(); + + IsActive = true; + } + + public override void Update(float deltaTime, Camera cam) + { + while (signalQueue.Any() && signalQueue.Peek().Item2 + delay <= DateTime.Now) + { + var signalOut = signalQueue.Dequeue(); + + item.SendSignal(signalOut.Item1, "signal_out"); + } + } + + public override void ReceiveSignal(string signal, Connection connection, Item sender, float power=0.0f) + { + switch (connection.Name) + { + case "signal_in": + signalQueue.Enqueue(new Tuple(signal, DateTime.Now)); + break; + } + } + } +} diff --git a/Subsurface/Source/Items/Components/Signal/RelayComponent.cs b/Subsurface/Source/Items/Components/Signal/RelayComponent.cs new file mode 100644 index 000000000..950ddd41a --- /dev/null +++ b/Subsurface/Source/Items/Components/Signal/RelayComponent.cs @@ -0,0 +1,43 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Xml.Linq; + +namespace Barotrauma.Items.Components +{ + class RelayComponent : ItemComponent + { + public RelayComponent(Item item, XElement element) + : base (item, element) + { + IsActive = true; + } + + public override void ReceiveSignal(string signal, Connection connection, Item sender, float power=0.0f) + { + if (connection.Name.Contains("_in")) + { + if (!IsActive) return; + + string outConnection = connection.Name.Contains("power_in") ? "power_out" : "signal_out"; + + int connectionNumber = -1; + int.TryParse(connection.Name.Substring(connection.Name.Length - 1, 1), out connectionNumber); + + if (connectionNumber > 0) outConnection += connectionNumber; + + item.SendSignal(signal, outConnection, power); + } + else if (connection.Name == "toggle") + { + IsActive = !IsActive; + } + else if (connection.Name == "set_state") + { + IsActive = signal == "1"; + } + + } + } +}