Advertisement
Kazadaoex

ReactorTest2

Apr 19th, 2015
257
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. local args = {...};
  2.  
  3. local BRControl = { protocol = "BRControl" }
  4.  
  5. local screen = "monitor_14"
  6. local reactor = "BigReactors-Reactor_11"
  7. local reactor1 = "BigReactors-Reactor_11"
  8. local reactor2 = "BigReactors-Reactor_10"
  9. local reactor3 = "BigReactors-Reactor_9"
  10. local reactor4 = "BigReactors-Reactor_7"
  11. local reactor5 = "BigReactors-Reactor_8"
  12. local reactor6 = "BigReactors-Reactor_5"
  13. local reactor7 = "BigReactors-Reactor_6"
  14. local reactor8 = "BigReactors-Reactor_12"
  15.  
  16. local turbine1 = "BigReactors-Turbine_1"
  17. local turbine2 = "BigReactors-Turbine_2"
  18. local turbine3 = "BigReactors-Turbine_3"
  19. local turbine4 = "BigReactors-Turbine_4"
  20. local turbine5 = "BigReactors-Turbine_5"
  21. local turbine6 = "BigReactors-Turbine_6"
  22. local turbine7 = "BigReactors-Turbine_7"
  23. local turbine8 = "BigReactors-Turbine_8"
  24.  
  25. function BRControl:new(o)
  26.     o = o or {}; o.info = {};
  27.     setmetatable(o,self);
  28.     self.__index = self;
  29.     return o:init();
  30. end
  31.  
  32. function BRControl:init() return self; end
  33.  
  34. function BRControl:run()
  35.     while true do
  36.         self:tick();
  37.         self:show();
  38.         self:wait();
  39.     end
  40. end
  41.  
  42. local BRServer = BRControl:new{monitors={}};
  43. function BRServer:init()
  44.     local monitors = self.monitors or {};
  45.   rednet.open("back")
  46.    self.reactor1 = peripheral.wrap(reactor1);
  47.    self.reactor2 = peripheral.wrap(reactor2);
  48.    self.reactor3 = peripheral.wrap(reactor3);
  49.    self.reactor4 = peripheral.wrap(reactor4);
  50.    self.reactor5 = peripheral.wrap(reactor5);
  51.    self.reactor6 = peripheral.wrap(reactor6);
  52.    self.reactor7 = peripheral.wrap(reactor7);
  53.    self.reactor8 = peripheral.wrap(reactor8);
  54.    self.turbine1 = peripheral.wrap(turbine1);
  55.    self.turbine2 = peripheral.wrap(turbine2);
  56.    self.turbine3 = peripheral.wrap(turbine3);
  57.    self.turbine4 = peripheral.wrap(turbine4);
  58.    self.turbine5 = peripheral.wrap(turbine5);
  59.    self.turbine6 = peripheral.wrap(turbine6);
  60.    self.turbine7 = peripheral.wrap(turbine7);
  61.    self.turbine8 = peripheral.wrap(turbine8);
  62.    monitors[#monitors+1] = peripheral.wrap(screen)
  63.    
  64.     self.monitors = monitors;
  65.     return self;
  66. end
  67.  
  68. function BRServer:tick()
  69.     self.info = {
  70.         active1 = self.reactor1.getActive(),
  71.  
  72.         temp1   = self.reactor1.getCasingTemperature(),
  73.         waste1  = self.reactor1.getWasteAmount(),
  74.  
  75.         fuel1      = self.reactor1.getFuelAmount(),
  76.         fuel_max1  = self.reactor1.getFuelAmountMax(),
  77.         fuel_reac1 = self.reactor1.getFuelReactivity(),
  78.         fuel_temp1 = self.reactor1.getFuelTemperature(),
  79.         fuel_tick1 = self.reactor1.getFuelConsumedLastTick(),
  80.  
  81.         cool_p1    = 100 / self.reactor1.getCoolantAmountMax() * self.reactor1.getCoolantAmount(),
  82.         steam_p1   = 100 / self.reactor1.getHotFluidAmountMax() * self.reactor1.getHotFluidAmount(),
  83.         csteam_p1  = self.reactor1.getHotFluidAmount(),
  84.         power_max1 = self.turbine1.getEnergyProducedLastTick(),
  85.         cool_max1  = self.reactor1.getCoolantAmountMax(),
  86.         cool_am1   = self.reactor1.getCoolantAmount(),
  87.  
  88.         energy1      = self.reactor1.getEnergyStored(),
  89.         energy_p1    = self.reactor1.getEnergyStored()/100000,
  90.         energy_tick1 = self.reactor1.getEnergyProducedLastTick(),
  91. --___________________
  92.         active2 = self.reactor2.getActive(),
  93.  
  94.         temp2   = self.reactor2.getCasingTemperature(),
  95.         waste2  = self.reactor2.getWasteAmount(),
  96.  
  97.         fuel2      = self.reactor2.getFuelAmount(),
  98.         fuel_max2  = self.reactor2.getFuelAmountMax(),
  99.         fuel_reac2 = self.reactor2.getFuelReactivity(),
  100.         fuel_temp2 = self.reactor2.getFuelTemperature(),
  101.         fuel_tick2 = self.reactor2.getFuelConsumedLastTick(),
  102.  
  103.         cool_p2    = 100 / self.reactor2.getCoolantAmountMax() * self.reactor2.getCoolantAmount(),
  104.         steam_p2   = 100 / self.reactor2.getHotFluidAmountMax() * self.reactor2.getHotFluidAmount(),
  105.         csteam_p2  = self.reactor2.getHotFluidAmount(),
  106.         power_max2 = self.turbine2.getEnergyProducedLastTick(),
  107.         cool_max2  = self.reactor2.getCoolantAmountMax(),
  108.         cool_am2   = self.reactor2.getCoolantAmount(),
  109.  
  110.         energy2      = self.reactor2.getEnergyStored(),
  111.         energy_p2    = self.reactor2.getEnergyStored()/100000,
  112.         energy_tick2 = self.reactor2.getEnergyProducedLastTick(),
  113. --___________________
  114.         active3 = self.reactor3.getActive(),
  115.  
  116.         temp3   = self.reactor3.getCasingTemperature(),
  117.         waste3  = self.reactor3.getWasteAmount(),
  118.  
  119.         fuel3      = self.reactor3.getFuelAmount(),
  120.         fuel_max3  = self.reactor3.getFuelAmountMax(),
  121.         fuel_reac3 = self.reactor3.getFuelReactivity(),
  122.         fuel_temp3 = self.reactor3.getFuelTemperature(),
  123.         fuel_tick3 = self.reactor3.getFuelConsumedLastTick(),
  124.  
  125.         cool_p3    = 100 / self.reactor3.getCoolantAmountMax() * self.reactor3.getCoolantAmount(),
  126.         steam_p3   = 100 / self.reactor3.getHotFluidAmountMax() * self.reactor3.getHotFluidAmount(),
  127.         csteam_p3  = self.reactor3.getHotFluidAmount(),
  128.         power_max3 = self.turbine3.getEnergyProducedLastTick(),
  129.         cool_max3  = self.reactor3.getCoolantAmountMax(),
  130.         cool_am3   = self.reactor3.getCoolantAmount(),
  131.  
  132.         energy3      = self.reactor3.getEnergyStored(),
  133.         energy_p3    = self.reactor3.getEnergyStored()/100000,
  134.         energy_tick3 = self.reactor3.getEnergyProducedLastTick(),
  135. --___________________
  136.         active4 = self.reactor4.getActive(),
  137.  
  138.         temp4   = self.reactor4.getCasingTemperature(),
  139.         waste4  = self.reactor4.getWasteAmount(),
  140.  
  141.         fuel4      = self.reactor4.getFuelAmount(),
  142.         fuel_max4  = self.reactor4.getFuelAmountMax(),
  143.         fuel_reac4 = self.reactor4.getFuelReactivity(),
  144.         fuel_temp4 = self.reactor4.getFuelTemperature(),
  145.         fuel_tick4 = self.reactor4.getFuelConsumedLastTick(),
  146.  
  147.         cool_p4    = 100 / self.reactor4.getCoolantAmountMax() * self.reactor4.getCoolantAmount(),
  148.         steam_p4   = 100 / self.reactor4.getHotFluidAmountMax() * self.reactor4.getHotFluidAmount(),
  149.         csteam_p4  = self.reactor4.getHotFluidAmount(),
  150.         power_max4 = self.turbine4.getEnergyProducedLastTick(),
  151.         cool_max4  = self.reactor4.getCoolantAmountMax(),
  152.         cool_am4   = self.reactor4.getCoolantAmount(),
  153.  
  154.         energy4      = self.reactor4.getEnergyStored(),
  155.         energy_p4    = self.reactor4.getEnergyStored()/100000,
  156.         energy_tick4 = self.reactor4.getEnergyProducedLastTick(),
  157. --___________________
  158.         active5 = self.reactor5.getActive(),
  159.  
  160.         temp5   = self.reactor5.getCasingTemperature(),
  161.         waste5  = self.reactor5.getWasteAmount(),
  162.  
  163.         fuel5      = self.reactor5.getFuelAmount(),
  164.         fuel_max5  = self.reactor5.getFuelAmountMax(),
  165.         fuel_reac5 = self.reactor5.getFuelReactivity(),
  166.         fuel_temp5 = self.reactor5.getFuelTemperature(),
  167.         fuel_tick5 = self.reactor5.getFuelConsumedLastTick(),
  168.  
  169.         cool_p5    = 100 / self.reactor5.getCoolantAmountMax() * self.reactor5.getCoolantAmount(),
  170.         steam_p5   = 100 / self.reactor5.getHotFluidAmountMax() * self.reactor5.getHotFluidAmount(),
  171.         csteam_p5  = self.reactor5.getHotFluidAmount(),
  172.         power_max5 = self.turbine5.getEnergyProducedLastTick(),
  173.         cool_max5  = self.reactor5.getCoolantAmountMax(),
  174.         cool_am5   = self.reactor5.getCoolantAmount(),
  175.  
  176.         energy5      = self.reactor5.getEnergyStored(),
  177.         energy_p5    = self.reactor5.getEnergyStored()/100000,
  178.         energy_tick5 = self.reactor5.getEnergyProducedLastTick(),
  179. --___________________
  180.         active6 = self.reactor6.getActive(),
  181.  
  182.         temp6   = self.reactor6.getCasingTemperature(),
  183.         waste6  = self.reactor6.getWasteAmount(),
  184.  
  185.         fuel6      = self.reactor6.getFuelAmount(),
  186.         fuel_max6  = self.reactor6.getFuelAmountMax(),
  187.         fuel_reac6 = self.reactor6.getFuelReactivity(),
  188.         fuel_temp6 = self.reactor6.getFuelTemperature(),
  189.         fuel_tick6 = self.reactor6.getFuelConsumedLastTick(),
  190.  
  191.         cool_p6    = 100 / self.reactor6.getCoolantAmountMax() * self.reactor6.getCoolantAmount(),
  192.         steam_p6   = 100 / self.reactor6.getHotFluidAmountMax() * self.reactor6.getHotFluidAmount(),
  193.         csteam_p6  = self.reactor6.getHotFluidAmount(),
  194.         power_max6 = self.turbine6.getEnergyProducedLastTick(),
  195.         cool_max6  = self.reactor6.getCoolantAmountMax(),
  196.         cool_am6   = self.reactor6.getCoolantAmount(),
  197.  
  198.         energy6      = self.reactor6.getEnergyStored(),
  199.         energy_p6    = self.reactor6.getEnergyStored()/100000,
  200.         energy_tick6 = self.reactor6.getEnergyProducedLastTick(),
  201. --___________________
  202.         active7 = self.reactor7.getActive(),
  203.  
  204.         temp7   = self.reactor7.getCasingTemperature(),
  205.         waste7  = self.reactor7.getWasteAmount(),
  206.  
  207.         fuel7      = self.reactor7.getFuelAmount(),
  208.         fuel_max7  = self.reactor7.getFuelAmountMax(),
  209.         fuel_reac7 = self.reactor7.getFuelReactivity(),
  210.         fuel_temp7 = self.reactor7.getFuelTemperature(),
  211.         fuel_tick7 = self.reactor7.getFuelConsumedLastTick(),
  212.  
  213.         cool_p7    = 100 / self.reactor7.getCoolantAmountMax() * self.reactor7.getCoolantAmount(),
  214.         steam_p7   = 100 / self.reactor7.getHotFluidAmountMax() * self.reactor7.getHotFluidAmount(),
  215.         csteam_p7  = self.reactor7.getHotFluidAmount(),
  216.         power_max7 = self.turbine7.getEnergyProducedLastTick(),
  217.         cool_max7  = self.reactor7.getCoolantAmountMax(),
  218.         cool_am7   = self.reactor7.getCoolantAmount(),
  219.  
  220.         energy7      = self.reactor7.getEnergyStored(),
  221.         energy_p7    = self.reactor7.getEnergyStored()/100000,
  222.         energy_tick7 = self.reactor7.getEnergyProducedLastTick(),
  223. --___________________
  224.         active8 = self.reactor8.getActive(),
  225.  
  226.         temp8   = self.reactor8.getCasingTemperature(),
  227.         waste8  = self.reactor8.getWasteAmount(),
  228.  
  229.         fuel8      = self.reactor8.getFuelAmount(),
  230.         fuel_max8  = self.reactor8.getFuelAmountMax(),
  231.         fuel_reac8 = self.reactor8.getFuelReactivity(),
  232.         fuel_temp8 = self.reactor8.getFuelTemperature(),
  233.         fuel_tick8 = self.reactor8.getFuelConsumedLastTick(),
  234.  
  235.         cool_p8    = 100 / self.reactor8.getCoolantAmountMax() * self.reactor8.getCoolantAmount(),
  236.         steam_p8   = 100 / self.reactor8.getHotFluidAmountMax() * self.reactor8.getHotFluidAmount(),
  237.         csteam_p8  = self.reactor8.getHotFluidAmount(),
  238.         power_max8 = self.turbine8.getEnergyProducedLastTick(),
  239.         cool_max8  = self.reactor8.getCoolantAmountMax(),
  240.         cool_am8   = self.reactor8.getCoolantAmount(),
  241.  
  242.         energy8      = self.reactor8.getEnergyStored(),
  243.         energy_p8    = self.reactor8.getEnergyStored()/100000,
  244.         energy_tick8 = self.reactor8.getEnergyProducedLastTick()
  245.     };
  246.     WasteSum = self.info.waste1 + self.info.waste2 + self.info.waste3 + self.info.waste4 + self.info.waste5 + self.info.waste6 + self.info.waste7 + self.info.waste8;
  247.  
  248.     FuelSum = self.info.fuel_tick1 + self.info.fuel_tick2 + self.info.fuel_tick3 + self.info.fuel_tick4 + self.info.fuel_tick5 + self.info.fuel_tick6 + self.info.fuel_tick7 + self.info.fuel_tick8;
  249.  
  250.     steam_sum = self.info.csteam_p8 + self.info.csteam_p7 + self.info.csteam_p6 + self.info.csteam_p5 + self.info.csteam_p4 + self.info.csteam_p3 + self.info.csteam_p2 + self.info.csteam_p1;
  251.  
  252.     power_sum = self.info.power_max8 + self.info.power_max7 + self.info.power_max6 + self.info.power_max5 + self.info.power_max4 + self.info.power_max3 + self.info.power_max2 + self.info.power_max1 ;
  253.  
  254.         rednet.broadcast(textutils.serialize(self.info),self.protocole);
  255.  
  256.  
  257. end
  258.  
  259. function BRServer:show()
  260.     local kiby = function ( i ,s )
  261.         local k = 0;
  262.         while ( i >= 1000 ) do
  263.             k = k+1; i = i/1000;
  264.         end
  265.         local suf = {[0] = "", [1] = "k", [2] = "M", [3] = "G", [4] = "T", [5] = "E"};
  266.         if ( k>5 ) then
  267.             suf[k] = "{"..k.."}";
  268.         end
  269.         return string.format("%i %s%s", i, suf[k], s );
  270.     end
  271.  
  272.     self.turn = self.turn ~= nil and self.turn + 1 or 1;
  273.     term.current().setBackgroundColor( colors.gray );
  274.     term.current().clear();
  275.  
  276.     local b,a = term.current().getSize();
  277.     local p = {[0]="-",[1]="/",[2]="|",[3]="\\"};
  278.     UI.rectangle( term.current(), 1,1,b,1, self.info.active and colors.blue or colors.orange );
  279.     UI.print.center( term.current(), 1, "BigReactor Server", colors.white );
  280.     UI.print.right( term.current(), 1, p[math.fmod(self.turn,4)], colors.white );
  281.  
  282.     for i,monitor in pairs(self.monitors) do
  283.         local w,h = monitor.getSize();
  284.         monitor.setBackgroundColor(colors.black);
  285.         monitor.clear();
  286.  
  287.         UI.rectangle( monitor, 1,1,w,1, colors.blue );
  288.  
  289.   UI.print.center(monitor, 1, "REACTOR OVERVIEW", colors.white);
  290.  
  291.         UI.progress_bar( monitor, w-15, 3, 1, h-6, self.info.cool_p1, colors.gray, colors.lightBlue );
  292.         UI.progress_bar( monitor, w-13, 3, 1, h-6, self.info.cool_p2, colors.gray, colors.lightBlue );
  293.         UI.progress_bar( monitor, w-11, 3, 1, h-6, self.info.cool_p3, colors.gray, colors.lightBlue );
  294.         UI.progress_bar( monitor, w-9, 3, 1, h-6, self.info.cool_p4, colors.gray, colors.lightBlue );
  295.         UI.progress_bar( monitor, w-7, 3, 1, h-6, self.info.cool_p5, colors.gray, colors.lightBlue );
  296.         UI.progress_bar( monitor, w-5, 3, 1, h-6, self.info.cool_p6, colors.gray, colors.lightBlue );
  297.         UI.progress_bar( monitor, w-3, 3, 1, h-6, self.info.cool_p7, colors.gray, colors.lightBlue );
  298.         UI.progress_bar( monitor, w-1, 3, 1, h-6, self.info.cool_p8, colors.gray, colors.lightBlue );
  299.  
  300.                 UI.progress_bar( monitor, w-34, 3, 1, h-6, self.info.steam_p1, colors.gray, colors.orange );
  301.                 UI.progress_bar( monitor, w-32, 3, 1, h-6, self.info.steam_p2, colors.gray, colors.orange );
  302.                 UI.progress_bar( monitor, w-30, 3, 1, h-6, self.info.steam_p3, colors.gray, colors.orange );
  303.                 UI.progress_bar( monitor, w-28, 3, 1, h-6, self.info.steam_p4, colors.gray, colors.orange );
  304.                 UI.progress_bar( monitor, w-26, 3, 1, h-6, self.info.steam_p5, colors.gray, colors.orange );
  305.                 UI.progress_bar( monitor, w-24, 3, 1, h-6, self.info.steam_p6, colors.gray, colors.orange );
  306.                 UI.progress_bar( monitor, w-22, 3, 1, h-6, self.info.steam_p7, colors.gray, colors.orange );
  307.                 UI.progress_bar( monitor, w-20, 3, 1, h-6, self.info.steam_p8, colors.gray, colors.orange );
  308.  
  309.  
  310.  
  311.         UI.print.title( monitor, 3, 2, 23, colors.gray, "FUEL", colors.white );
  312.         monitor.setBackgroundColor( colors.black );
  313.  
  314.         UI.print.left( monitor, 5,"1-A:" , colors.lightGray, 1);
  315.         UI.print.left( monitor, 6,"1-B:" , colors.lightGray, 1);
  316.         UI.print.left( monitor, 7,"2-A:" , colors.lightGray, 1);
  317.         UI.print.left( monitor, 8,"2-B:" , colors.lightGray, 1);
  318.         UI.print.left( monitor, 9,"3-A:" , colors.lightGray, 1);
  319.         UI.print.left( monitor, 10,"3-B:" , colors.lightGray, 1);
  320.         UI.print.left( monitor, 11,"4-A:" , colors.lightGray, 1);
  321.         UI.print.left( monitor, 12,"4-B:" , colors.lightGray, 1);
  322.         UI.print.left( monitor, 15,"SUM:" , colors.lightGray, 1);
  323.  
  324.         UI.print.left( monitor, 5, string.format("%i ml/t",math.floor(self.info.fuel_tick1*1000)), colors.orange, 8);
  325.         UI.print.left( monitor, 6, string.format("%i ml/t",math.floor(self.info.fuel_tick2*1000)), colors.orange, 8);
  326.         UI.print.left( monitor, 7, string.format("%i ml/t",math.floor(self.info.fuel_tick3*1000)), colors.orange, 8);
  327.         UI.print.left( monitor, 8, string.format("%i ml/t",math.floor(self.info.fuel_tick4*1000)), colors.orange, 8);
  328.         UI.print.left( monitor, 9, string.format("%i ml/t",math.floor(self.info.fuel_tick5*1000)), colors.orange, 8);
  329.         UI.print.left( monitor, 10, string.format("%i ml/t",math.floor(self.info.fuel_tick6*1000)), colors.orange, 8);
  330.         UI.print.left( monitor, 11, string.format("%i ml/t",math.floor(self.info.fuel_tick7*1000)), colors.orange, 8);
  331.         UI.print.left( monitor, 12, string.format("%i ml/t",math.floor(self.info.fuel_tick8*1000)), colors.orange, 8);
  332.         UI.print.left( monitor, 13, "_____________________", colors.lightGray, 1);
  333.         UI.print.left( monitor, 15, string.format("%i ml/t",math.floor(FuelSum*1000)), colors.red, 7);
  334.  
  335.         UI.print.left( monitor, 5, string.format("%i",self.info.fuel_reac1), colors.yellow, 17 )
  336.         UI.print.left( monitor, 6, string.format("%i",self.info.fuel_reac2), colors.yellow, 17 )
  337.         UI.print.left( monitor, 7, string.format("%i",self.info.fuel_reac3), colors.yellow, 17 )
  338.         UI.print.left( monitor, 8, string.format("%i",self.info.fuel_reac4), colors.yellow, 17 )
  339.         UI.print.left( monitor, 9, string.format("%i",self.info.fuel_reac5), colors.yellow, 17 )
  340.         UI.print.left( monitor, 10, string.format("%i",self.info.fuel_reac6), colors.yellow, 17 )
  341.         UI.print.left( monitor, 11, string.format("%i",self.info.fuel_reac7), colors.yellow, 17 )
  342.         UI.print.left( monitor, 12, string.format("%i",self.info.fuel_reac8), colors.yellow, 17 )
  343.  
  344.         UI.print.left( monitor, 5, "%", colors.yellow, 21 )
  345.         UI.print.left( monitor, 6, "%", colors.yellow, 21 )
  346.         UI.print.left( monitor, 7, "%", colors.yellow, 21 )
  347.         UI.print.left( monitor, 8, "%", colors.yellow, 21 )
  348.         UI.print.left( monitor, 9, "%", colors.yellow, 21 )
  349.         UI.print.left( monitor, 10, "%", colors.yellow, 21 )
  350.         UI.print.left( monitor, 11, "%", colors.yellow, 21 )
  351.         UI.print.left( monitor, 12, "%", colors.yellow, 21 )
  352.  
  353. --UI.print.left( monitor, 16, string.format("%i RF/t",math.floor(self.info.energy_tick)), colors.yellow, 9);
  354.  
  355.         UI.print.left( monitor, 17,"Current power production:" , colors.lightGray, 1);
  356.         UI.print.left( monitor, 18,"Current steam production:" , colors.lightGray, 1);
  357.         UI.print.right( monitor, 17,string.format("%i RF/t",math.floor(power_sum)) , colors.orange, w-39);
  358.         UI.print.right( monitor, 18,string.format("%i l/t",math.floor(steam_sum)) , colors.yellow, w-38);
  359.  
  360.     end
  361. end
  362.  
  363. function BRServer:wait()
  364.     os.sleep(1);
  365. end
  366.  
  367. local BRClient = BRControl:new{ inrange = false };
  368. function BRControl:init()
  369.     return self;
  370. end
  371.  
  372. function BRClient:tick() end
  373.  
  374. function BRClient:show()
  375.  
  376. end
  377.  
  378. function BRClient:wait()
  379.     local s, m, p;
  380.     if ( self.inrange ) then
  381.         s, m, p = rednet.receive( self.protocol, 5 );
  382.     else
  383.         s, m, p = rednet.receive( self.protocol );
  384.     end
  385.     if ( m ~= nil ) then
  386.         self.inrange = true;
  387.         self:update( m );
  388.     else
  389.         self.inrange = false;
  390.     end
  391. end
  392.  
  393. function BRClient:update( m )
  394.     m = textutils.unserialize(m);
  395.  
  396.     self.info.active = m.active;
  397.  
  398.     self.info.temp   = m.temp;
  399.     self.info.ratio  = m.ratio;
  400.     self.info.waste  = m.waste;
  401.  
  402.     self.info.fuel      = m.fuel;
  403.     self.info.fuel_max  = m.fuel_max;
  404.     self.info.fuel_reac = m.fuel_reac;
  405.     self.info.fuel_temp = m.fuel_temp;
  406.     self.info.fuel_tick = m.fuel_tick;
  407.  
  408.  
  409.     self.info.energy      = m.energy;
  410.     self.info.energy_tick = m.energy_tick;
  411. end
  412.  
  413. UI = { print = {} };
  414. function UI.print.rich( wd, x, y, text, color )
  415.     local a, b = wd.getCursorPos();
  416.     wd.setTextColor( color );
  417.     wd.setCursorPos( x, y );
  418.     wd.write(text);
  419.     wd.setCursorPos( a, b );
  420. end
  421.  
  422. function UI.print.left( wd, line, text, color, offset )
  423.     UI.print.rich( wd, 1 + (offset or 0), line, text, color );
  424. end
  425.  
  426. function UI.print.center( wd, line, text, color, offset )
  427.     local w,h = wd.getSize();
  428.     UI.print.rich( wd, 1+(offset or 0) + w/2 - string.len(text)/2, line, text, color );
  429. end
  430.  
  431. function UI.print.right( wd, line, text, color, offset )
  432.     local w,h = wd.getSize();
  433.     UI.print.rich( wd,  1-(offset or 0) + w - string.len(text), line, text, color );
  434. end
  435.  
  436. function UI.print.title( wd, line, y1, y2, c1, title, c2)
  437.     local t = UI.rectangle( wd, y1, line, y2-y1, 1, c1 );
  438.     UI.print.center( t, 1, title, c2 );
  439. end
  440.  
  441. function UI.rectangle( wd, x, y, w, h, color )
  442.     if type( wd ) ~= "table" or
  443.     type( x ) ~= "number" or
  444.     type( y ) ~= "number" or
  445.     type( w ) ~= "number" or
  446.     type( h ) ~= "number" then
  447.         error( "Expected object, number, number, number, number, [boolean]", 2 )
  448.     end
  449.     local r = window.create( wd, x, y, w, h );
  450.     r.setBackgroundColor( color ); r.clear();
  451.     return r;
  452. end
  453.  
  454. function UI.bar( wd, x, y, w, h, c1, table, m )
  455.     local bar = UI.rectangle( wd, x, y, w, h, c1 );
  456.     local max, i = m or 100, ( h < w ) and 1 or 0;
  457.     for k, pi in pairs( table ) do
  458.         local p = pi.p / max;
  459.         if ( h < w ) then
  460.             UI.rectangle( bar, i, 1, p*w, h, pi.color );
  461.             i = i + p*w;
  462.         else
  463.             i = i + p*h;
  464.             UI.rectangle( bar, 1, 2+h-i, w, math.ceil(p*h), pi.color );
  465.         end
  466.     end
  467. end
  468.  
  469. function UI.progress_bar( wd, x, y, w, h, p, c1, c2 )
  470.     UI.bar( wd, x, y, w, h, c1, {{ ["p"] = p+5, ["color"] = c2 }});
  471. end
  472.  
  473. function UI.modal( wd, x, y, w, h, title )
  474.     if ( type(title) == "table" ) then
  475.         local head = window.create( wd, x, y, w, 3 );
  476.         head.setBackgroundColor( title.background );
  477.         head.clear(); head.setCursorPos(2,1);
  478.         UI.print.center( head, title.text, title.color );
  479.     end
  480.     return window.create(wd, x+3, y, w, h );
  481. end
  482.  
  483.  
  484. -- Main []
  485. local reactor = BRServer:new();
  486. for i,arg in pairs(args) do
  487.     if ( arg == "--client" ) then reactor = BRClient:new(); break; end;
  488. end
  489. for i,arg in pairs(args) do
  490.     for protocol in arg:gmatch( "-p:(.*)" ) do
  491.         reactor.protocole = protocol; break;
  492.     end
  493. end;
  494. reactor:run();
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement