View difference between Paste ID: pNtTS0MB and Zrvdtv1d
SHOW: | | - or go back to the newest paste.
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)
89+
    displayMapColors(mapData.Colors, offsetX, offsetY)
90
    
91
    monitor.setCursorPos(1, height)
92
    monitor.setBackgroundColor(colors.black)
93-
  sleep(0.1)
93+
    monitor.setTextColor(colors.white)
94
    monitor.write(mapData.MapName)
95
  
96
  end
97
  
98
  sleep(5)
99
100
end