Advertisement
PHOBOSS

SPAGET2

Apr 6th, 2022 (edited)
53
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. local component = require("component")
  2. local event = require("event")
  3. local serialization= require("serialization")
  4. local computer= require("computer")
  5. local thread= require("thread")
  6. local term= require("term")
  7. local modem = component.modem
  8. --local Tn = component.navigation
  9. local Tr = component.radar
  10. local QueensChannel = 2412
  11. local QueensResponseChannel = 2402
  12. local SoldiersChannel = 2413
  13. local SoldiersResponseChannel = 2403
  14.  
  15. local drone_is_queen = true
  16.  
  17. --custom libraries
  18. local s_utils = require("swarm_utilities")
  19. local q_firmware = require("queen_firmware")
  20. local flightform = require("flight_formation")
  21.  
  22. modem.open(QueensResponseChannel)
  23.  
  24. modem.open(SoldiersResponseChannel)
  25. modem.broadcast(SoldiersChannel,"Sr= component.proxy(component.list('radar')())")
  26. modem.broadcast(SoldiersChannel,"Sn= component.proxy(component.list('navigation')())")
  27. modem.broadcast(SoldiersChannel,"Sd= component.proxy(component.list('drone')())")
  28. modem.broadcast(SoldiersChannel,"function sleep(timeout) checkArg(1, timeout, 'number', 'nil') local deadline = computer.uptime() + (timeout or 0) repeat computer.pullSignal(deadline - computer.uptime()) until computer.uptime() >= deadline end")
  29.  
  30.  
  31. flightformation={}
  32. ffbook={flightformation}
  33. ffbook[2]={}
  34. ffbook[3]={}
  35. form1 = {{3,2,-2},{-3,2,-2},{0,2,3}}
  36. form2 = {{-2,2,2},{2,2,2}}
  37. form3 = {{-2,2,-2},{2,2,-2}}
  38. fbook={form1,form2,form3}
  39. dynamic_fbook = fbook
  40.  
  41.  
  42. print("Bingus28")
  43.  
  44.  
  45. local gpsChannel = 2
  46. local trgChannel = 2472
  47.  
  48.  
  49. function gpsBroadcast(gps_port)
  50. while true do
  51. modem.broadcast(gps_port,"gps",0,0,0)
  52. --print("broadcasting..")
  53. os.sleep()
  54. end
  55. end
  56.  
  57. local gpsThread
  58. local sat_mode = false
  59. function toggleGPSBroadCast(channel) --**********************--
  60. sat_mode = not sat_mode
  61. print("sat_mode: "..tostring(sat_mode))
  62. if sat_mode then
  63. print("creating GPS Thread..")
  64. gpsThread = thread.create(function(port) gpsBroadcast(port) end,channel)
  65. else
  66. gpsThread:kill()
  67. end
  68. end
  69.  
  70. function getPlayerCoord(e_name)
  71. checkArg(1,e_name,'string','nil')
  72. for k,v in ipairs(Tr.getPlayers()) do
  73. if v.name == e_name then
  74. return {v.x,v.y,v.z},v.distance
  75. end
  76. end
  77. return {0,0,0},0
  78. end
  79.  
  80. function trgBroadcast(e_name)
  81. while true do
  82. local player_co = getPlayerCoord(e_name)
  83. player_co = s_utils.vec_trunc(player_co)
  84. modem.broadcast(trgChannel,"trg",player_co[1],player_co[2],player_co[3])
  85. --print("broadcasting target..")
  86. os.sleep()
  87. end
  88. end
  89. local trgThread
  90. local send_trg = false
  91. function toggleTargetBroadCast(target) --**********************--
  92. send_trg = not send_trg
  93. print("send_trg: "..tostring(send_trg))
  94. if send_trg then
  95. print("creating TRG Thread..")
  96. trgThread = thread.create(function(t) trgBroadcast(t) end,target)
  97. else
  98. trgThread:kill()
  99. end
  100. end
  101.  
  102. function printSwarmStats()
  103. term.clear()
  104. flightform.printDronePool(drone_is_queen)
  105. flightform.printFFAssignment(ffbook)
  106. end
  107.  
  108. while true do
  109. local cmd=io.read()
  110. if not cmd then return end
  111. if(cmd == "F") then
  112. q_firmware.broadcastFirmWare(QueensChannel)
  113. os.sleep(0.5)
  114. elseif(cmd == "G") then
  115. modem.broadcast(QueensChannel,"stop")
  116. modem.broadcast(QueensChannel,"go","ph0")
  117. os.sleep(0.5)
  118. elseif(cmd == "B") then
  119. modem.broadcast(QueensChannel,"stop")
  120. modem.broadcast(QueensChannel,"bzz","ph0")
  121. os.sleep(0.5)
  122. elseif(cmd == "M") then
  123. modem.broadcast(QueensChannel,"stop")
  124. modem.broadcast(QueensChannel,"move","",0,3,0)
  125. os.sleep(0.5)
  126.  
  127.  
  128. elseif(cmd == "P") then --refreshFormation
  129. flightform.populatePool(QueensChannel,drone_is_queen)
  130. printSwarmStats()
  131. os.sleep(0.5)
  132.  
  133. elseif(cmd == "T") then
  134. flightform.formFF(ffbook[1],dynamic_fbook[1],QueensChannel,drone_is_queen)
  135. flightform.formUP("ph0",ffbook[1],dynamic_fbook[1],QueensChannel)
  136. printSwarmStats()
  137. os.sleep(0.5)
  138. elseif(cmd == "Q") then
  139. flightform.formFF(ffbook[2],dynamic_fbook[2],QueensChannel,drone_is_queen)
  140. flightform.formFF(ffbook[3],dynamic_fbook[3],QueensChannel,drone_is_queen)
  141. flightform.formUP("ph0",ffbook[2],dynamic_fbook[2],QueensChannel)
  142. flightform.formUP("ph0",ffbook[3],dynamic_fbook[3],QueensChannel)
  143. printSwarmStats()
  144. os.sleep(0.5)
  145. elseif(cmd == "E") then
  146. for i = 1,#ffbook do
  147. flightform.breakFormation(ffbook[i],dynamic_fbook[i],QueensChannel,drone_is_queen)
  148. end
  149. printSwarmStats()
  150. os.sleep(0.5)
  151. elseif(cmd == "R") then --refreshFormation
  152. for i = 1,#ffbook do
  153. flightform.refreshFFT(ffbook[i],dynamic_fbook[i],QueensChannel,drone_is_queen)
  154. end
  155. printSwarmStats()
  156. os.sleep(0.5)
  157. elseif(cmd == "PRINT") then --printGroup
  158. printSwarmStats()
  159. os.sleep(0.5)
  160.  
  161. elseif(cmd == "GPS") then
  162. toggleGPSBroadCast(gpsChannel)
  163. os.sleep(0.5)
  164. elseif(cmd == "TRG") then
  165. toggleTargetBroadCast("ph0")
  166. os.sleep(0.5)
  167.  
  168. elseif(cmd == "S") then
  169. modem.broadcast(QueensChannel,"stop")
  170. event.ignore("modem_message",msg_handler)
  171. os.sleep(0.5)
  172. elseif(cmd == "HUSH") then
  173. modem.broadcast(QueensChannel,"HUSH")
  174. os.sleep(0.5)
  175.  
  176. elseif(cmd == "EXIT") then
  177. flightform.closeFlighFormComms()
  178. if gpsThread then
  179. gpsThread:kill()
  180. end
  181. if trgThread then
  182. trgThread:kill()
  183. end
  184. os.exit()
  185. else
  186. modem.broadcast(QueensChannel,cmd)
  187. end
  188. end
  189.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement