Advertisement
BillBodkin

Untitled

Mar 7th, 2023 (edited)
790
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 2.92 KB | None | 0 0
  1. local monitorSide = "top";
  2. --local serverID = 6;
  3. local m = peripheral.wrap(monitorSide)
  4. m.setTextScale(0.5)
  5. --
  6. term.redirect(m)
  7.  
  8. --Monitor Width and Length
  9. local mW, mL = term.getSize()
  10. --rednet.open("top")
  11.  
  12. local function round(num)
  13.     return math.floor(num + 0.5)
  14. end
  15.  
  16. --Getting The Track Layout Data
  17. local packet = {
  18.     ["type"] = "railwayDisplayRequestAllData"
  19. }
  20. local type = ""
  21. local message = {
  22.     type = "railwayDisplayAllData",
  23.     signals = {
  24.       W1 = {
  25.         connectsTo = {
  26.           W2 = {
  27.             trackSpine = {},
  28.           },
  29.         },
  30.         x = 562,
  31.         z = -551,
  32.       },
  33.       N1 = {
  34.         connectsTo = {
  35.           S1 = {
  36.             trackSpine = {},
  37.           },
  38.         },
  39.         x = 568,
  40.         z = -555,
  41.       },
  42.       E1 = {
  43.         connectsTo = {
  44.           W1 = {
  45.             trackSpine = {},
  46.           },
  47.         },
  48.         x = 561,
  49.         z = -547,
  50.       },
  51.       W2 = {
  52.         connectsTo = {
  53.           E2 = {
  54.             trackSpine = {},
  55.           },
  56.         },
  57.         x = 581,
  58.         z = -551,
  59.       },
  60.       S1 = {
  61.         connectsTo = {
  62.           W2 = {
  63.             trackSpine = {},
  64.           },
  65.         },
  66.         x = 573,
  67.         z = -554,
  68.       },
  69.       E2 = {
  70.         connectsTo = {
  71.           E1 = {
  72.             trackSpine = {},
  73.           },
  74.           N1 = {
  75.             trackSpine = {},
  76.           },
  77.         },
  78.         x = 580,
  79.         z = -547,
  80.       },
  81.     },
  82.   }
  83. --[[
  84. while false and type ~= "railwayDisplayAllData" do
  85.     rednet.send(serverID, packet, "railwayDisplay")
  86.     local id, m = rednet.receive("railwayDisplay")
  87.     type = m["type"]
  88.     message = m
  89.     os.sleep(1)
  90. end
  91. ]]--
  92.  
  93. local xRange = 0;
  94. local zRange = 0;
  95. local smallestX = nil
  96. local largestX = nil
  97. local smallestZ = nil
  98. local largestZ = nil
  99.  
  100.  
  101. for k,v in pairs(message["signals"]) do
  102.     if(smallestX == nil or v.x < smallestX) then
  103.         smallestX = v.x
  104.     elseif(largestX == nil or v.x > largestX) then
  105.         largestX = v.x
  106.     end
  107.     if(smallestZ == nil or v.z < smallestZ) then
  108.         smallestZ = v.z
  109.     elseif(largestZ == nil or v.z > largestZ) then
  110.         largestZ = v.z
  111.     end
  112. end
  113.  
  114. xRange = math.abs(largestX - smallestX)
  115. zRange = math.abs(largestZ - smallestZ)
  116.  
  117. print("monitor width: " .. mW)
  118. print("monitor height: " .. mL)
  119.  
  120. print("X Range: " .. xRange)
  121. print("Z Range: " .. zRange)
  122. local xScale = mW / xRange
  123. local zScale = mL / zRange
  124. print("X Scale: " .. xScale)
  125. print("Z Scale: " .. zScale)
  126. --textutils.slowPrint(textutils.serialise(message),10)
  127.  
  128. local function worldToScreenPos(x, z)
  129.     return {
  130.         ["x"] = round(((x - smallestX) * xScale)),
  131.         ["z"] = round(((z - smallestZ) * zScale))
  132.     }
  133. end
  134.  
  135. term.clear()
  136.  
  137. for k,v in pairs(message["signals"]) do
  138.     local pixel = worldToScreenPos(v.x, v.z)
  139.     --print(k .. ": " .. textutils.serialize(pixel))
  140.     paintutils.drawPixel(pixel.x, pixel.z, colors.red)
  141. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement