big refactoring
This commit is contained in:
+5
-54
@@ -65,12 +65,11 @@ do
|
||||
end)
|
||||
|
||||
do
|
||||
local mt = {__call = function(self, key) return self[key] end}
|
||||
public.set = modifier(function(table)
|
||||
local self = t
|
||||
for _, v in table do self[v] = true end
|
||||
recycle(table)
|
||||
return setmetatable(self, mt)
|
||||
public.set = modifier(function(t)
|
||||
local self = _m.t
|
||||
for _, v in t do self[v] = true end
|
||||
recycle(t)
|
||||
return self
|
||||
end)
|
||||
end
|
||||
|
||||
@@ -113,54 +112,6 @@ do
|
||||
end)
|
||||
end
|
||||
|
||||
function LOAD()
|
||||
import :_ 'util' 'gui'
|
||||
do
|
||||
local frame = CreateFrame('Frame', gui.name, UIParent)
|
||||
tinsert(UISpecialFrames, 'aux_frame1')
|
||||
gui.set_window_style(frame)
|
||||
gui.set_size(frame, 768, 447)
|
||||
frame:SetPoint('LEFT', 100, 0)
|
||||
frame:SetToplevel(true)
|
||||
frame:SetMovable(true)
|
||||
frame:EnableMouse(true)
|
||||
frame:SetClampedToScreen(true)
|
||||
frame:RegisterForDrag 'LeftButton'
|
||||
frame:SetScript('OnDragStart', function() this:StartMoving() end)
|
||||
frame:SetScript('OnDragStop', function() this:StopMovingOrSizing() end)
|
||||
frame:SetScript('OnShow', function() PlaySound 'AuctionWindowOpen' end)
|
||||
frame:SetScript('OnHide', function() PlaySound 'AuctionWindowClose' CloseAuctionHouse() end)
|
||||
frame.content = CreateFrame('Frame', nil, frame)
|
||||
frame.content:SetPoint('TOPLEFT', 4, -80)
|
||||
frame.content:SetPoint('BOTTOMRIGHT', -4, 35)
|
||||
frame:Hide()
|
||||
public.frame = frame
|
||||
end
|
||||
do
|
||||
local tabs = gui.tabs(frame, 'DOWN')
|
||||
tabs._on_select = on_tab_click
|
||||
for _, tab in _m.tabs do tabs:create_tab(tab.name) end
|
||||
function public.set_tab(id) tabs:select(id) end
|
||||
end
|
||||
do
|
||||
local btn = gui.button(frame, 16)
|
||||
btn:SetPoint('BOTTOMRIGHT', -6, 6)
|
||||
gui.set_size(btn, 65, 24)
|
||||
btn:SetText 'Close'
|
||||
btn:SetScript('OnClick', L(frame.Hide, frame))
|
||||
public.close_button = btn
|
||||
end
|
||||
do
|
||||
local btn = gui.button(frame, 16)
|
||||
btn:SetPoint('RIGHT', close_button, 'LEFT' , -5, 0)
|
||||
gui.set_size(btn, 65, 24)
|
||||
btn:SetText 'Default UI'
|
||||
btn:SetScript('OnClick',function()
|
||||
if AuctionFrame:IsVisible() then HideUIPanel(AuctionFrame) else ShowUIPanel(AuctionFrame) end
|
||||
end)
|
||||
end
|
||||
end
|
||||
|
||||
function public.log(...)
|
||||
local msg = '[aux]'
|
||||
for i=1,arg.n do msg = msg..' '..tostring(arg[i]) end
|
||||
|
||||
+2
-2
@@ -1,8 +1,8 @@
|
||||
module 'aux'
|
||||
|
||||
event_frame = CreateFrame 'Frame'
|
||||
listeners = {}
|
||||
threads = {}
|
||||
listeners = t
|
||||
threads = t
|
||||
public.thread_id = nil
|
||||
|
||||
function LOAD()
|
||||
|
||||
+8
-10
@@ -1,8 +1,6 @@
|
||||
module 'disenchant'
|
||||
|
||||
UNCOMMON = 2
|
||||
RARE = 3
|
||||
EPIC = 4
|
||||
UNCOMMON, RARE, EPIC = 2, 3, 4
|
||||
|
||||
do
|
||||
local data = {
|
||||
@@ -41,7 +39,7 @@ do
|
||||
end
|
||||
|
||||
function LOAD()
|
||||
armor = set-from
|
||||
ARMOR = set-from
|
||||
'INVTYPE_HEAD'
|
||||
'INVTYPE_NECK'
|
||||
'INVTYPE_SHOULDER'
|
||||
@@ -57,7 +55,7 @@ function LOAD()
|
||||
'INVTYPE_TRINKET'
|
||||
'INVTYPE_CLOAK'
|
||||
'INVTYPE_HOLDABLE'
|
||||
weapon = set-from
|
||||
WEAPON = set-from
|
||||
'INVTYPE_2HWEAPON'
|
||||
'INVTYPE_WEAPONMAINHAND'
|
||||
'INVTYPE_WEAPON'
|
||||
@@ -81,14 +79,14 @@ function public.value(slot, quality, level)
|
||||
end
|
||||
|
||||
function public.distribution(slot, quality, level)
|
||||
if not (armor(slot) or weapon(slot)) or level == 0 then
|
||||
return {}
|
||||
if not (ARMOR[slot] or WEAPON[slot]) or level == 0 then
|
||||
return tt
|
||||
end
|
||||
|
||||
local function p(probability_armor, probability_weapon)
|
||||
if armor(slot) then
|
||||
if ARMOR[slot] then
|
||||
return probability_armor
|
||||
elseif weapon(slot) then
|
||||
elseif WEAPON[slot] then
|
||||
return probability_weapon
|
||||
end
|
||||
end
|
||||
@@ -193,5 +191,5 @@ function public.distribution(slot, quality, level)
|
||||
return {{item_id=20725, min_quantity=1, max_quantity=2, probability=1}}
|
||||
end
|
||||
end
|
||||
return {}
|
||||
return tt
|
||||
end
|
||||
+3
-3
@@ -52,7 +52,7 @@ function SlashCmdList.AUX(command)
|
||||
local realm = GetCVar 'realmName'
|
||||
_g.aux_characters[realm] = _g.aux_characters[realm] or {}
|
||||
for i=3,getn(arguments) do
|
||||
local name = string.gsub(strlower(arguments[i]), '^%l', strupper)
|
||||
local name = gsub(strlower(arguments[i]), '^%l', strupper)
|
||||
if not _g.aux_characters[realm][name] then
|
||||
_g.aux_characters[realm][name] = true
|
||||
log('Character "'..name..'" added.')
|
||||
@@ -64,7 +64,7 @@ function SlashCmdList.AUX(command)
|
||||
return
|
||||
end
|
||||
for i=3,getn(arguments) do
|
||||
local name = string.gsub(strlower(arguments[i]), '^%l', strupper)
|
||||
local name = gsub(strlower(arguments[i]), '^%l', strupper)
|
||||
if _g.aux_characters[realm][name] then
|
||||
_g.aux_characters[realm][name] = nil
|
||||
log('Character "'..name..'" removed.')
|
||||
@@ -77,7 +77,7 @@ function SlashCmdList.AUX(command)
|
||||
tinsert(chars, name)
|
||||
end
|
||||
if getn(chars) > 0 then
|
||||
log('Your characters: "'..table.concat(chars, ', ')..'".')
|
||||
log('Your characters: "'..join(chars, ', ')..'".')
|
||||
else
|
||||
log 'You don\'t have any additional characters. To add your characters type "/aux chars add NAME1 NAME2 NAME3...".'
|
||||
end
|
||||
|
||||
+10
-9
@@ -1,21 +1,23 @@
|
||||
local type, setmetatable, setfenv, unpack, mask, _g = type, setmetatable, setfenv, unpack, bit.band, getfenv(0)
|
||||
local PRIVATE, PUBLIC, MUTABLE, PROPERTY, ACCESSOR, MUTATOR = 0, 1, 2, 4, 8, 16
|
||||
local error, modifier_error, property_error, immutable_error, collision_error, set_property, env_mt, interface_mt, declarator_mt, importer_mt
|
||||
local error, import_error, modifier_error, property_error, immutable_error, collision_error, set_property, env_mt, interface_mt, declarator_mt, importer_mt
|
||||
local _state, _modules = {}, {}
|
||||
function error(message, ...) return function() _g.error(format(message, unpack(arg))..'\n'..debugstack(3, 10, 0), 0) end end
|
||||
modifier_error = error 'Invalid modifiers.'
|
||||
property_error = error 'Accessor/Mutator must be function.'
|
||||
function immutable_error(key) return error('Field "%s" is immutable.', key) end
|
||||
function collision_error(key) return error('Field "%s" already exists.', key) end
|
||||
import_error, modifier_error, property_error = error 'Invalid modifiers.', error 'Invalid modifiers.', error 'Accessor/Mutator must be function.'
|
||||
immutable_error, collision_error = function(key) return error('Field "%s" is immutable.', key) end, function(key) return error('Field "%s" already exists.', key) end
|
||||
importer_mt = {__metatable=false}
|
||||
function importer_mt.__index(self, key) _state[self][self] = key; return self end
|
||||
function importer_mt.__index(self, key)
|
||||
if type(key) ~= 'string' then import_error() end
|
||||
_state[self][self] = key; return self
|
||||
end
|
||||
function importer_mt.__call(self, arg1, arg2)
|
||||
local name, state, module, alias
|
||||
name = arg2 or arg1
|
||||
if type(name) ~= 'string' then import_error() end
|
||||
state, module = _state[self], _modules[name]
|
||||
alias, state[self] = state[self] or name, nil
|
||||
if module then
|
||||
if alias == '_' then
|
||||
if alias == '' then
|
||||
for key, modifiers in module.metadata do
|
||||
if not state.metadata[key] and mask(PUBLIC, modifiers) ~= 0 then
|
||||
state.metadata[key], state.data[key], state.accessors[key], state.mutators[key] = modifiers, module.data[key], module.accessors[key], module.mutators[key]
|
||||
@@ -90,7 +92,6 @@ do
|
||||
end
|
||||
end
|
||||
end
|
||||
function INIT() end
|
||||
function module(name)
|
||||
if not _modules[name] then
|
||||
local state, accessors, mutators, env, interface, declarator, importer
|
||||
@@ -106,7 +107,7 @@ function module(name)
|
||||
data = {_g=_g, _m=env, _i=interface, import=importer}, accessors=accessors, mutators=mutators,
|
||||
}
|
||||
_modules[name], _state[env], _state[interface], _state[declarator], _state[importer] = state, state, state, state, state
|
||||
setfenv(INIT, env); INIT()
|
||||
importer [''] (ADDON)
|
||||
end
|
||||
setfenv(2, _modules[name].env)
|
||||
end
|
||||
@@ -315,7 +315,7 @@ function create_frames()
|
||||
if filters then
|
||||
tinsert(_g.aux_favorite_searches, 1, {
|
||||
filter_string = search_box:GetText(),
|
||||
prettified = table.concat(map(filters, function(filter) return filter.prettified end), ';'),
|
||||
prettified = join(map(filters, function(filter) return filter.prettified end), ';'),
|
||||
})
|
||||
end
|
||||
update_search_listings()
|
||||
|
||||
+22
-22
@@ -1,13 +1,6 @@
|
||||
module 'util'
|
||||
|
||||
function public.copy(t)
|
||||
local copy = {}
|
||||
for k, v in t do copy[k] = v end
|
||||
table.setn(t, getn(t))
|
||||
return copy
|
||||
end
|
||||
|
||||
public.join = _g.table.concat
|
||||
public.join = _g.join
|
||||
|
||||
function public.replicate(count, value)
|
||||
if count > 0 then return value, replicate(count - 1, value) end
|
||||
@@ -112,9 +105,16 @@ do
|
||||
end
|
||||
|
||||
function public.expand(array, ...)
|
||||
local table = {}
|
||||
for i=1,arg.n do table[arg[i]] = array[i] end
|
||||
return table
|
||||
local t = t
|
||||
for i=1,arg.n do t[arg[i]] = array[i] end
|
||||
return t
|
||||
end
|
||||
|
||||
function public.copy(t)
|
||||
local copy = _m.t
|
||||
for k, v in t do copy[k] = v end
|
||||
table.setn(t, getn(t))
|
||||
return copy
|
||||
end
|
||||
|
||||
function public.select(i, ...)
|
||||
@@ -135,13 +135,13 @@ function public.key(value, t)
|
||||
end
|
||||
|
||||
function public.keys(t)
|
||||
local ks = {}
|
||||
local ks = _m.t
|
||||
for k in t do tinsert(ks, k) end
|
||||
return ks
|
||||
end
|
||||
|
||||
function public.values(t)
|
||||
local vs = {}
|
||||
local vs = _m.t
|
||||
for _, v in t do tinsert(vs, v) end
|
||||
return vs
|
||||
end
|
||||
@@ -185,20 +185,20 @@ function public.all(xs, p)
|
||||
return true
|
||||
end
|
||||
|
||||
function public.filter(xs, p)
|
||||
local ys = {}
|
||||
for k, x in xs do
|
||||
function public.filter(t0, p)
|
||||
local t = t
|
||||
for k, x in t0 do
|
||||
if p(x, k) then
|
||||
ys[k] = x
|
||||
t[k] = x
|
||||
end
|
||||
end
|
||||
return ys
|
||||
return t
|
||||
end
|
||||
|
||||
function public.map(xs, f)
|
||||
local ys = {}
|
||||
for k, x in xs do ys[k] = f(x, k) end
|
||||
return ys
|
||||
function public.map(t0, f)
|
||||
local t = t
|
||||
for k, x in t0 do t[k] = f(x, k) end
|
||||
return t
|
||||
end
|
||||
|
||||
function public.trim(str)
|
||||
|
||||
+1
-1
@@ -166,7 +166,7 @@ function public.bid_update(auction_record)
|
||||
auction_record.unit_blizzard_bid = auction_record.blizzard_bid / auction_record.aux_quantity
|
||||
auction_record.unit_bid_price = auction_record.bid_price / auction_record.aux_quantity
|
||||
auction_record.high_bidder = 1
|
||||
auction_record.search_signature = table.concat({auction_record.item_id, auction_record.suffix_id, auction_record.enchant_id, auction_record.start_price, auction_record.buyout_price, auction_record.bid_price, auction_record.aux_quantity, auction_record.duration, 1, _g.aux_ignore_owner and (is_player(auction_record.owner) and 0 or 1) or (auction_record.owner or '?')}, ':')
|
||||
auction_record.search_signature = join({auction_record.item_id, auction_record.suffix_id, auction_record.enchant_id, auction_record.start_price, auction_record.buyout_price, auction_record.bid_price, auction_record.aux_quantity, auction_record.duration, 1, _g.aux_ignore_owner and (is_player(auction_record.owner) and 0 or 1) or (auction_record.owner or '?')}, ':')
|
||||
end
|
||||
|
||||
function public.set_tooltip(itemstring, owner, anchor)
|
||||
|
||||
Reference in New Issue
Block a user