From 500eff70a91a1c0c8f0147e8b4cf37114bc9c025 Mon Sep 17 00:00:00 2001 From: Auios Date: Tue, 16 Apr 2019 22:59:11 -0400 Subject: [PATCH] Added EventGate Added EventGate which is designed for logic signals to interface with events --- bricks/special/EventGate-update.lua | 4 ++ bricks/special/EventGate.cs | 67 ++++++++++++++++++++++++++++ icons/EventGate.png | Bin 0 -> 2252 bytes scripts/brickdata.cs | 3 ++ 4 files changed, 74 insertions(+) create mode 100644 bricks/special/EventGate-update.lua create mode 100644 bricks/special/EventGate.cs create mode 100644 icons/EventGate.png diff --git a/bricks/special/EventGate-update.lua b/bricks/special/EventGate-update.lua new file mode 100644 index 0000000..85f7128 --- /dev/null +++ b/bricks/special/EventGate-update.lua @@ -0,0 +1,4 @@ +return function(gate) + gate.ports[2]:setstate(gate.ports[1].state) + gate:cb(bool_to_int[gate.ports[1].state]) +end \ No newline at end of file diff --git a/bricks/special/EventGate.cs b/bricks/special/EventGate.cs new file mode 100644 index 0000000..0c26ffa --- /dev/null +++ b/bricks/special/EventGate.cs @@ -0,0 +1,67 @@ +registerInputEvent("fxDTSBrick", "onPowerChange", "Self fxDTSBrick", 0); +registerInputEvent("fxDTSBrick", "onPowerOn", "Self fxDTSBrick", 0); +registerInputEvent("fxDTSBrick", "onPowerOff", "Self fxDTSBrick", 0); + +function fxDTSBrick::onPowerChange(%this) +{ + $InputTarget_["Self"] = %this; + %this.processInputEvent("onPowerChange"); +} + +function fxDTSBrick::onPowerOn(%this) +{ + $InputTarget_["Self"] = %this; + %this.processInputEvent("onPowerOn"); +} + +function fxDTSBrick::onPowerOff(%this) +{ + $InputTarget_["Self"] = %this; + %this.processInputEvent("onPowerOff"); +} + +datablock fxDTSBrickData(LogicGate_EventGate_Data : brick1x1fData) +{ + logicUpdate = "return function(gate) gate:cb(bool_to_int[gate.ports[1].state]) end"; + + + + category = "Logic Bricks"; + subCategory = "Wires - Special"; + uiName = "Event Gate"; + iconName = $LuaLogic::Path @ "icons/EventGate"; + brickFile = $LuaLogic::Path @ "bricks/blb/1x1f_1i_1o.blb"; + hasPrint = 1; + printAspectRatio = "Logic"; + + isLogic = true; + isLogicGate = true; + + logicUpdate = lualogic_readfile($LuaLogic::Path @ "bricks/special/EventGate-update.lua"); + + numLogicPorts = 2; + + logicPortType[0] = 1; + logicPortPos[0] = "0 0 0"; + logicPortDir[0] = "0"; + logicPortCauseUpdate[0] = true; + logicPortUIName[0] = "Input"; + logicPortUIDesc[0] = ""; + + logicPortType[1] = 0; + logicPortPos[1] = "0 0 0"; + logicPortDir[1] = "2"; + logicPortUIName[1] = "Output"; + logicPortUIDesc[1] = ""; +}; +lualogic_registergatedefinition("LogicGate_EventGate_Data"); + +function LogicGate_EventGate_Data::LuaLogic_Callback(%this, %obj, %data) +{ + %obj.onPowerChange(); + if(%data) + %obj.onPowerOn(); + else + %obj.onPowerOff(); +} + diff --git a/icons/EventGate.png b/icons/EventGate.png new file mode 100644 index 0000000000000000000000000000000000000000..826956c5a36f78a7e275281a0f71eabea0447b88 GIT binary patch literal 2252 zcmV;-2s8JIP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vG?A^-p`A_1!6-I4$R02p*dSaefwW^{L9 za%BK;VQFr3E^cLXAT%y9E;jv63FrU-2t7$eK~#8N?VEXQ6;%|6ao^CO;)*727!Bed z8pXH-;~%&r8e@X81fvA2VJ#vmMpO2^K-p;vEl>)yl%+PL*s>ICu`N`C8>j?i(L|9b zYNTxA?>EjN$8p}udkF8HFZuG`o4Idhdd|J)-kG*748t%C!!QiPFbu;m48t%C!!QiP zFbu;m48t%C!!QiPFbu;m{!eDim~n4ONy&NMN8@ziILAmz9E^~Yf!EHTKi}cx94-kW6DH@yC8XzsjbLAa9^DGPu{kK%B6~dp7Ao+5nTWi+ zJhwEB8Z|0pGPvCGzPCZ(_cOTuV2dn6vu4e5=FOWI80cu^cX=$% z5ljYOgXFn!u3Pf+^KbMnGc{>yYHEwxUC&a%UM;Wko&l#wlG~Gmf*OxJ7J_?H&L5Ns z;>hAFx8uCWyh}|@wrtsQY~{+8&hq8UoyCh6pLEHRC9e8?adEM;aN$B{!GZ;WL5(DX z&hPRVMMXs+WjiK;lQ>N61k}~l9jmFSaq8>qozl`$hsj`|CFnsiDGXG!iHJ7v((`#Q z!TDm~z=2L?W@dUMV8ezDu3NWmb%Vx0FI~FyKf%{BQIV3s;71BP_p_bMHG>8XV&KK} zN`OuTU9nzdcEUmqCUSmcOc`QhZ6ot+&R&}i-7zrSm@Zr%2K zmzuiZcE7l?vT|otRn<`#7~E)ONg6tIXkbvIv0uM_uHCzL-_^Bi*PXb$^m#IhM0}K+ zo4XCkII(8U8V4gIFv#JIHvxV7_I3L7>2thGmoD3A=gys5dY6@cAQ2nk=JN9LLr8`b zOL>Yl0SLM)O3fz-{08q541&>+1FI`4Dw4ztJY3ckkY=C^a=GHPu;JS?7AE zHT)n6+u^~rYu83BOOXl5J;z@U4pn(q+&9UVJ%Jl{Kvkq9_hW0G#-s)>`eP5@Un zy?XU(Lhze<^yqQ5_Z1@Z;#-mkg!+ii(CSOxEV5l(rz!j2om0d@Yja2kBMYZ z*rUIN$D!<_1EJ3JmV4&jZZ?tvLWSy{s~({Kkq^P{UMOt0HsXO zUm!<=JX&Uu9)dqYX~S#P=U~!hpZGEC2-#7th3`Y%0qE0^u+3%gb*T6Eh1@POPD$ZZ z5?$sLRCHPu@mLl1H0QL;wn^2dM5-9i+@H`BHBT2WbgqpK@8CnkY z#Xk;(GAP?w2IM~+uYvxu5Utfv@F$=h4B{rJ+v#JFvpNA>V(N=8g@iSpBg(&>a3!L@ z6N{^%5N!gkhq_%#C4l9Gt0y@|Gvq&2zpJ*fOg#VvCP$a9&mfnk(f9}yECC*@)%pkE z%7g22`ONjXUc>W-=vOHFdE>)ti4{wL2mcO-6R8|WFHh-n&=2oob(^ z_!GcY3|9=14Ek$?kx>5-;&vGHnBqRDCt{YQsgM&jfA`A~!|(B??M}!?6?_DuNmK%O z|DpHuMvy-vM=Jl*@)DR7{0WHGXQ3b7@v{E=+r9xq!TSdP-6}ux=8K8rovJQX6QL$i z3E<70UNBJJN%Q8C@BN8S7>P^(@s||_GFxb7WF>kZ_N=lL4=R=auvGvtby9VHk#C7=~dOhGF<< a(c*8KN4y+4A{|!%0000