From 5f58a531a89cd21b8db20c35315cbf3a61078bf3 Mon Sep 17 00:00:00 2001 From: Redo Date: Sat, 6 Apr 2019 19:02:43 -0500 Subject: [PATCH] added automatic registration for non-builtin gate datablocks --- bricks/outputs/text-init.lua | 166 ++++++------- scripts/lualogic.cs | 248 +++++++++---------- scripts/utilities.cs | 463 ++++++++++++++++++----------------- 3 files changed, 449 insertions(+), 428 deletions(-) diff --git a/bricks/outputs/text-init.lua b/bricks/outputs/text-init.lua index b3051b2..61aa44a 100644 --- a/bricks/outputs/text-init.lua +++ b/bricks/outputs/text-init.lua @@ -1,83 +1,83 @@ - -textbrick_idxToPrint = textbrick_idxToPrint or { - [0x00] = "space", - - [0x01] = "A", - [0x02] = "B", - [0x03] = "C", - [0x04] = "D", - [0x05] = "E", - [0x06] = "F", - [0x07] = "G", - [0x08] = "H", - [0x09] = "I", - [0x0A] = "J", - [0x0B] = "K", - [0x0C] = "L", - [0x0D] = "M", - [0x0E] = "N", - [0x0F] = "O", - [0x10] = "P", - [0x11] = "Q", - [0x12] = "R", - [0x13] = "S", - [0x14] = "T", - [0x15] = "U", - [0x16] = "V", - [0x17] = "W", - [0x18] = "X", - [0x19] = "Y", - [0x1A] = "Z", - - [0x1B] = "0", - [0x1C] = "1", - [0x1D] = "2", - [0x1E] = "3", - [0x1F] = "4", - [0x20] = "5", - [0x21] = "6", - [0x22] = "7", - [0x23] = "8", - [0x24] = "9", - - [0x25] = "bang", - [0x26] = "at", - [0x27] = "pound", - [0x28] = "dollar", - [0x29] = "percent", - [0x2A] = "caret", - [0x2B] = "and", - [0x2C] = "asterisk", - [0x2D] = "minus", - [0x2E] = "equals", - [0x2F] = "plus", - [0x30] = "apostrophe", - [0x31] = "less_than", - [0x32] = "greater_than", - [0x33] = "period", - [0x34] = "qmark", - - [0x35] = "apostrophe2", - [0x36] = "colon", - [0x37] = "comma", - [0x38] = "curlybracketleft", - [0x39] = "curlybracketright", - [0x3A] = "currencysign", - [0x3B] = "euro", - [0x3C] = "onehalf", - [0x3D] = "poundsymbol", - [0x3E] = "roundbracketleft", - [0x3F] = "roundbracketright", - [0x40] = "slashleft", - [0x41] = "slashright", - [0x42] = "squarebracketleft", - [0x43] = "squarebracketright", - [0x44] = "tilde", - [0x45] = "umlaut", - [0x46] = "underscore", - [0x47] = "verticalbar", -} - -return function(gate) - gate.tickStarted = 0 -end + +textbrick_idxToPrint = textbrick_idxToPrint or { + [0x00] = "space", + + [0x01] = "A", + [0x02] = "B", + [0x03] = "C", + [0x04] = "D", + [0x05] = "E", + [0x06] = "F", + [0x07] = "G", + [0x08] = "H", + [0x09] = "I", + [0x0A] = "J", + [0x0B] = "K", + [0x0C] = "L", + [0x0D] = "M", + [0x0E] = "N", + [0x0F] = "O", + [0x10] = "P", + [0x11] = "Q", + [0x12] = "R", + [0x13] = "S", + [0x14] = "T", + [0x15] = "U", + [0x16] = "V", + [0x17] = "W", + [0x18] = "X", + [0x19] = "Y", + [0x1A] = "Z", + + [0x1B] = "0", + [0x1C] = "1", + [0x1D] = "2", + [0x1E] = "3", + [0x1F] = "4", + [0x20] = "5", + [0x21] = "6", + [0x22] = "7", + [0x23] = "8", + [0x24] = "9", + + [0x25] = "bang", + [0x26] = "at", + [0x27] = "pound", + [0x28] = "dollar", + [0x29] = "percent", + [0x2A] = "caret", + [0x2B] = "and", + [0x2C] = "asterisk", + [0x2D] = "minus", + [0x2E] = "equals", + [0x2F] = "plus", + [0x30] = "apostrophe", + [0x31] = "less_than", + [0x32] = "greater_than", + [0x33] = "period", + [0x34] = "qmark", + + [0x35] = "apostrophe2", + [0x36] = "colon", + [0x37] = "comma", + [0x38] = "curlybracketright", + [0x39] = "curlybracketleft", + [0x3A] = "currencysign", + [0x3B] = "euro", + [0x3C] = "onehalf", + [0x3D] = "poundsymbol", + [0x3E] = "roundbracketright", + [0x3F] = "roundbracketleft", + [0x40] = "slashleft", + [0x41] = "slashright", + [0x42] = "squarebracketright", + [0x43] = "squarebracketleft", + [0x44] = "tilde", + [0x45] = "umlaut", + [0x46] = "underscore", + [0x47] = "verticalbar", +} + +return function(gate) + gate.tickStarted = 0 +end diff --git a/scripts/lualogic.cs b/scripts/lualogic.cs index 0852e12..b6d920a 100644 --- a/scripts/lualogic.cs +++ b/scripts/lualogic.cs @@ -1,124 +1,124 @@ - -if($Pref::Server::LuaLogic::OPT_TICK_ENABLED $= "") $Pref::Server::LuaLogic::OPT_TICK_ENABLED = true; -if($Pref::Server::LuaLogic::OPT_TICK_TIME $= "") $Pref::Server::LuaLogic::OPT_TICK_TIME = 0; -if($Pref::Server::LuaLogic::OPT_FX_UPDATES $= "") $Pref::Server::LuaLogic::OPT_FX_UPDATES = true; -if($Pref::Server::LuaLogic::OPT_FX_TIME $= "") $Pref::Server::LuaLogic::OPT_FX_TIME = 0.03; - -exec("./utilities.cs"); -exec("./tcp.cs"); -exec("./bricks.cs"); -exec("./brickdata.cs"); -exec("./cmds.cs"); - -function lualogic_loadprintsandcolors() -{ - lualogic_definecolor("RED" , "1 0 0 1"); - lualogic_definecolor("GREEN", "0 1 0 1"); - - lualogic_defineprint("ARROW" , "Add-Ons/Print_Logic_Default/prints/arrow.png"); - lualogic_defineprint("UPARROW" , "Add-Ons/Print_Logic_Default/prints/uparrow.png"); - lualogic_defineprint("DOWNARROW", "Add-Ons/Print_Logic_Default/prints/downarrow.png"); - - for(%i = 0; %i < 8; %i++) - { - %a = (%i >> 2) & 1; - %b = (%i >> 1) & 1; - %c = (%i >> 0) & 1; - lualogic_defineprint("COLOR" @ %a @ %b @ %c, "Add-Ons/Print_Logic_Default/prints/color_" @ %a @ %b @ %c @ ".png"); - } - - lualogic_defineprint("space" , "Add-Ons/Print_Letters_Default/prints/-space.png" ); - - lualogic_defineprint("A" , "Add-Ons/Print_Letters_Default/prints/A.png" ); - lualogic_defineprint("B" , "Add-Ons/Print_Letters_Default/prints/B.png" ); - lualogic_defineprint("C" , "Add-Ons/Print_Letters_Default/prints/C.png" ); - lualogic_defineprint("D" , "Add-Ons/Print_Letters_Default/prints/D.png" ); - lualogic_defineprint("E" , "Add-Ons/Print_Letters_Default/prints/E.png" ); - lualogic_defineprint("F" , "Add-Ons/Print_Letters_Default/prints/F.png" ); - lualogic_defineprint("G" , "Add-Ons/Print_Letters_Default/prints/G.png" ); - lualogic_defineprint("H" , "Add-Ons/Print_Letters_Default/prints/H.png" ); - lualogic_defineprint("I" , "Add-Ons/Print_Letters_Default/prints/I.png" ); - lualogic_defineprint("J" , "Add-Ons/Print_Letters_Default/prints/J.png" ); - lualogic_defineprint("K" , "Add-Ons/Print_Letters_Default/prints/K.png" ); - lualogic_defineprint("L" , "Add-Ons/Print_Letters_Default/prints/L.png" ); - lualogic_defineprint("M" , "Add-Ons/Print_Letters_Default/prints/M.png" ); - lualogic_defineprint("N" , "Add-Ons/Print_Letters_Default/prints/N.png" ); - lualogic_defineprint("O" , "Add-Ons/Print_Letters_Default/prints/O.png" ); - lualogic_defineprint("P" , "Add-Ons/Print_Letters_Default/prints/P.png" ); - lualogic_defineprint("Q" , "Add-Ons/Print_Letters_Default/prints/Q.png" ); - lualogic_defineprint("R" , "Add-Ons/Print_Letters_Default/prints/R.png" ); - lualogic_defineprint("S" , "Add-Ons/Print_Letters_Default/prints/S.png" ); - lualogic_defineprint("T" , "Add-Ons/Print_Letters_Default/prints/T.png" ); - lualogic_defineprint("U" , "Add-Ons/Print_Letters_Default/prints/U.png" ); - lualogic_defineprint("V" , "Add-Ons/Print_Letters_Default/prints/V.png" ); - lualogic_defineprint("W" , "Add-Ons/Print_Letters_Default/prints/W.png" ); - lualogic_defineprint("X" , "Add-Ons/Print_Letters_Default/prints/X.png" ); - lualogic_defineprint("Y" , "Add-Ons/Print_Letters_Default/prints/Y.png" ); - lualogic_defineprint("Z" , "Add-Ons/Print_Letters_Default/prints/Z.png" ); - - lualogic_defineprint("0" , "Add-Ons/Print_Letters_Default/prints/0.png" ); - lualogic_defineprint("1" , "Add-Ons/Print_Letters_Default/prints/1.png" ); - lualogic_defineprint("2" , "Add-Ons/Print_Letters_Default/prints/2.png" ); - lualogic_defineprint("3" , "Add-Ons/Print_Letters_Default/prints/3.png" ); - lualogic_defineprint("4" , "Add-Ons/Print_Letters_Default/prints/4.png" ); - lualogic_defineprint("5" , "Add-Ons/Print_Letters_Default/prints/5.png" ); - lualogic_defineprint("6" , "Add-Ons/Print_Letters_Default/prints/6.png" ); - lualogic_defineprint("7" , "Add-Ons/Print_Letters_Default/prints/7.png" ); - lualogic_defineprint("8" , "Add-Ons/Print_Letters_Default/prints/8.png" ); - lualogic_defineprint("9" , "Add-Ons/Print_Letters_Default/prints/9.png" ); - - lualogic_defineprint("bang" , "Add-Ons/Print_Letters_Default/prints/-bang.png" ); - lualogic_defineprint("at" , "Add-Ons/Print_Letters_Default/prints/-at.png" ); - lualogic_defineprint("pound" , "Add-Ons/Print_Letters_Default/prints/-pound.png" ); - lualogic_defineprint("dollar" , "Add-Ons/Print_Letters_Default/prints/-dollar.png" ); - lualogic_defineprint("percent" , "Add-Ons/Print_Letters_Default/prints/-percent.png" ); - lualogic_defineprint("caret" , "Add-Ons/Print_Letters_Default/prints/-caret.png" ); - lualogic_defineprint("and" , "Add-Ons/Print_Letters_Default/prints/-and.png" ); - lualogic_defineprint("asterisk" , "Add-Ons/Print_Letters_Default/prints/-asterisk.png" ); - lualogic_defineprint("minus" , "Add-Ons/Print_Letters_Default/prints/-minus.png" ); - lualogic_defineprint("equals" , "Add-Ons/Print_Letters_Default/prints/-equals.png" ); - lualogic_defineprint("plus" , "Add-Ons/Print_Letters_Default/prints/-plus.png" ); - lualogic_defineprint("apostrophe" , "Add-Ons/Print_Letters_Default/prints/-apostrophe.png" ); - lualogic_defineprint("less_than" , "Add-Ons/Print_Letters_Default/prints/-less_than.png" ); - lualogic_defineprint("greater_than" , "Add-Ons/Print_Letters_Default/prints/-greater_than.png" ); - lualogic_defineprint("period" , "Add-Ons/Print_Letters_Default/prints/-period.png" ); - lualogic_defineprint("qmark" , "Add-Ons/Print_Letters_Default/prints/-qmark.png" ); - - lualogic_defineprint("apostrophe2" , "Add-Ons/Print_Letters_Extra/prints/-apostrophe2.png" ); - lualogic_defineprint("colon" , "Add-Ons/Print_Letters_Extra/prints/-colon.png" ); - lualogic_defineprint("comma" , "Add-Ons/Print_Letters_Extra/prints/-comma.png" ); - lualogic_defineprint("curlybracketleft" , "Add-Ons/Print_Letters_Extra/prints/-curlybracketleft.png" ); - lualogic_defineprint("curlybracketright" , "Add-Ons/Print_Letters_Extra/prints/-curlybracketright.png" ); - lualogic_defineprint("currencysign" , "Add-Ons/Print_Letters_Extra/prints/-currencysign.png" ); - lualogic_defineprint("euro" , "Add-Ons/Print_Letters_Extra/prints/-euro.png" ); - lualogic_defineprint("onehalf" , "Add-Ons/Print_Letters_Extra/prints/-onehalf.png" ); - lualogic_defineprint("poundsymbol" , "Add-Ons/Print_Letters_Extra/prints/-poundsymbol.png" ); - lualogic_defineprint("roundbracketleft" , "Add-Ons/Print_Letters_Extra/prints/-roundbracketleft.png" ); - lualogic_defineprint("roundbracketright" , "Add-Ons/Print_Letters_Extra/prints/-roundbracketright.png" ); - lualogic_defineprint("slashleft" , "Add-Ons/Print_Letters_Extra/prints/-slashleft.png" ); - lualogic_defineprint("slashright" , "Add-Ons/Print_Letters_Extra/prints/-slashright.png" ); - lualogic_defineprint("squarebracketleft" , "Add-Ons/Print_Letters_Extra/prints/-squarebracketleft.png" ); - lualogic_defineprint("squarebracketright", "Add-Ons/Print_Letters_Extra/prints/-squarebracketright.png"); - lualogic_defineprint("tilde" , "Add-Ons/Print_Letters_Extra/prints/-tilde.png" ); - lualogic_defineprint("umlaut" , "Add-Ons/Print_Letters_Extra/prints/-umlaut.png" ); - lualogic_defineprint("underscore" , "Add-Ons/Print_Letters_Extra/prints/-underscore.png" ); - lualogic_defineprint("verticalbar" , "Add-Ons/Print_Letters_Extra/prints/-verticalbar.png" ); -} -schedule(0, 0, "lualogic_loadprintsandcolors"); - -package LuaLogic -{ - function onServerDestroyed() - { - deleteVariables("$LuaLogic*"); - parent::onServerDestroyed(); - } -}; -activatePackage("LuaLogic"); - -function llr(){ - deleteVariables("$LuaLogic*"); - resetAllOpCallFunc(); - exec("./server.cs"); - schedule(3000, 0, lualogic_connect, 25000); -} + +if($Pref::Server::LuaLogic::OPT_TICK_ENABLED $= "") $Pref::Server::LuaLogic::OPT_TICK_ENABLED = true; +if($Pref::Server::LuaLogic::OPT_TICK_TIME $= "") $Pref::Server::LuaLogic::OPT_TICK_TIME = 0; +if($Pref::Server::LuaLogic::OPT_FX_UPDATES $= "") $Pref::Server::LuaLogic::OPT_FX_UPDATES = true; +if($Pref::Server::LuaLogic::OPT_FX_TIME $= "") $Pref::Server::LuaLogic::OPT_FX_TIME = 0.03; + +exec("./utilities.cs"); +exec("./tcp.cs"); +exec("./bricks.cs"); +exec("./brickdata.cs"); +exec("./cmds.cs"); + +function lualogic_loadprintsandcolors() +{ + lualogic_definecolor("RED" , "1 0 0 1"); + lualogic_definecolor("GREEN", "0 1 0 1"); + + lualogic_defineprint("ARROW" , "Add-Ons/Print_Logic_Default/prints/arrow.png"); + lualogic_defineprint("UPARROW" , "Add-Ons/Print_Logic_Default/prints/uparrow.png"); + lualogic_defineprint("DOWNARROW", "Add-Ons/Print_Logic_Default/prints/downarrow.png"); + + for(%i = 0; %i < 8; %i++) + { + %a = (%i >> 2) & 1; + %b = (%i >> 1) & 1; + %c = (%i >> 0) & 1; + lualogic_defineprint("COLOR" @ %a @ %b @ %c, "Add-Ons/Print_Logic_Default/prints/color_" @ %a @ %b @ %c @ ".png"); + } + + lualogic_defineprint("space" , "Add-Ons/Print_Letters_Default/prints/-space.png" ); + + lualogic_defineprint("A" , "Add-Ons/Print_Letters_Default/prints/A.png" ); + lualogic_defineprint("B" , "Add-Ons/Print_Letters_Default/prints/B.png" ); + lualogic_defineprint("C" , "Add-Ons/Print_Letters_Default/prints/C.png" ); + lualogic_defineprint("D" , "Add-Ons/Print_Letters_Default/prints/D.png" ); + lualogic_defineprint("E" , "Add-Ons/Print_Letters_Default/prints/E.png" ); + lualogic_defineprint("F" , "Add-Ons/Print_Letters_Default/prints/F.png" ); + lualogic_defineprint("G" , "Add-Ons/Print_Letters_Default/prints/G.png" ); + lualogic_defineprint("H" , "Add-Ons/Print_Letters_Default/prints/H.png" ); + lualogic_defineprint("I" , "Add-Ons/Print_Letters_Default/prints/I.png" ); + lualogic_defineprint("J" , "Add-Ons/Print_Letters_Default/prints/J.png" ); + lualogic_defineprint("K" , "Add-Ons/Print_Letters_Default/prints/K.png" ); + lualogic_defineprint("L" , "Add-Ons/Print_Letters_Default/prints/L.png" ); + lualogic_defineprint("M" , "Add-Ons/Print_Letters_Default/prints/M.png" ); + lualogic_defineprint("N" , "Add-Ons/Print_Letters_Default/prints/N.png" ); + lualogic_defineprint("O" , "Add-Ons/Print_Letters_Default/prints/O.png" ); + lualogic_defineprint("P" , "Add-Ons/Print_Letters_Default/prints/P.png" ); + lualogic_defineprint("Q" , "Add-Ons/Print_Letters_Default/prints/Q.png" ); + lualogic_defineprint("R" , "Add-Ons/Print_Letters_Default/prints/R.png" ); + lualogic_defineprint("S" , "Add-Ons/Print_Letters_Default/prints/S.png" ); + lualogic_defineprint("T" , "Add-Ons/Print_Letters_Default/prints/T.png" ); + lualogic_defineprint("U" , "Add-Ons/Print_Letters_Default/prints/U.png" ); + lualogic_defineprint("V" , "Add-Ons/Print_Letters_Default/prints/V.png" ); + lualogic_defineprint("W" , "Add-Ons/Print_Letters_Default/prints/W.png" ); + lualogic_defineprint("X" , "Add-Ons/Print_Letters_Default/prints/X.png" ); + lualogic_defineprint("Y" , "Add-Ons/Print_Letters_Default/prints/Y.png" ); + lualogic_defineprint("Z" , "Add-Ons/Print_Letters_Default/prints/Z.png" ); + + lualogic_defineprint("0" , "Add-Ons/Print_Letters_Default/prints/0.png" ); + lualogic_defineprint("1" , "Add-Ons/Print_Letters_Default/prints/1.png" ); + lualogic_defineprint("2" , "Add-Ons/Print_Letters_Default/prints/2.png" ); + lualogic_defineprint("3" , "Add-Ons/Print_Letters_Default/prints/3.png" ); + lualogic_defineprint("4" , "Add-Ons/Print_Letters_Default/prints/4.png" ); + lualogic_defineprint("5" , "Add-Ons/Print_Letters_Default/prints/5.png" ); + lualogic_defineprint("6" , "Add-Ons/Print_Letters_Default/prints/6.png" ); + lualogic_defineprint("7" , "Add-Ons/Print_Letters_Default/prints/7.png" ); + lualogic_defineprint("8" , "Add-Ons/Print_Letters_Default/prints/8.png" ); + lualogic_defineprint("9" , "Add-Ons/Print_Letters_Default/prints/9.png" ); + + lualogic_defineprint("bang" , "Add-Ons/Print_Letters_Default/prints/-bang.png" ); + lualogic_defineprint("at" , "Add-Ons/Print_Letters_Default/prints/-at.png" ); + lualogic_defineprint("pound" , "Add-Ons/Print_Letters_Default/prints/-pound.png" ); + lualogic_defineprint("dollar" , "Add-Ons/Print_Letters_Default/prints/-dollar.png" ); + lualogic_defineprint("percent" , "Add-Ons/Print_Letters_Default/prints/-percent.png" ); + lualogic_defineprint("caret" , "Add-Ons/Print_Letters_Default/prints/-caret.png" ); + lualogic_defineprint("and" , "Add-Ons/Print_Letters_Default/prints/-and.png" ); + lualogic_defineprint("asterisk" , "Add-Ons/Print_Letters_Default/prints/-asterisk.png" ); + lualogic_defineprint("minus" , "Add-Ons/Print_Letters_Default/prints/-minus.png" ); + lualogic_defineprint("equals" , "Add-Ons/Print_Letters_Default/prints/-equals.png" ); + lualogic_defineprint("plus" , "Add-Ons/Print_Letters_Default/prints/-plus.png" ); + lualogic_defineprint("apostrophe" , "Add-Ons/Print_Letters_Default/prints/-apostrophe.png" ); + lualogic_defineprint("less_than" , "Add-Ons/Print_Letters_Default/prints/-less_than.png" ); + lualogic_defineprint("greater_than" , "Add-Ons/Print_Letters_Default/prints/-greater_than.png" ); + lualogic_defineprint("period" , "Add-Ons/Print_Letters_Default/prints/-period.png" ); + lualogic_defineprint("qmark" , "Add-Ons/Print_Letters_Default/prints/-qmark.png" ); + + lualogic_defineprint("apostrophe2" , "Add-Ons/Print_Letters_Extra/prints/-apostrophe2.png" ); + lualogic_defineprint("colon" , "Add-Ons/Print_Letters_Extra/prints/-colon.png" ); + lualogic_defineprint("comma" , "Add-Ons/Print_Letters_Extra/prints/-comma.png" ); + lualogic_defineprint("curlybracketleft" , "Add-Ons/Print_Letters_Extra/prints/-curlybracketleft.png" ); + lualogic_defineprint("curlybracketright" , "Add-Ons/Print_Letters_Extra/prints/-curlybracketright.png" ); + lualogic_defineprint("currencysign" , "Add-Ons/Print_Letters_Extra/prints/-currencysign.png" ); + lualogic_defineprint("euro" , "Add-Ons/Print_Letters_Extra/prints/-euro.png" ); + lualogic_defineprint("onehalf" , "Add-Ons/Print_Letters_Extra/prints/-onehalf.png" ); + lualogic_defineprint("poundsymbol" , "Add-Ons/Print_Letters_Extra/prints/-poundsymbol.png" ); + lualogic_defineprint("roundbracketleft" , "Add-Ons/Print_Letters_Extra/prints/-roundbracketleft.png" ); + lualogic_defineprint("roundbracketright" , "Add-Ons/Print_Letters_Extra/prints/-roundbracketright.png" ); + lualogic_defineprint("slashleft" , "Add-Ons/Print_Letters_Extra/prints/-slashleft.png" ); + lualogic_defineprint("slashright" , "Add-Ons/Print_Letters_Extra/prints/-slashright.png" ); + lualogic_defineprint("squarebracketleft" , "Add-Ons/Print_Letters_Extra/prints/-squarebracketleft.png" ); + lualogic_defineprint("squarebracketright", "Add-Ons/Print_Letters_Extra/prints/-squarebracketright.png"); + lualogic_defineprint("tilde" , "Add-Ons/Print_Letters_Extra/prints/-tilde.png" ); + lualogic_defineprint("umlaut" , "Add-Ons/Print_Letters_Extra/prints/-umlaut.png" ); + lualogic_defineprint("underscore" , "Add-Ons/Print_Letters_Extra/prints/-underscore.png" ); + lualogic_defineprint("verticalbar" , "Add-Ons/Print_Letters_Extra/prints/-verticalbar.png" ); +} +schedule(0, 0, "lualogic_loadprintsandcolors"); + +package LuaLogic +{ + function onServerDestroyed() + { + deleteVariables("$LuaLogic*"); + parent::onServerDestroyed(); + } +}; +activatePackage("LuaLogic"); + +function llr(){ + deleteVariables("$LuaLogic*"); + resetAllOpCallFunc(); + exec("./lualogic.cs"); + schedule(3000, 0, lualogic_connect, 25000); +} diff --git a/scripts/utilities.cs b/scripts/utilities.cs index 34d46b0..5aa3e0c 100644 --- a/scripts/utilities.cs +++ b/scripts/utilities.cs @@ -1,221 +1,242 @@ - -function lualogic_escapelogicfunction(%text){ - %text = strReplace(%text, "\\", "\\/"); - - %text = strReplace(%text, "\r", "\\r"); - %text = strReplace(%text, "\n", "\\n"); - %text = strReplace(%text, "\t", "\\t"); - %text = strReplace(%text, ";" , "\\:"); - - return %text; -} - -function lualogic_registergatedefinition(%data) -{ - if(!isObject(%data)) - return; - %id = %data.getID(); - - if((%idx = $LuaLogic::GateDefinitionIDX[%id]) $= "") - { - %idx = $LuaLogic::NumGateDefintions+0; - $LuaLogic::GateDefinitionIDX[%id] = %idx; - $LuaLogic::NumGateDefintions++; - } - - %def = %id @ ";" @ - %data.logicUIName @ ";" @ - %data.logicUIDesc @ ";" @ - lualogic_escapelogicfunction(%data.logicInit) @ ";" @ - lualogic_escapelogicfunction(%data.logicUpdate) @ ";" @ - lualogic_escapelogicfunction(%data.logicInput) @ ";" @ - (%ports = %data.numLogicPorts) - ; - - for(%i = 0; %i < %ports; %i++) - { - %def = %def @";"@ %data.logicPortType[%i] @";"@ %data.logicPortPos[%i] @";"@ %data.logicPortDir[%i] - @";"@ (%data.logicPortCauseUpdate[%i] == true) @";"@ %data.logicPortUIName[%i]; - } - - $LuaLogic::GateDefintion[%idx] = %def; -} - -function lualogic_print(%text) -{ - echo("LuaLogic -> ", %text); -} - -function lualogic_roundpos(%pos) -{ - return mFloor(getWord(%pos, 0)*4)/4 SPC mFloor(getWord(%pos, 1)*4)/4 SPC mFloor(getWord(%pos, 2)*10)/10; -} - -function lualogic_roundstudpos(%pos) -{ - return mFloor(getWord(%pos, 0)*2)/2 SPC mFloor(getWord(%pos, 1)*2)/2 SPC mFloor(getWord(%pos, 2)*5)/5; -} - -function lualogic_pos(%pos) -{ - %pos = lualogic_roundpos(%pos); - return getWord(%pos, 0)/0.25 SPC getWord(%pos, 1)/0.25 SPC getWord(%pos, 2)/0.1; -} - -function lualogic_studpos(%pos) -{ - %pos = lualogic_roundstudpos(%pos); - return getWord(%pos, 0)/0.5*2 + 1 SPC getWord(%pos, 1)/0.5*2 + 1 SPC getWord(%pos, 2)/0.2*2; -} - -function lualogic_postobrick(%pos) -{ - return getWord(%pos, 0)*0.25 SPC getWord(%pos, 1)*0.25 SPC getWord(%pos, 2)*0.1; -} - -function lualogic_connect(%port) -{ - if(isObject(LuaLogicTCP)) - LuaLogicTCP.delete(); - %tcp = new TCPObject(LuaLogicTCP); - %tcp.connect("127.0.0.1:" @ %port); -} - -function lualogic_send(%data) -{ - if(isObject(LuaLogicTCP) && LuaLogicTCP.isConnected) - { - while(strpos(%data, ";;") != -1) - %data = strReplace(%data, ";;", "; ;"); - - if(strlen(LuaLogicTCP.data) + strlen(%data) >= 1024) - LuaLogicTCP.sendData(); - - if(LuaLogicTCP.data $= "") - LuaLogicTCP.data = %data; - else - LuaLogicTCP.data = LuaLogicTCP.data @ ";" @ %data; - } -} - -function lualogic_sendgatedefinitions() -{ - for(%i = 0; %i < $LuaLogic::NumGateDefintions; %i++) - lualogic_send("GD;" @ $LuaLogic::GateDefintion[%i]); -} - -function lualogic_sendoptions() -{ - lualogic_send("OPT;TICK_ENABLED;" @ $Pref::Server::LuaLogic::OPT_TICK_ENABLED); - lualogic_send("OPT;TICK_TIME;" @ $Pref::Server::LuaLogic::OPT_TICK_TIME); - lualogic_send("OPT;FX_UPDATES;" @ $Pref::Server::LuaLogic::OPT_FX_UPDATES); - lualogic_send("OPT;FX_TIME;" @ $Pref::Server::LuaLogic::OPT_FX_TIME); -} - -function lualogic_sendinput(%gate, %argc, %arg0, %arg1, %arg2, %arg3, %arg4, %arg5, %arg6, %arg7, %arg8, %arg9, %arg10, %arg11, %arg12, %arg13, %arg14, %arg15) -{ - %args = %arg0; - for(%i = 1; %i < %argc; %i++) - %args = %args @ ";" @ %arg[%i]; - - if(%argc > 0) - lualogic_send("IN;" @ %gate.getID() @ ";" @ %argc @ ";" @ %args); - else - lualogic_send("IN;" @ %gate.getID() @ ";" @ %argc); -} - -function lualogic_ss(%obj, %state) -{ - lualogic_send("SG;" @ %obj @ ";" @ (%state == true)); -} - -function lualogic_definecolor(%color, %rgb, %allowTransparency) -{ - %r = getWord(%rgb, 0); - %g = getWord(%rgb, 1); - %b = getWord(%rgb, 2); - - %alpha = %allowTransparency ? 0.001 : 1; - - %bestDist = 9e9; - - for(%i = 0; %i < 64; %i++) - { - %crgba = getColorIDTable(%i); - if(getWord(%crgba, 3) >= %alpha) - { - %dr = getWord(%crgba, 0) - %r; - %dg = getWord(%crgba, 1) - %g; - %db = getWord(%crgba, 2) - %b; - %dist = %dr*%dr + %dg*%dg + %db*%db; - - if(%dist < %bestDist) - { - %bestDist = %dist; - %bestColor = %i; - } - } - } - - $LuaLogic::Color[%color] = %bestColor; - return %bestColor; -} - -function lualogic_iscolor(%color) -{ - return $LuaLogic::Color[%color] !$= ""; -} - -function lualogic_getcolor(%color) -{ - if($LuaLogic::Color[%color] !$= "") - return $LuaLogic::Color[%color]; - return 0; -} - -function lualogic_defineprint(%print, %file) -{ - %count = getNumPrintTextures(); - for(%i = 0; %i < %count; %i++) - { - if(getPrintTexture(%i) $= %file) - { - $LuaLogic::Print[%print] = %i; - return %i; - } - } - - return ""; -} - -function lualogic_isprint(%print) -{ - return $LuaLogic::Print[%print] !$= ""; -} - -function lualogic_getprint(%print) -{ - if($LuaLogic::Print[%print] !$= "") - return $LuaLogic::Print[%print]; - return 0; -} - -function lualogic_readfile(%filename){ - %filestr=""; - - %file=new FileObject(); - %success=%file.openForRead(%filename); - - if(%success){ - while(!%file.isEOF()){ - %line = %file.readLine(); - %filestr = %filestr @ %line @ "\n"; - } - }else{ - echo("LuaLogic: Failed to read file \"" @ %filename @ "\""); - } - %file.close(); - %file.delete(); - - return %filestr; -} + +function lualogic_escapelogicfunction(%text){ + %text = strReplace(%text, "\\", "\\/"); + + %text = strReplace(%text, "\r", "\\r"); + %text = strReplace(%text, "\n", "\\n"); + %text = strReplace(%text, "\t", "\\t"); + %text = strReplace(%text, ";" , "\\:"); + + return %text; +} + +function lualogic_registergatedefinition(%data){ + lualogic_registergatedefinition_auto(%data); +} + +function lualogic_registergatedefinition_auto(%data) +{ + if(!isObject(%data)) + return; + + if(%data.luaLogic_isRegistered) + return; + + %id = %data.getID(); + + if((%idx = $LuaLogic::GateDefinitionIDX[%id]) $= "") + { + %idx = $LuaLogic::NumGateDefintions+0; + $LuaLogic::GateDefinitionIDX[%id] = %idx; + $LuaLogic::NumGateDefintions++; + } + + %def = %id @ ";" @ + %data.logicUIName @ ";" @ + %data.logicUIDesc @ ";" @ + lualogic_escapelogicfunction(%data.logicInit) @ ";" @ + lualogic_escapelogicfunction(%data.logicUpdate) @ ";" @ + lualogic_escapelogicfunction(%data.logicInput) @ ";" @ + (%ports = %data.numLogicPorts) + ; + + for(%i = 0; %i < %ports; %i++) + { + %def = %def @";"@ %data.logicPortType[%i] @";"@ %data.logicPortPos[%i] @";"@ %data.logicPortDir[%i] + @";"@ (%data.logicPortCauseUpdate[%i] == true) @";"@ %data.logicPortUIName[%i]; + } + + $LuaLogic::GateDefintion[%idx] = %def; + + %data.luaLogic_isRegistered = true; +} + +function lualogic_registerAllGateDefinitions(){ + for(%dbidx=0; %dbidx ", %text); +} + +function lualogic_roundpos(%pos) +{ + return mFloor(getWord(%pos, 0)*4)/4 SPC mFloor(getWord(%pos, 1)*4)/4 SPC mFloor(getWord(%pos, 2)*10)/10; +} + +function lualogic_roundstudpos(%pos) +{ + return mFloor(getWord(%pos, 0)*2)/2 SPC mFloor(getWord(%pos, 1)*2)/2 SPC mFloor(getWord(%pos, 2)*5)/5; +} + +function lualogic_pos(%pos) +{ + %pos = lualogic_roundpos(%pos); + return getWord(%pos, 0)/0.25 SPC getWord(%pos, 1)/0.25 SPC getWord(%pos, 2)/0.1; +} + +function lualogic_studpos(%pos) +{ + %pos = lualogic_roundstudpos(%pos); + return getWord(%pos, 0)/0.5*2 + 1 SPC getWord(%pos, 1)/0.5*2 + 1 SPC getWord(%pos, 2)/0.2*2; +} + +function lualogic_postobrick(%pos) +{ + return getWord(%pos, 0)*0.25 SPC getWord(%pos, 1)*0.25 SPC getWord(%pos, 2)*0.1; +} + +function lualogic_connect(%port) +{ + if(isObject(LuaLogicTCP)) + LuaLogicTCP.delete(); + %tcp = new TCPObject(LuaLogicTCP); + %tcp.connect("127.0.0.1:" @ %port); +} + +function lualogic_send(%data) +{ + if(isObject(LuaLogicTCP) && LuaLogicTCP.isConnected) + { + while(strpos(%data, ";;") != -1) + %data = strReplace(%data, ";;", "; ;"); + + if(strlen(LuaLogicTCP.data) + strlen(%data) >= 1024) + LuaLogicTCP.sendData(); + + if(LuaLogicTCP.data $= "") + LuaLogicTCP.data = %data; + else + LuaLogicTCP.data = LuaLogicTCP.data @ ";" @ %data; + } +} + +function lualogic_sendgatedefinitions() +{ + for(%i = 0; %i < $LuaLogic::NumGateDefintions; %i++) + lualogic_send("GD;" @ $LuaLogic::GateDefintion[%i]); +} + +function lualogic_sendoptions() +{ + lualogic_send("OPT;TICK_ENABLED;" @ $Pref::Server::LuaLogic::OPT_TICK_ENABLED); + lualogic_send("OPT;TICK_TIME;" @ $Pref::Server::LuaLogic::OPT_TICK_TIME); + lualogic_send("OPT;FX_UPDATES;" @ $Pref::Server::LuaLogic::OPT_FX_UPDATES); + lualogic_send("OPT;FX_TIME;" @ $Pref::Server::LuaLogic::OPT_FX_TIME); +} + +function lualogic_sendinput(%gate, %argc, %arg0, %arg1, %arg2, %arg3, %arg4, %arg5, %arg6, %arg7, %arg8, %arg9, %arg10, %arg11, %arg12, %arg13, %arg14, %arg15) +{ + %args = %arg0; + for(%i = 1; %i < %argc; %i++) + %args = %args @ ";" @ %arg[%i]; + + if(%argc > 0) + lualogic_send("IN;" @ %gate.getID() @ ";" @ %argc @ ";" @ %args); + else + lualogic_send("IN;" @ %gate.getID() @ ";" @ %argc); +} + +function lualogic_ss(%obj, %state) +{ + lualogic_send("SG;" @ %obj @ ";" @ (%state == true)); +} + +function lualogic_definecolor(%color, %rgb, %allowTransparency) +{ + %r = getWord(%rgb, 0); + %g = getWord(%rgb, 1); + %b = getWord(%rgb, 2); + + %alpha = %allowTransparency ? 0.001 : 1; + + %bestDist = 9e9; + + for(%i = 0; %i < 64; %i++) + { + %crgba = getColorIDTable(%i); + if(getWord(%crgba, 3) >= %alpha) + { + %dr = getWord(%crgba, 0) - %r; + %dg = getWord(%crgba, 1) - %g; + %db = getWord(%crgba, 2) - %b; + %dist = %dr*%dr + %dg*%dg + %db*%db; + + if(%dist < %bestDist) + { + %bestDist = %dist; + %bestColor = %i; + } + } + } + + $LuaLogic::Color[%color] = %bestColor; + return %bestColor; +} + +function lualogic_iscolor(%color) +{ + return $LuaLogic::Color[%color] !$= ""; +} + +function lualogic_getcolor(%color) +{ + if($LuaLogic::Color[%color] !$= "") + return $LuaLogic::Color[%color]; + return 0; +} + +function lualogic_defineprint(%print, %file) +{ + %count = getNumPrintTextures(); + for(%i = 0; %i < %count; %i++) + { + if(getPrintTexture(%i) $= %file) + { + $LuaLogic::Print[%print] = %i; + return %i; + } + } + + return ""; +} + +function lualogic_isprint(%print) +{ + return $LuaLogic::Print[%print] !$= ""; +} + +function lualogic_getprint(%print) +{ + if($LuaLogic::Print[%print] !$= "") + return $LuaLogic::Print[%print]; + return 0; +} + +function lualogic_readfile(%filename){ + %filestr=""; + + %file=new FileObject(); + %success=%file.openForRead(%filename); + + if(%success){ + while(!%file.isEOF()){ + %line = %file.readLine(); + %filestr = %filestr @ %line @ "\n"; + } + }else{ + echo("LuaLogic: Failed to read file \"" @ %filename @ "\""); + } + %file.close(); + %file.delete(); + + return %filestr; +}