114 lines
3.0 KiB
Lua
114 lines
3.0 KiB
Lua
--------------------------------------------------------------------------------
|
|
-- S-Frames: Bag Module Core (Bags/Core.lua)
|
|
-- Entry point, registered on PLAYER_LOGIN
|
|
--------------------------------------------------------------------------------
|
|
|
|
SFrames.Bags.Core = {}
|
|
|
|
-- Ensure default config exists
|
|
if not SFrames.Config.Bags then
|
|
SFrames.Config.Bags = {
|
|
enable = true,
|
|
columns = 10,
|
|
bagSpacing = 0,
|
|
scale = 1,
|
|
sellGrey = true,
|
|
bankColumns = 12,
|
|
bankSpacing = 0,
|
|
bankScale = 1,
|
|
}
|
|
end
|
|
|
|
local function EnsureDB()
|
|
if not SFramesDB then SFramesDB = {} end
|
|
if not SFramesDB.Bags then
|
|
SFramesDB.Bags = {}
|
|
for k, v in pairs(SFrames.Config.Bags) do
|
|
SFramesDB.Bags[k] = v
|
|
end
|
|
end
|
|
-- Fill missing keys with defaults
|
|
for k, v in pairs(SFrames.Config.Bags) do
|
|
if SFramesDB.Bags[k] == nil then
|
|
SFramesDB.Bags[k] = v
|
|
end
|
|
end
|
|
end
|
|
|
|
local function HookBagFunctions()
|
|
-- Save original functions
|
|
local _OpenAllBags = OpenAllBags
|
|
local _CloseAllBags = CloseAllBags
|
|
local _ToggleBag = ToggleBag
|
|
local _ToggleBackpack = ToggleBackpack
|
|
local _ToggleKeyRing = ToggleKeyRing
|
|
SFrames.Bags._origToggleKeyRing = _ToggleKeyRing
|
|
|
|
OpenAllBags = function()
|
|
if SFramesDB.Bags.enable then
|
|
SFrames.Bags.Container:Open()
|
|
else
|
|
_OpenAllBags()
|
|
end
|
|
end
|
|
|
|
CloseAllBags = function()
|
|
if SFramesDB.Bags.enable then
|
|
SFrames.Bags.Container:Close()
|
|
else
|
|
_CloseAllBags()
|
|
end
|
|
end
|
|
|
|
ToggleBag = function(id)
|
|
if id == -2 or id == (KEYRING_CONTAINER or -2) then
|
|
_ToggleBag(id)
|
|
return
|
|
end
|
|
if SFramesDB.Bags.enable then
|
|
SFrames.Bags.Container:Toggle()
|
|
else
|
|
_ToggleBag(id)
|
|
end
|
|
end
|
|
|
|
ToggleBackpack = function()
|
|
if SFramesDB.Bags.enable then
|
|
SFrames.Bags.Container:Toggle()
|
|
else
|
|
_ToggleBackpack()
|
|
end
|
|
end
|
|
|
|
-- Keyring: always use original keyring window
|
|
ToggleKeyRing = function()
|
|
_ToggleKeyRing()
|
|
end
|
|
end
|
|
|
|
function SFrames.Bags.Core:Initialize()
|
|
SFrames:Print("Debug: Bags Core Initializing...")
|
|
EnsureDB()
|
|
if not SFramesDB.Bags.enable then
|
|
SFrames:Print("Debug: Bags are disabled in config.")
|
|
return
|
|
end
|
|
|
|
SFrames:Print("Debug: Hooking functions...")
|
|
HookBagFunctions()
|
|
|
|
SFrames:Print("Debug: Init Container...")
|
|
SFrames.Bags.Container:Initialize()
|
|
|
|
SFrames:Print("Debug: Init Bank...")
|
|
if SFrames.Bags.Bank then SFrames.Bags.Bank:Initialize() end
|
|
|
|
SFrames:Print("Debug: Init Features...")
|
|
SFrames.Bags.Features:Initialize()
|
|
|
|
SFrames:Print("Debug: Bags Init Complete.")
|
|
end
|
|
|
|
-- NOTE: Initialize is called from Core.lua SFrames:Initialize() on PLAYER_LOGIN.
|
|
-- Do NOT register PLAYER_LOGIN here to avoid double initialization.
|