diff --git a/bricks/gates/NOT.cs b/bricks/gates/NOT.cs index d7398b9..acb6555 100644 --- a/bricks/gates/NOT.cs +++ b/bricks/gates/NOT.cs @@ -1,3 +1,6 @@ + +lualogic_require($LuaLogic::Path @ "bricks/gates/diode.cs"); + datablock fxDTSBrickData(LogicGate_NOT_Data : LogicGate_Diode_Data) { uiName = "1x1f NOT"; diff --git a/bricks/gates/XNOR.cs b/bricks/gates/XNOR.cs index ff95129..4491699 100644 --- a/bricks/gates/XNOR.cs +++ b/bricks/gates/XNOR.cs @@ -1,3 +1,6 @@ + +lualogic_require($LuaLogic::Path @ "bricks/gates/OR.cs"); + datablock fxDTSBrickData(LogicGate_XNOR_Data : LogicGate_OR_Data) { uiName = "1x2f XNOR"; diff --git a/bricks/gates/XOR.cs b/bricks/gates/XOR.cs index ec02eef..d61fb40 100644 --- a/bricks/gates/XOR.cs +++ b/bricks/gates/XOR.cs @@ -1,3 +1,6 @@ + +lualogic_require($LuaLogic::Path @ "bricks/gates/OR.cs"); + datablock fxDTSBrickData(LogicGate_XOR_Data : LogicGate_OR_Data) { uiName = "1x2f XOR"; diff --git a/bricks/gates/verticalNOT.cs b/bricks/gates/verticalNOT.cs index 63e0147..6540045 100644 --- a/bricks/gates/verticalNOT.cs +++ b/bricks/gates/verticalNOT.cs @@ -1,3 +1,6 @@ + +lualogic_require($LuaLogic::Path @ "bricks/gates/verticalDiode.cs"); + datablock fxDTSBrickData(LogicGate_NotUp_Data : LogicGate_DiodeUp_Data) { uiName = "Not Up"; diff --git a/bricks/inputs/button.cs b/bricks/inputs/button.cs index 294a1bb..f6c57ea 100644 --- a/bricks/inputs/button.cs +++ b/bricks/inputs/button.cs @@ -2,7 +2,7 @@ datablock fxDTSBrickData(LogicGate_Button_Data : LogicGate_Switch_Data){ category = "Logic Bricks"; subCategory = "Inputs"; - uiName = "Button"; + uiName = "Logic Button"; numLogicPorts = 2; diff --git a/bricks/memory/DFlipFlop.cs b/bricks/memory/DFlipFlop.cs index 84a9f87..420fd1c 100644 --- a/bricks/memory/DFlipFlop.cs +++ b/bricks/memory/DFlipFlop.cs @@ -1,3 +1,6 @@ + +lualogic_require($LuaLogic::Path @ "bricks/gates/OR.cs"); + datablock fxDTSBrickData(LogicGate_DFlipFlop_Data : LogicGate_OR_Data) { subCategory = "Memory"; diff --git a/bricks/memory/SRLatch.cs b/bricks/memory/SRLatch.cs index eb74e50..b21b818 100644 --- a/bricks/memory/SRLatch.cs +++ b/bricks/memory/SRLatch.cs @@ -1,3 +1,6 @@ + +lualogic_require($LuaLogic::Path @ "bricks/memory/DFlipFlop.cs"); + datablock fxDTSBrickData(LogicGate_SRLatch_Data : LogicGate_DFlipFlop_Data) { subCategory = "Memory"; diff --git a/scripts/brickdata.cs b/scripts/brickdata.cs index 74cb9cc..6b65fd5 100644 --- a/scripts/brickdata.cs +++ b/scripts/brickdata.cs @@ -1,49 +1,31 @@ -//Wires -exec($LuaLogic::Path @ "bricks/wires.cs"); +deleteVariables("$LuaLogic::BrickData::LoadedFile_*"); -//Gates -exec($LuaLogic::Path @ "bricks/gates/diode.cs"); -exec($LuaLogic::Path @ "bricks/gates/NOT.cs"); -exec($LuaLogic::Path @ "bricks/gates/OR.cs"); -exec($LuaLogic::Path @ "bricks/gates/AND.cs"); -exec($LuaLogic::Path @ "bricks/gates/NOR.cs"); -exec($LuaLogic::Path @ "bricks/gates/NAND.cs"); -exec($LuaLogic::Path @ "bricks/gates/XOR.cs"); -exec($LuaLogic::Path @ "bricks/gates/XNOR.cs"); -exec($LuaLogic::Path @ "bricks/gates/verticalDiode.cs"); -exec($LuaLogic::Path @ "bricks/gates/verticalNOT.cs"); +function lualogic_cleanfilename(%fn){ + %fn = strReplace(%fn, "\\", "/"); + %fn = strReplace(%fn, "/", "_"); + %fn = strReplace(%fn, ".", "_"); + %fn = strReplace(%fn, "-", "_"); + return %fn; +} -//Inputs -exec($LuaLogic::Path @ "bricks/inputs/switch.cs"); -exec($LuaLogic::Path @ "bricks/inputs/button.cs"); -exec($LuaLogic::Path @ "bricks/inputs/keyboard.cs"); +function lualogic_require(%fn){ + if(!$LuaLogic::BrickData::LoadedFile_[lualogic_cleanfilename(%fn)]){ + exec(%fn); + $LuaLogic::BrickData::LoadedFile_[lualogic_cleanfilename(%fn)] = 1; + } +} -//Outputs -exec($LuaLogic::Path @ "bricks/outputs/pixel.cs"); -exec($LuaLogic::Path @ "bricks/outputs/TextBrick.cs"); -exec($LuaLogic::Path @ "bricks/outputs/TextBrick2.cs"); +function lualogic_execallbricks(){ + %patt = $LuaLogic::Path @ "bricks/*.cs"; + %fn = findFirstFile(%patt); + while(%fn!$=""){ + lualogic_require(%fn); + + %fn = findNextFile(%patt); + } +} -//Math -exec($LuaLogic::Path @ "bricks/math/HalfAdder.cs"); -exec($LuaLogic::Path @ "bricks/math/HalfSubtractor.cs"); -exec($LuaLogic::Path @ "bricks/math/FullAdder.cs"); -exec($LuaLogic::Path @ "bricks/math/FullSubtractor.cs"); -exec($LuaLogic::Path @ "bricks/math/8bitAdder.cs"); -exec($LuaLogic::Path @ "bricks/math/8bitSubtractor.cs"); -exec($LuaLogic::Path @ "bricks/math/8bitMultiplier.cs"); -exec($LuaLogic::Path @ "bricks/math/8bitDivider.cs"); +lualogic_execallbricks(); -//Bus -exec($LuaLogic::Path @ "bricks/bus/8BitBuffer.cs"); -exec($LuaLogic::Path @ "bricks/bus/8BitDFlipFlop.cs"); -exec($LuaLogic::Path @ "bricks/bus/8BitEnabler.cs"); -exec($LuaLogic::Path @ "bricks/bus/bus16.cs"); - -//Memory -exec($LuaLogic::Path @ "bricks/memory/DFlipFlop.cs"); -exec($LuaLogic::Path @ "bricks/memory/SRLatch.cs"); -exec($LuaLogic::Path @ "bricks/memory/DFlipflopGridMemory2.cs"); - -//Special -exec($LuaLogic::Path @ "bricks/special/EventGate.cs"); +deleteVariables("$LuaLogic::BrickData::LoadedFile_*");