Advertisement
Guest User

Untitled

a guest
Jan 19th, 2013
984
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. -- This program is for OpenCCSensors 0.1.2
  2.  
  3. os.loadAPI("ocs/apis/sensor")
  4. local sides = rs.getSides();
  5.  
  6. local width = 0
  7. local height = 0
  8. local monitor = nil
  9.  
  10. local function findPeripheralSide(type)
  11.   for key, side in pairs(sides) do
  12.     if peripheral.isPresent(side) and peripheral.getType(side) == type then
  13.       return side;
  14.     end
  15.   end
  16. end
  17.  
  18. local function findMonitor()
  19.   local side = findPeripheralSide("monitor")
  20.   if side then
  21.     return peripheral.wrap(side)
  22.   end
  23. end
  24.  
  25. local function findSensor()
  26.   local side = findPeripheralSide("sensor")
  27.   if side then
  28.     return sensor.wrap(side)
  29.   end
  30. end
  31.  
  32. local function getColorIndex(x, y)
  33.   return ((x-1) + (y-1) * 128) + 1
  34. end
  35.  
  36. local function drawPixel(x, y, color)
  37.   monitor.setCursorPos(x, y)
  38.   monitor.setBackgroundColor(color)
  39.   monitor.write(" ")
  40. end
  41.  
  42. local function displayMapColors(colors)
  43.   for x=1, width do
  44.     for y=1, height do
  45.       local index = getColorIndex(x, y)
  46.       local color = colors[index]
  47.       drawPixel(x, y, color)
  48.     end
  49.   end
  50. end
  51.  
  52. local function findPossibleTargets(sen)
  53.   local maps = {};
  54.   for key, data in pairs(sen.getTargets()) do
  55.     local details = sen.getTargetDetails(key)
  56.     for slot, slotd in pairs(details.Slots) do
  57.       if slotd.Name == "item.map" then
  58.         table.insert(maps, { target = key, slot = slot })      
  59.       end
  60.     end
  61.   end
  62.   return maps;
  63. end
  64.  
  65. while true do
  66.  
  67.   monitor = findMonitor();
  68.   monitor.setTextScale(0.5)
  69.   if monitor == nil then
  70.     error("no monitor attached")
  71.   end
  72.  
  73.   width, height = monitor.getSize()
  74.  
  75.   local inventory = findSensor()
  76.   if inventory == nil then
  77.     error("no sensor attached")
  78.   end
  79.  
  80.   local possibleMaps = findPossibleTargets(inventory)
  81.   local firstMap = table.remove(possibleMaps, 1)
  82.  
  83.   if firstMap ~= nil then
  84.  
  85.     local width, height = monitor.getSize()
  86.    
  87.     local mapData = inventory.sensorCardCall("getMapData", firstMap.target, firstMap.slot)
  88.    
  89.     displayMapColors(mapData.Colors, offsetX, offsetY)
  90.    
  91.     monitor.setCursorPos(1, height)
  92.     monitor.setBackgroundColor(colors.black)
  93.     monitor.setTextColor(colors.white)
  94.     monitor.write(mapData.MapName)
  95.  
  96.   end
  97.  
  98.   sleep(5)
  99.  
  100. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement