mirror of
https://github.com/Kiritow/OpenComputerScripts.git
synced 2024-03-22 13:10:46 +08:00
Initial Commit
This commit is contained in:
commit
76ec7e212d
53
SignReader.lua
Normal file
53
SignReader.lua
Normal file
|
@ -0,0 +1,53 @@
|
|||
require("class")
|
||||
local sides=require("sides")
|
||||
|
||||
SignReader=class("SignReader")
|
||||
|
||||
function SignReader:ctor(sign)
|
||||
self.s=sign
|
||||
end
|
||||
|
||||
function SignReader:countSigns()
|
||||
local cnt=0
|
||||
if(self:get(sides.north) ~= nil) then cnt=cnt+1 end
|
||||
if(self:get(sides.south) ~= nil) then cnt=cnt+1 end
|
||||
if(self:get(sides.east) ~= nil) then cnt=cnt+1 end
|
||||
if(self:get(sides.west) ~= nil) then cnt=cnt+1 end
|
||||
if(self:get(sides.up) ~= nil) then cnt=cnt+1 end
|
||||
if(self:get(sides.down) ~= nil) then cnt=cnt+1 end
|
||||
return cnt
|
||||
end
|
||||
|
||||
function SignReader:getFirstSignSide()
|
||||
if(self:get(sides.north)~=nil) then return sides.north end
|
||||
if(self:get(sides.south)~=nil) then return sides.south end
|
||||
if(self:get(sides.east)~=nil) then return sides.east end
|
||||
if(self:get(sides.west)~=nil) then return sides.west end
|
||||
if(self:get(sides.up)~=nil) then return sides.up end
|
||||
if(self:get(sides.down)~=nil) then return sides.down end
|
||||
return -1
|
||||
end
|
||||
|
||||
function SignReader:get(side)
|
||||
if(side == nil) then -- Try Smart Choice
|
||||
if(self:countSigns() == 1) then
|
||||
return self.s.getValue(self:getFirstSignSide())
|
||||
else
|
||||
return nil -- Cannot choose
|
||||
end
|
||||
else
|
||||
return self.s.getValue(side)
|
||||
end
|
||||
end
|
||||
|
||||
function SignReader:set(val,side)
|
||||
if(side == nil) then -- Try Smart Choice
|
||||
if(self:countSigns() == 1) then
|
||||
return self.s.setValue(self:getFirstSignSide(),val)
|
||||
else
|
||||
return nil -- Cannot choose
|
||||
end
|
||||
else
|
||||
return self.s.setValue(side,val)
|
||||
end
|
||||
end
|
75
class.lua
Normal file
75
class.lua
Normal file
|
@ -0,0 +1,75 @@
|
|||
function clone(object)
|
||||
local lookup_table = {}
|
||||
local function _copy(object)
|
||||
if type(object) ~= "table" then
|
||||
return object
|
||||
elseif lookup_table[object] then
|
||||
return lookup_table[object]
|
||||
end
|
||||
local new_table = {}
|
||||
lookup_table[object] = new_table
|
||||
for key, value in pairs(object) do
|
||||
new_table[_copy(key)] = _copy(value)
|
||||
end
|
||||
return setmetatable(new_table, getmetatable(object))
|
||||
end
|
||||
return _copy(object)
|
||||
end
|
||||
|
||||
function class(classname, super)
|
||||
local superType = type(super)
|
||||
local cls
|
||||
if superType ~= "function" and superType ~= "table" then
|
||||
superType = nil
|
||||
super = nil
|
||||
end
|
||||
if superType == "function" or (super and super.__ctype == 1) then
|
||||
cls = {}
|
||||
if superType == "table" then
|
||||
-- copy fields from super
|
||||
for k, v in pairs(super) do
|
||||
cls[k] = v
|
||||
end
|
||||
cls.__create = super.__create
|
||||
cls.super = super
|
||||
else
|
||||
cls.__create = super
|
||||
cls.ctor = function()
|
||||
end
|
||||
end
|
||||
cls.__cname = classname
|
||||
cls.__ctype = 1
|
||||
|
||||
function cls.new(...)
|
||||
local instance = cls.__create(...)
|
||||
for k, v in pairs(cls) do
|
||||
instance[k] = v
|
||||
end
|
||||
instance.class = cls
|
||||
instance:ctor(...)
|
||||
return instance
|
||||
end
|
||||
else
|
||||
if super then
|
||||
cls = {}
|
||||
setmetatable(cls, {__index = super})
|
||||
cls.super = super
|
||||
else
|
||||
cls = {ctor = function()
|
||||
end}
|
||||
end
|
||||
|
||||
cls.__cname = classname
|
||||
cls.__ctype = 2 -- lua
|
||||
cls.__index = cls
|
||||
|
||||
function cls.new(...)
|
||||
local instance = setmetatable({}, cls)
|
||||
instance.class = cls
|
||||
instance:ctor(...)
|
||||
return instance
|
||||
end
|
||||
end
|
||||
|
||||
return cls
|
||||
end
|
55
queue.lua
Normal file
55
queue.lua
Normal file
|
@ -0,0 +1,55 @@
|
|||
require("class")
|
||||
|
||||
Queue = class("Queue")
|
||||
|
||||
function Queue:reset()
|
||||
self.size = 0
|
||||
self.bus = {}
|
||||
self.headindex = -1
|
||||
self.tailindex = -1
|
||||
end
|
||||
|
||||
function Queue:ctor()
|
||||
self:reset()
|
||||
end
|
||||
|
||||
function Queue:empty()
|
||||
return self.size == 0
|
||||
end
|
||||
|
||||
function Queue:push(val)
|
||||
if (self:empty()) then
|
||||
self.headindex = 0
|
||||
self.tailindex = 0
|
||||
self.size = 1
|
||||
self.bus[0] = val
|
||||
else
|
||||
self.tailindex = self.tailindex + 1
|
||||
self.bus[self.tailindex] = val
|
||||
self.size = self.size + 1
|
||||
end
|
||||
end
|
||||
|
||||
function Queue:top()
|
||||
if(self:empty()) then
|
||||
return nil
|
||||
else
|
||||
return self.bus[self.headindex]
|
||||
end
|
||||
end
|
||||
|
||||
function Queue:pop()
|
||||
if (self:empty()) then
|
||||
return nil
|
||||
else
|
||||
ret = self.bus[self.headindex]
|
||||
self.bus[self.headindex] = nil
|
||||
self.size = self.size - 1
|
||||
if (self:empty()) then
|
||||
self:reset()
|
||||
else
|
||||
self.headindex = self.headindex + 1
|
||||
end
|
||||
return ret
|
||||
end
|
||||
end
|
47
util.lua
Normal file
47
util.lua
Normal file
|
@ -0,0 +1,47 @@
|
|||
local component=require("component")
|
||||
|
||||
function getTableSize(t)
|
||||
local cnt=0
|
||||
for k in pairs(t) do
|
||||
cnt=cnt+1
|
||||
end
|
||||
return cnt
|
||||
end
|
||||
|
||||
function isTableEmpty(t)
|
||||
return getTableSize(t) == 0
|
||||
end
|
||||
|
||||
function rawproxy(id)
|
||||
return component.proxy(id)
|
||||
end
|
||||
|
||||
function proxy(componentType,beginWith)
|
||||
local t=component.list(componentType)
|
||||
local sz=getTableSize(t)
|
||||
if(sz==0) then
|
||||
print("Query List is Empty")
|
||||
return nil
|
||||
elseif(sz==1) then
|
||||
for k in pairs(t) do
|
||||
return rawproxy(k)
|
||||
end
|
||||
else
|
||||
if(beginWith == nil) then
|
||||
print("No beginWith value")
|
||||
return nil
|
||||
end
|
||||
if(type(beginWith) ~= "string") then
|
||||
print("beginWith is not string")
|
||||
return nil
|
||||
end
|
||||
local bsz=string.len(beginWith)
|
||||
for k in pairs(t) do
|
||||
if(string.sub(k,1,bsz) == beginWith) then
|
||||
return rawproxy(k)
|
||||
end
|
||||
end
|
||||
print("Not found with beginWith value")
|
||||
return nil
|
||||
end
|
||||
end
|
Loading…
Reference in New Issue
Block a user