Fixed automatic registration to not break gate datablock transmission
This commit is contained in:
parent
5f58a531a8
commit
d47e6a50dc
@ -83,18 +83,42 @@ function fxDTSBrick::Logic_SetOutput(%this, %port, %state)
|
|||||||
lualogic_send("SP;" @ %this @ ";" @ %port+1 @ ";" @ %state);
|
lualogic_send("SP;" @ %this @ ";" @ %port+1 @ ";" @ %state);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function fxDtsBrick::Logic_HandlePlant(%brick){
|
||||||
|
if(!%brick.Logic_HasPlanted){
|
||||||
|
%brick.Logic_HasPlanted = true;
|
||||||
|
|
||||||
|
%data = %brick.getDatablock();
|
||||||
|
if(isFunction(%data.getName(), "Logic_onPlant")){
|
||||||
|
%data.Logic_onPlant(%brick);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function fxDtsBrick::Logic_HandleRemove(%brick){
|
||||||
|
if(!%brick.Logic_HasRemoved){
|
||||||
|
%brick.Logic_HasRemoved = true;
|
||||||
|
|
||||||
|
%data = %brick.getDatablock();
|
||||||
|
if(isFunction(%data.getName(), "Logic_onRemove")){
|
||||||
|
%data.Logic_onRemove(%brick);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
package LuaLogic_Bricks
|
package LuaLogic_Bricks
|
||||||
{
|
{
|
||||||
function fxDTSBrickData::onPlant(%this, %brick)
|
function fxDTSBrickData::onPlant(%data, %brick)
|
||||||
{
|
{
|
||||||
parent::onPlant(%this, %brick);
|
parent::onPlant(%data, %brick);
|
||||||
|
|
||||||
if(isObject(%brick) && %this.isLogic)
|
if(isObject(%brick) && %data.isLogic)
|
||||||
{
|
{
|
||||||
if(%this.isLogicWire)
|
if(%data.isLogicWire)
|
||||||
lualogic_addwire(%brick);
|
lualogic_addwire(%brick);
|
||||||
else if(%this.isLogicGate)
|
else if(%data.isLogicGate)
|
||||||
lualogic_addgate(%brick);
|
lualogic_addgate(%brick);
|
||||||
|
|
||||||
|
%brick.Logic_HandlePlant();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -108,6 +132,8 @@ package LuaLogic_Bricks
|
|||||||
lualogic_addwire(%brick);
|
lualogic_addwire(%brick);
|
||||||
else if(%this.isLogicGate)
|
else if(%this.isLogicGate)
|
||||||
lualogic_addgate(%brick);
|
lualogic_addgate(%brick);
|
||||||
|
|
||||||
|
%brick.Logic_HandlePlant();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -127,6 +153,8 @@ package LuaLogic_Bricks
|
|||||||
lualogic_removewire(%brick);
|
lualogic_removewire(%brick);
|
||||||
else if(%this.isLogicGate)
|
else if(%this.isLogicGate)
|
||||||
lualogic_removegate(%brick);
|
lualogic_removegate(%brick);
|
||||||
|
|
||||||
|
%brick.Logic_HandleRemove();
|
||||||
}
|
}
|
||||||
|
|
||||||
parent::onDeath(%this, %brick);
|
parent::onDeath(%this, %brick);
|
||||||
@ -140,6 +168,8 @@ package LuaLogic_Bricks
|
|||||||
lualogic_removewire(%brick);
|
lualogic_removewire(%brick);
|
||||||
else if(%this.isLogicGate)
|
else if(%this.isLogicGate)
|
||||||
lualogic_removegate(%brick);
|
lualogic_removegate(%brick);
|
||||||
|
|
||||||
|
%brick.Logic_HandleRemove();
|
||||||
}
|
}
|
||||||
|
|
||||||
parent::onRemove(%this, %brick);
|
parent::onRemove(%this, %brick);
|
||||||
|
@ -117,7 +117,10 @@ package LuaLogic
|
|||||||
activatePackage("LuaLogic");
|
activatePackage("LuaLogic");
|
||||||
|
|
||||||
function llr(){
|
function llr(){
|
||||||
|
%path = $LuaLogic::Path;
|
||||||
deleteVariables("$LuaLogic*");
|
deleteVariables("$LuaLogic*");
|
||||||
|
$LuaLogic::Path = %path;
|
||||||
|
|
||||||
resetAllOpCallFunc();
|
resetAllOpCallFunc();
|
||||||
exec("./lualogic.cs");
|
exec("./lualogic.cs");
|
||||||
schedule(3000, 0, lualogic_connect, 25000);
|
schedule(3000, 0, lualogic_connect, 25000);
|
||||||
|
@ -11,7 +11,9 @@ function lualogic_escapelogicfunction(%text){
|
|||||||
}
|
}
|
||||||
|
|
||||||
function lualogic_registergatedefinition(%data){
|
function lualogic_registergatedefinition(%data){
|
||||||
lualogic_registergatedefinition_auto(%data);
|
//lualogic_registergatedefinition_auto(%data);
|
||||||
|
|
||||||
|
//handled automatically now
|
||||||
}
|
}
|
||||||
|
|
||||||
function lualogic_registergatedefinition_auto(%data)
|
function lualogic_registergatedefinition_auto(%data)
|
||||||
@ -19,8 +21,8 @@ function lualogic_registergatedefinition_auto(%data)
|
|||||||
if(!isObject(%data))
|
if(!isObject(%data))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if(%data.luaLogic_isRegistered)
|
//if(%data.luaLogic_isRegistered)
|
||||||
return;
|
//return;
|
||||||
|
|
||||||
%id = %data.getID();
|
%id = %data.getID();
|
||||||
|
|
||||||
@ -48,10 +50,12 @@ function lualogic_registergatedefinition_auto(%data)
|
|||||||
|
|
||||||
$LuaLogic::GateDefintion[%idx] = %def;
|
$LuaLogic::GateDefintion[%idx] = %def;
|
||||||
|
|
||||||
%data.luaLogic_isRegistered = true;
|
//%data.luaLogic_isRegistered = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
function lualogic_registerAllGateDefinitions(){
|
function lualogic_registerAllGateDefinitions(){
|
||||||
|
echo("LuaLogic: Registering gate definitions");
|
||||||
|
|
||||||
for(%dbidx=0; %dbidx<DatablockGroup.getCount(); %dbidx++){
|
for(%dbidx=0; %dbidx<DatablockGroup.getCount(); %dbidx++){
|
||||||
%db = DatablockGroup.getObject(%dbidx);
|
%db = DatablockGroup.getObject(%dbidx);
|
||||||
if(%db.isLogic && %db.isLogicGate){
|
if(%db.isLogic && %db.isLogicGate){
|
||||||
@ -60,7 +64,7 @@ function lualogic_registerAllGateDefinitions(){
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
lualogic_registerAllGateDefinitions();
|
schedule(1, 0, lualogic_registerAllGateDefinitions);
|
||||||
|
|
||||||
function lualogic_print(%text)
|
function lualogic_print(%text)
|
||||||
{
|
{
|
||||||
|
Loading…
x
Reference in New Issue
Block a user