forked from Bastion/Bastion
parent
7e0327bb78
commit
29e19b931f
@ -0,0 +1,153 @@ |
|||||||
|
local Tinkr, Bastion = ... |
||||||
|
|
||||||
|
local List = {} |
||||||
|
List.__index = List |
||||||
|
|
||||||
|
function List:New() |
||||||
|
local self = setmetatable({}, List) |
||||||
|
self._list = {} |
||||||
|
return self |
||||||
|
end |
||||||
|
|
||||||
|
function List:push(value) |
||||||
|
table.insert(self._list, value) |
||||||
|
end |
||||||
|
|
||||||
|
function List:pop() |
||||||
|
return table.remove(self._list) |
||||||
|
end |
||||||
|
|
||||||
|
function List:peek() |
||||||
|
return self._list[#self._list] |
||||||
|
end |
||||||
|
|
||||||
|
function List:count() |
||||||
|
return #self._list |
||||||
|
end |
||||||
|
|
||||||
|
function List:clear() |
||||||
|
self._list = {} |
||||||
|
end |
||||||
|
|
||||||
|
function List:contains(value) |
||||||
|
for _, v in ipairs(self._list) do |
||||||
|
if v == value then |
||||||
|
return true |
||||||
|
end |
||||||
|
end |
||||||
|
return false |
||||||
|
end |
||||||
|
|
||||||
|
function List:remove(value) |
||||||
|
for i, v in ipairs(self._list) do |
||||||
|
if v == value then |
||||||
|
table.remove(self._list, i) |
||||||
|
return true |
||||||
|
end |
||||||
|
end |
||||||
|
return false |
||||||
|
end |
||||||
|
|
||||||
|
function List:each(callback) |
||||||
|
for _, v in ipairs(self._list) do |
||||||
|
if callback(v) then |
||||||
|
break |
||||||
|
end |
||||||
|
end |
||||||
|
end |
||||||
|
|
||||||
|
function List:map(callback) |
||||||
|
local newList = List.new() |
||||||
|
for _, v in ipairs(self._list) do |
||||||
|
newList:push(callback(v)) |
||||||
|
end |
||||||
|
return newList |
||||||
|
end |
||||||
|
|
||||||
|
function List:filter(callback) |
||||||
|
local newList = List.new() |
||||||
|
for _, v in ipairs(self._list) do |
||||||
|
if callback(v) then |
||||||
|
newList:push(v) |
||||||
|
end |
||||||
|
end |
||||||
|
return newList |
||||||
|
end |
||||||
|
|
||||||
|
function List:reduce(callback, initialValue) |
||||||
|
local result = initialValue |
||||||
|
for _, v in ipairs(self._list) do |
||||||
|
result = callback(result, v) |
||||||
|
end |
||||||
|
return result |
||||||
|
end |
||||||
|
|
||||||
|
function List:find(callback) |
||||||
|
for _, v in ipairs(self._list) do |
||||||
|
if callback(v) then |
||||||
|
return v |
||||||
|
end |
||||||
|
end |
||||||
|
return nil |
||||||
|
end |
||||||
|
|
||||||
|
function List:findIndex(callback) |
||||||
|
for i, v in ipairs(self._list) do |
||||||
|
if callback(v) then |
||||||
|
return i |
||||||
|
end |
||||||
|
end |
||||||
|
return nil |
||||||
|
end |
||||||
|
|
||||||
|
function List:sort(callback) |
||||||
|
table.sort(self._list, callback) |
||||||
|
end |
||||||
|
|
||||||
|
function List:reverse() |
||||||
|
local newList = List.new() |
||||||
|
for i = #self._list, 1, -1 do |
||||||
|
newList:push(self._list[i]) |
||||||
|
end |
||||||
|
return newList |
||||||
|
end |
||||||
|
|
||||||
|
function List:clone() |
||||||
|
local newList = List.new() |
||||||
|
for _, v in ipairs(self._list) do |
||||||
|
newList:push(v) |
||||||
|
end |
||||||
|
return newList |
||||||
|
end |
||||||
|
|
||||||
|
function List:concat(list) |
||||||
|
local newList = List.new() |
||||||
|
for _, v in ipairs(self._list) do |
||||||
|
newList:push(v) |
||||||
|
end |
||||||
|
for _, v in ipairs(list._list) do |
||||||
|
newList:push(v) |
||||||
|
end |
||||||
|
return newList |
||||||
|
end |
||||||
|
|
||||||
|
function List:join(separator) |
||||||
|
local result = "" |
||||||
|
for i, v in ipairs(self._list) do |
||||||
|
result = result .. v |
||||||
|
if i < #self._list then |
||||||
|
result = result .. separator |
||||||
|
end |
||||||
|
end |
||||||
|
return result |
||||||
|
end |
||||||
|
|
||||||
|
function List:toString() |
||||||
|
return self:join(", ") |
||||||
|
end |
||||||
|
|
||||||
|
function List:__tostring() |
||||||
|
return self:toString() |
||||||
|
end |
||||||
|
|
||||||
|
return List |
@ -0,0 +1,50 @@ |
|||||||
|
local Tinkr, Bastion = ... |
||||||
|
|
||||||
|
local ObjectManager = {} |
||||||
|
ObjectManager.__index = ObjectManager |
||||||
|
|
||||||
|
function ObjectManager:New() |
||||||
|
local self = setmetatable({}, ObjectManager) |
||||||
|
|
||||||
|
self._objects = {} |
||||||
|
|
||||||
|
self.enemies = Bastion.List:New() |
||||||
|
self.friends = Bastion.List:New() |
||||||
|
self.activeEnemies = Bastion.List:New() |
||||||
|
self.explosives = Bastion.List:New() |
||||||
|
|
||||||
|
return self |
||||||
|
end |
||||||
|
|
||||||
|
function ObjectManager:Refresh() |
||||||
|
self.enemies:clear() |
||||||
|
self.friends:clear() |
||||||
|
self.activeEnemies:clear() |
||||||
|
self.explosives:clear() |
||||||
|
|
||||||
|
local objects = Objects() |
||||||
|
|
||||||
|
for _, object in pairs(objects) do |
||||||
|
if ObjectType(object) == 5 or ObjectType(object) == 6 then |
||||||
|
local unit = Bastion.UnitManager:GetObject(ObjectGUID(object)) |
||||||
|
if not unit then |
||||||
|
unit = Bastion.Unit:New(object) |
||||||
|
Bastion.UnitManager:SetObject(unit) |
||||||
|
end |
||||||
|
|
||||||
|
if unit:GetID() == 120651 then |
||||||
|
self.explosives:push(unit) |
||||||
|
elseif unit:IsPlayer() and unit:IsInParty() then |
||||||
|
self.friends:push(unit) |
||||||
|
elseif unit:IsEnemy() then |
||||||
|
self.enemies:push(unit) |
||||||
|
|
||||||
|
if unit:IsAffectingCombat() then |
||||||
|
self.activeEnemies:push(unit) |
||||||
|
end |
||||||
|
end |
||||||
|
end |
||||||
|
end |
||||||
|
end |
||||||
|
|
||||||
|
return ObjectManager |
Loading…
Reference in new issue