mikebald

Bed Distance

Mar 12th, 2023
91
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1.  -- Startup Stuff
  2. m = peripheral.wrap("top")
  3. m.setTextScale(1.0 )
  4. -- End Startup Stuff
  5.  
  6. function SortJob(a, b)
  7.     return a["job"] < b["job"]
  8. end
  9.  
  10. function FirstName(name)
  11.     returnStr = ""
  12.     for i=1, #name do
  13.         local char = string.sub(name, i, i)
  14.         if (char == " " or i == 9) then
  15.             return returnStr
  16.         end
  17.         returnStr = returnStr .. char
  18.     end
  19.     return returnStr
  20. end
  21.  
  22. function SetJobColor(job)
  23.     local jobColors = {
  24.         ["Knight"] = colors.magenta,
  25.         ["Courier"] = colors.yellow,
  26.         ["Archer"] = colors.pink,
  27.         ["Builder"] = colors.brown,
  28.         ["Druid"] = colors.lime,
  29.         ["Enchanter"] = colors.purple,
  30.         ["Farmer"] = colors.cyan,
  31.         ["Student"] = colors.orange,
  32.         ["Researcher"] = colors.lightBlue        
  33.     }
  34.     if (jobColors[job] == nil) then
  35.         m.setTextColor(colors.blue)
  36.     else
  37.         m.setTextColor(jobColors[job])
  38.     end
  39. end
  40.  
  41. function GetBedDistance(bed, work)
  42.    local bedY = bed["z"]
  43.    local bedX = bed["x"]
  44.    local workY = work["z"]
  45.    local workX = work["x"]
  46.    local distanceY = math.abs(workY-bedY)
  47.    local distanceX = math.abs(workX-bedX)
  48.    local distance = math.sqrt(distanceX^2 + distanceY^2)
  49.    local mult = 10 -- # of decimal places
  50.    distance = math.floor(distance * mult + 0.5) / mult
  51.    
  52.    m.setTextColor(colors.green)
  53.    if (distance > 99) then
  54.        m.setTextColor(colors.red)
  55.    end
  56.    if (distance > 75 and distance < 100) then
  57.        m.setTextColor(colors.orange)        
  58.    end
  59.    if (distance > 50 and distance < 76) then
  60.        m.setTextColor(colors.yellow)
  61.    end
  62.    
  63.     m.write(distance )
  64. end
  65.  
  66.    
  67. function ShowCitizens()
  68.     m.clear()
  69.     local counter = 1
  70.     local row = 1
  71.     local column = 1
  72.      local citizens = colony.getCitizens()
  73.     table.sort(citizens, SortJob)
  74.     for _, citizen in ipairs(citizens) do
  75.         local status = citizen["status"]
  76.         local job = citizen["job"]
  77.         if (job == "Knight" or job == "Druid" or job == "Archer" or job == "Archer Squire") then
  78.             -- do Nothing
  79.         else
  80.             if (row > 40) then
  81.                row = 1
  82.                column = 42      
  83.             end
  84.             m.setCursorPos(column, row)
  85.             m.setTextColor(colors.blue)
  86.             m. write(FirstName(citizen["name"]))
  87.  
  88.             m.setCursorPos(column + 10, row)
  89.             SetJobColor(citizen["job"])
  90.             m.write(citizen["job"])
  91.  
  92.             m.setCursorPos(column + 25, row)
  93.             GetBedDistance(citizen["home"]["location"], citizen["work"]["location"])
  94.        
  95.             row = row + 1
  96.         end
  97.     end
  98. end
  99.  
  100.  while true do
  101.     ShowCitizens()
  102.     sleep(5)
  103. end
  104.  
  105.    
Add Comment
Please, Sign In to add comment