Remove redundant classes & added some Position methods.
This commit is contained in:
parent
99b1ddf44c
commit
ce9e443c60
|
@ -1,44 +0,0 @@
|
|||
--[[
|
||||
@Authors: Ben Dol (BeniS)
|
||||
@Details: CallbackEvent class shell for callback events
|
||||
]]
|
||||
|
||||
CallbackEvent = newclass("CallbackEvent")
|
||||
|
||||
CallbackEvent.create = function(id, callback)
|
||||
local event = CallbackEvent.internalCreate()
|
||||
|
||||
event.id = id
|
||||
event.callback = callback
|
||||
|
||||
return event
|
||||
end
|
||||
|
||||
-- gets/sets
|
||||
|
||||
--@RequiredBy:Queue
|
||||
function CallbackEvent:getId()
|
||||
return self.id
|
||||
end
|
||||
|
||||
--@RequiredBy:Queue
|
||||
function CallbackEvent:setId(id)
|
||||
self.id = id
|
||||
end
|
||||
|
||||
--@RequiredBy:Queue
|
||||
function CallbackEvent:getCallback()
|
||||
return self.callback
|
||||
end
|
||||
|
||||
--@RequiredBy:Queue
|
||||
function CallbackEvent:setCallback(callback)
|
||||
self.callback = callback
|
||||
end
|
||||
|
||||
-- logic
|
||||
|
||||
--@RequiredBy:Queue
|
||||
function CallbackEvent:start()
|
||||
-- Do nothing by default
|
||||
end
|
|
@ -1,70 +0,0 @@
|
|||
--[[
|
||||
@Authors: Ben Dol (BeniS)
|
||||
@Details: Queue class for event queuing.
|
||||
]]
|
||||
|
||||
Queue = newclass("Queue")
|
||||
|
||||
Queue.create = function(callback)
|
||||
local obj = Queue.internalCreate()
|
||||
|
||||
obj.queue = {}
|
||||
obj.callback = callback
|
||||
|
||||
return obj
|
||||
end
|
||||
|
||||
-- gets/sets
|
||||
|
||||
function Queue:getQueue()
|
||||
return self.queue
|
||||
end
|
||||
|
||||
function Queue:setQueue(queue)
|
||||
self.queue = queue
|
||||
end
|
||||
|
||||
function Queue:getCallback()
|
||||
return self.callback
|
||||
end
|
||||
|
||||
function Queue:setCallback(callback)
|
||||
self.callback = callback
|
||||
end
|
||||
|
||||
-- logic
|
||||
|
||||
function Queue:add(item)
|
||||
table.insert(self.queue, item)
|
||||
end
|
||||
|
||||
function Queue:start()
|
||||
local compiled = function() self:finished() end
|
||||
for k,event in pairs(self.queue) do
|
||||
print("Compiling " .. tostring(event:getId()))
|
||||
local snip = compiled
|
||||
compiled = function()
|
||||
local realCallback = event:getCallback()
|
||||
event:setCallback(function()
|
||||
print("Event compiled callback called")
|
||||
realCallback()
|
||||
-- next queue item
|
||||
snip()
|
||||
end)
|
||||
print("Event started from queue chain")
|
||||
event:start()
|
||||
end
|
||||
end
|
||||
-- Start the queue chain
|
||||
print("Start compiled chain")
|
||||
compiled()
|
||||
end
|
||||
|
||||
function Queue:finished()
|
||||
print("Queue:finished")
|
||||
local done = function()
|
||||
local callback = self:getCallback()
|
||||
if callback then callback() end
|
||||
end
|
||||
done()
|
||||
end
|
|
@ -23,3 +23,15 @@ end
|
|||
function Position.isInRange(pos1, pos2, xRange, yRange)
|
||||
return math.abs(pos1.x-pos2.x) <= xRange and math.abs(pos1.y-pos2.y) <= yRange and pos1.z == pos2.z;
|
||||
end
|
||||
|
||||
function Position.isValid(pos)
|
||||
return not (pos.x == 65535 and pos.y == 65535 and pos.z == 255)
|
||||
end
|
||||
|
||||
function Position.distance(pos1, pos2)
|
||||
return math.sqrt(math.pow((pos2.x - pos1.x), 2) + math.pow((pos2.y - pos1.y), 2))
|
||||
end
|
||||
|
||||
function Position.manhattanDistance(pos1, pos2)
|
||||
return math.abs(pos2.x - pos1.x) + math.abs(pos2.y - pos1.y)
|
||||
end
|
Loading…
Reference in New Issue