diff --git a/core.lua b/core.lua index 462e29d..50233be 100644 --- a/core.lua +++ b/core.lua @@ -102,8 +102,6 @@ function Aux.on_load() end end - Aux.cache.on_load() - Aux.persistence.on_load() Aux.tooltip.on_load() Aux.search_frame.on_load() Aux.post_frame.on_load() diff --git a/modules/cache.lua b/modules/cache.lua index c90d1bf..ec251a9 100644 --- a/modules/cache.lua +++ b/modules/cache.lua @@ -1,7 +1,8 @@ -local private, public = {}, {} -Aux.cache = public +local m, private, public = Aux:module'cache' local MIN_ITEM_ID, MAX_ITEM_ID = 1, 30000 +local items_schema = {'record', '#', {name='string'}, {quality='number'}, {level='number'}, {class='string'}, {subclass='string'}, {slot='string'}, {max_stack='number'}, {texture='string'}} +local merchant_buy_schema = {'record', '#', {unit_price='number'}, {limited='boolean'} } aux_items = {} aux_item_ids = {} @@ -10,18 +11,15 @@ aux_merchant_buy = {} aux_merchant_sell = {} aux_characters = {} -local items_schema = {'record', '#', {name='string'}, {quality='number'}, {level='number'}, {class='string'}, {subclass='string'}, {slot='string'}, {max_stack='number'}, {texture='string'}} -local merchant_buy_schema = {'record', '#', {unit_price='number'}, {limited='boolean'}} +function public.LOAD() + m.scan_wdb() -function public.on_load() - private.scan_wdb() + Aux.control.event_listener('MERCHANT_SHOW', m.on_merchant_show):start() + Aux.control.event_listener('MERCHANT_CLOSED', m.on_merchant_closed):start() + Aux.control.event_listener('MERCHANT_UPDATE', m.on_merchant_update):start() + Aux.control.event_listener('BAG_UPDATE', m.on_bag_update):start() - Aux.control.event_listener('MERCHANT_SHOW', private.on_merchant_show):start() - Aux.control.event_listener('MERCHANT_CLOSED', private.on_merchant_closed):start() - Aux.control.event_listener('MERCHANT_UPDATE', private.on_merchant_update):start() - Aux.control.event_listener('BAG_UPDATE', private.on_bag_update):start() - - CreateFrame('Frame', nil, MerchantFrame):SetScript('OnUpdate', private.merchant_on_update) + CreateFrame('Frame', nil, MerchantFrame):SetScript('OnUpdate', m.merchant_on_update) Aux.control.event_listener('NEW_AUCTION_UPDATE', function() local info = Aux.info.auction_sell_item() @@ -37,8 +35,8 @@ do local sell_scan_countdown, incomplete_buy_data function private.on_merchant_show() - private.merchant_sell_scan() - incomplete_buy_data = not private.merchant_buy_scan() + m.merchant_sell_scan() + incomplete_buy_data = not m.merchant_buy_scan() end function private.on_merchant_closed() @@ -48,7 +46,7 @@ do function private.on_merchant_update() if incomplete_buy_data then - incomplete_buy_data = not private.merchant_buy_scan() + incomplete_buy_data = not m.merchant_buy_scan() end end @@ -61,7 +59,7 @@ do function private.merchant_on_update() if sell_scan_countdown == 0 then sell_scan_countdown = nil - private.merchant_sell_scan() + m.merchant_sell_scan() elseif sell_scan_countdown then sell_scan_countdown = sell_scan_countdown - 1 end diff --git a/util/persistence.lua b/util/persistence.lua index fb1d986..0613f79 100644 --- a/util/persistence.lua +++ b/util/persistence.lua @@ -1,19 +1,22 @@ -local private, public = {}, {} -Aux.persistence = public +local m, private, public = Aux:module'persistence' aux_datasets = {} -function public.on_load() - Aux.control.as_soon_as(function() private.faction = UnitFactionGroup('player') return private.faction end, Aux.util.pass) - private.realm = GetCVar('realmName') -end +do + local realm, faction -function private.get_dataset_key() - return private.realm..'|'..private.faction + function public.LOAD() + Aux.control.as_soon_as(function() faction = UnitFactionGroup('player') return faction end, Aux.util.pass) + realm = GetCVar('realmName') + end + + function private.get_dataset_key() + return realm..'|'..faction + end end function public.load_dataset() - local dataset_key = private.get_dataset_key() + local dataset_key = m.get_dataset_key() aux_datasets[dataset_key] = aux_datasets[dataset_key] or {} return aux_datasets[dataset_key] end @@ -26,9 +29,9 @@ function public.read(schema, str) elseif schema == 'number' then return tonumber(str) elseif type(schema) == 'table' and schema[1] == 'list' then - return public.read_list(schema, str) + return m.read_list(schema, str) elseif type(schema) == 'table' and schema[1] == 'record' then - return public.read_record(schema, str) + return m.read_record(schema, str) else error('Unknown schema.') end @@ -42,9 +45,9 @@ function public.write(schema, obj) elseif schema == 'number' then return obj and tostring(obj) or '' elseif type(schema) == 'table' and schema[1] == 'list' then - return public.write_list(schema, obj) + return m.write_list(schema, obj) elseif type(schema) == 'table' and schema[1] == 'record' then - return public.write_record(schema, obj) + return m.write_record(schema, obj) else error('Unknown schema.') end @@ -59,7 +62,7 @@ function public.read_list(schema, str) local element_type = schema[3] local parts = Aux.util.split(str, separator) return Aux.util.map(parts, function(part) - return public.read(element_type, part) + return m.read(element_type, part) end) end @@ -67,7 +70,7 @@ function public.write_list(schema, list) local separator = schema[2] local element_type = schema[3] local parts = Aux.util.map(list, function(element) - return public.write(element_type, element) + return m.write(element_type, element) end) return Aux.util.join(parts, separator) end @@ -78,7 +81,7 @@ function public.read_record(schema, str) local parts = Aux.util.split(str, separator) for i=3,getn(schema) do local key, type = next(schema[i]) - record[key] = public.read(type, parts[i - 2]) + record[key] = m.read(type, parts[i - 2]) end return record end @@ -88,7 +91,7 @@ function public.write_record(schema, record) local parts = {} for i=3,getn(schema) do local key, type = next(schema[i]) - tinsert(parts, public.write(type, record[key])) + tinsert(parts, m.write(type, record[key])) end return Aux.util.join(parts, separator) end