124 lines
2.9 KiB
C#
124 lines
2.9 KiB
C#
//bls 2
|
|
|
|
function LuaLogicTCP::sendData(%this)
|
|
{
|
|
cancel(%this.lualogicTick);
|
|
%this.lualogicTick = %this.schedule(1, "sendData");
|
|
|
|
if(%this.data !$= "")
|
|
{
|
|
%data = %this.data;
|
|
while(strpos(%data, ";;") != -1)
|
|
%data = strReplace(%data, ";;", "; ;");
|
|
|
|
%this.send(%data @ "\n");
|
|
%this.data = "";
|
|
}
|
|
}
|
|
|
|
function LuaLogicTCP::onConnected(%this)
|
|
{
|
|
lualogic_print("tcp connected");
|
|
|
|
%this.data = "";
|
|
%this.sendData();
|
|
%this.isConnected = true;
|
|
|
|
lualogic_sendoptions();
|
|
lualogic_sendgatedefinitions();
|
|
lualogic_sendall();
|
|
}
|
|
|
|
function LuaLogicTCP::onLine(%this, %line)
|
|
{
|
|
%cmd = getField(%line, 0);
|
|
switch$(%cmd)
|
|
{
|
|
case "WU":
|
|
%state = getField(%line, 1)|0;
|
|
%count = getFieldCount(%line);
|
|
|
|
if(%state)
|
|
{
|
|
for(%i = 2; %i < %count; %i++)
|
|
{
|
|
%brick = getField(%line, %i);
|
|
if(isObject(%brick))
|
|
%brick.setColorFX(3, true);
|
|
}
|
|
}
|
|
else
|
|
{
|
|
for(%i = 2; %i < %count; %i++)
|
|
{
|
|
%brick = getField(%line, %i);
|
|
if(isObject(%brick))
|
|
%brick.setColorFX(0, true);
|
|
}
|
|
}
|
|
case "TPS":
|
|
%tz = getField(%line, 1);
|
|
|
|
%count = ClientGroup.getCount();
|
|
for(%i = 0; %i < %count; %i++)
|
|
{
|
|
%client = ClientGroup.getObject(%i);
|
|
if(%client.logicLTR)
|
|
commandToClient(%client, 'bottomPrint', "\c3Logic Tick Rate\c6: " @ %tz, 2, 1);
|
|
}
|
|
case "GINFO":
|
|
%client = getField(%line, 1);
|
|
if(isObject(%client))
|
|
{
|
|
%info = getField(%line, 2);
|
|
%info = lualogic_collapseescape(%info);
|
|
%info = strReplace(%info, "\\c0", "\c0");
|
|
%info = strReplace(%info, "\\c2", "\c2");
|
|
%info = strReplace(%info, "\\c5", "\c5");
|
|
%client.centerPrint(%info, 5);
|
|
}
|
|
case "SINFO":
|
|
if(isObject(%client = getField(%line, 1)))
|
|
{
|
|
%wires = getField(%line, 2);
|
|
%gates = getField(%line, 3);
|
|
%inports = getField(%line, 4);
|
|
%outports = getField(%line, 5);
|
|
|
|
messageClient(%client, '', '\c3Wires\c6: %1', %wires);
|
|
messageClient(%client, '', '\c3Gates\c6: %1', %gates);
|
|
messageClient(%client, '', '\c3Ports\c6: %1 inputs | %2 outputs (%3 total)', %inports, %outports, %inports + %outports);
|
|
}
|
|
case "CB":
|
|
%data = getFields(%line, 1, getFieldCount(%line));
|
|
%data = nextToken(%data, brick, "\t");
|
|
while(%brick !$= ""){
|
|
%data = nextToken(%data, argc, "\t");
|
|
|
|
for(%i=0; %i<%argc; %i++){
|
|
%data = nextToken(%data, av, "\t");
|
|
|
|
if(isObject(%brick)) {
|
|
%arg = lualogic_collapseescape(%av);
|
|
%brick.getDatablock().LuaLogic_Callback(%brick, %arg);
|
|
}
|
|
}
|
|
%data = nextToken(%data, brick, "\t");
|
|
}
|
|
case "TEST":
|
|
talk("Time: " @ getField(%line, 1));
|
|
}
|
|
}
|
|
|
|
function LuaLogicTCP::onConnectFailed(%this)
|
|
{
|
|
lualogic_print("tcp failed to connect");
|
|
}
|
|
|
|
function LuaLogicTCP::onDisconnect(%this)
|
|
{
|
|
lualogic_print("tcp disconnected");
|
|
%this.isConnected = false;
|
|
cancel(%this.lualogicTick);
|
|
}
|