Move from SVN to GIT
This commit is contained in:
@@ -0,0 +1,56 @@
|
|||||||
|
package-as: MyBags
|
||||||
|
|
||||||
|
enable-nolib-creation: no
|
||||||
|
|
||||||
|
externals:
|
||||||
|
Libs/LibStub:
|
||||||
|
url: svn://svn.wowace.com/wow/libstub/mainline/trunk
|
||||||
|
tag: latest
|
||||||
|
Libs/CallbackHandler-1.0:
|
||||||
|
url: svn://svn.wowace.com/wow/callbackhandler/mainline/trunk/CallbackHandler-1.0
|
||||||
|
tag: latest
|
||||||
|
Libs/AceLocale-3.0:
|
||||||
|
url: svn://svn.wowace.com/wow/ace3/mainline/trunk/AceLocale-3.0
|
||||||
|
tag: latest
|
||||||
|
Libs/AceAddon-3.0:
|
||||||
|
url: svn://svn.wowace.com/wow/ace3/mainline/trunk/AceAddon-3.0
|
||||||
|
tag: latest
|
||||||
|
Libs/AceEvent-3.0:
|
||||||
|
url: svn://svn.wowace.com/wow/ace3/mainline/trunk/AceEvent-3.0
|
||||||
|
tag: latest
|
||||||
|
Libs/AceConsole-3.0:
|
||||||
|
url: svn://svn.wowace.com/wow/ace3/mainline/trunk/AceConsole-3.0
|
||||||
|
tag: latest
|
||||||
|
Libs/AceConfig-3.0:
|
||||||
|
url: svn://svn.wowace.com/wow/ace3/mainline/trunk/AceConfig-3.0
|
||||||
|
tag: latest
|
||||||
|
Libs/AceHook-3.0:
|
||||||
|
url: svn://svn.wowace.com/wow/ace3/mainline/trunk/AceHook-3.0
|
||||||
|
tag: latest
|
||||||
|
Libs/AceDB-3.0:
|
||||||
|
url: svn://svn.wowace.com/wow/ace3/mainline/trunk/AceDB-3.0
|
||||||
|
tag: latest
|
||||||
|
Libs/AceGUI-3.0:
|
||||||
|
url: svn://svn.wowace.com/wow/ace3/mainline/trunk/AceGUI-3.0
|
||||||
|
tag: latest
|
||||||
|
MyBagsCache/Libs/LibStub:
|
||||||
|
url: svn://svn.wowace.com/wow/libstub/mainline/trunk
|
||||||
|
tag: latest
|
||||||
|
MyBagsCache/Libs/CallbackHandler-1.0:
|
||||||
|
url: svn://svn.wowace.com/wow/callbackhandler/mainline/trunk/CallbackHandler-1.0
|
||||||
|
tag: latest
|
||||||
|
MyBagsCache/Libs/AceAddon-3.0:
|
||||||
|
url: svn://svn.wowace.com/wow/ace3/mainline/trunk/AceAddon-3.0
|
||||||
|
tag: latest
|
||||||
|
MyBagsCache/Libs/AceEvent-3.0:
|
||||||
|
url: svn://svn.wowace.com/wow/ace3/mainline/trunk/AceEvent-3.0
|
||||||
|
tag: latest
|
||||||
|
MyBagsCache/Libs/AceDB-3.0:
|
||||||
|
url: svn://svn.wowace.com/wow/ace3/mainline/trunk/AceDB-3.0
|
||||||
|
tag: latest
|
||||||
|
MyBagsCache/Libs/AceLocale-3.0:
|
||||||
|
url: svn://svn.wowace.com/wow/ace3/mainline/trunk/AceLocale-3.0
|
||||||
|
tag: latest
|
||||||
|
|
||||||
|
move-folders:
|
||||||
|
MyBags/MyBagsCache: MyBagsCache
|
||||||
@@ -0,0 +1,11 @@
|
|||||||
|
<Bindings>
|
||||||
|
<Binding name="MYINVENTORY" header="MYBAGSHEADER">
|
||||||
|
if MyInventory then MyInventory:Toggle() end
|
||||||
|
</Binding>
|
||||||
|
<Binding name="MYBANK">
|
||||||
|
if MyBank then MyBank:Toggle() end
|
||||||
|
</Binding>
|
||||||
|
<Binding name="MYEQUIPMENT">
|
||||||
|
if MyEquipment then MyEquipment:Toggle() end
|
||||||
|
</Binding>
|
||||||
|
</Bindings>
|
||||||
+17
@@ -0,0 +1,17 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<Ui xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.blizzard.com/wow/ui/" xsi:schemaLocation="http://www.blizzard.com/wow/ui/
|
||||||
|
..\FrameXML\UI.xsd">
|
||||||
|
<Script file="Libs\LibStub\LibStub.lua"/>
|
||||||
|
<Include file="Libs\CallbackHandler-1.0\CallbackHandler-1.0.xml"/>
|
||||||
|
|
||||||
|
<!--Ace3 Libraries-->
|
||||||
|
<Include file="Libs\AceAddon-3.0\AceAddon-3.0.xml"/>
|
||||||
|
<Include file="Libs\AceEvent-3.0\AceEvent-3.0.xml"/>
|
||||||
|
<Include file="Libs\AceConsole-3.0\AceConsole-3.0.xml"/>
|
||||||
|
<Include file="Libs\AceLocale-3.0\AceLocale-3.0.xml"/>
|
||||||
|
<Include file="Libs\AceHook-3.0\AceHook-3.0.xml"/>
|
||||||
|
<Include file="Libs\AceDB-3.0\AceDB-3.0.xml"/>
|
||||||
|
<Include file="Libs\AceGUI-3.0\AceGUI-3.0.xml"/>
|
||||||
|
<Include file="Libs\AceConfig-3.0\AceConfig-3.0.xml"/>
|
||||||
|
|
||||||
|
</Ui>
|
||||||
@@ -0,0 +1,6 @@
|
|||||||
|
local L = LibStub("AceLocale-3.0"):GetLocale("MyBags")
|
||||||
|
|
||||||
|
BINDING_HEADER_MYBAGSHEADER = L["BINDING_HEADER_MYBAGSHEADER"]
|
||||||
|
BINDING_NAME_MYINVENTORY = L["BINDING_NAME_MYINVENTORY"]
|
||||||
|
BINDING_NAME_MYBANK= L["BINDING_NAME_MYBANK"]
|
||||||
|
BINDING_NAME_MYEQUIPMENT = L["BINDING_NAME_MYEQUIPMENT"]
|
||||||
@@ -0,0 +1,6 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<Ui xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.blizzard.com/wow/ui/" xsi:schemaLocation="http://www.blizzard.com/wow/ui/FrameXML\UI.xsd">
|
||||||
|
<Include file="enUS.lua"/>
|
||||||
|
|
||||||
|
<Include file="GlobalStrings.lua"/>
|
||||||
|
</Ui>
|
||||||
@@ -0,0 +1,37 @@
|
|||||||
|
local L = LibStub("AceLocale-3.0"):NewLocale("MyBags", "enUS", true)
|
||||||
|
|
||||||
|
if not L then return end
|
||||||
|
|
||||||
|
-- Global locales
|
||||||
|
L["ACE_TEXT_OF"] = "of";
|
||||||
|
L["CHARACTER_DELIMITOR"] = " of ";
|
||||||
|
L["SplitString must be passed a string as the first argument"] = "SplitString must be passed a string as the first argument";
|
||||||
|
|
||||||
|
--KEYBINDINGS
|
||||||
|
L["BINDING_HEADER_MYBAGSHEADER"] = "My Bags"
|
||||||
|
L["BINDING_NAME_MYINVENTORY"] = "Toggle MyInventory"
|
||||||
|
L["BINDING_NAME_MYBANK"] = "Toggle MyBank"
|
||||||
|
L["BINDING_NAME_MYEQUIPMENT"] = "Toggle MyEquipment"
|
||||||
|
|
||||||
|
L["ACEG_TEXT_AMMO"] = "Ammo";
|
||||||
|
L["ACEG_TEXT_QUIVER"] = "Quiver";
|
||||||
|
L["ACEG_TEXT_SOUL"] = "Soul Bag";
|
||||||
|
L["ACEG_TEXT_ENCHANT"] = "Enchanting Bag";
|
||||||
|
L["ACEG_TEXT_ENGINEER"] = "Engineering Bag";
|
||||||
|
L["ACEG_TEXT_GEM"] = "Gem Bag";
|
||||||
|
L["ACEG_TEXT_HERB"] = "Herb Bag";
|
||||||
|
L["ACEG_TEXT_MINING"] = "Mining Bag";
|
||||||
|
L["ACEG_TEXT_NOW_SET_TO"] = "is now set to";
|
||||||
|
L["ACEG_TEXT_DEFAULT"] = "default";
|
||||||
|
L["ACEG_DISPLAY_OPTION"] = "[|cfff5f530%s|r]";
|
||||||
|
L["ACE_CMD_REPORT_NO_VAL"] = "|cffc7c7c7no value|r"
|
||||||
|
L["ACE_CMD_RESULT"] = "|cffffff78%s:|r %s"
|
||||||
|
|
||||||
|
--Titles
|
||||||
|
L["MYBAGS_TITLE0"] = ""
|
||||||
|
L["MYBAGS_TITLE1"] = "%s's "
|
||||||
|
L["MYBAGS_TITLE2"] = "%s of %s's "
|
||||||
|
|
||||||
|
L["MYBAGS_SLOTS_FREE"] = "%d/%d Slots Free";
|
||||||
|
L["MYBAGS_SLOTS_USED"] = "%d/%d Slots Used";
|
||||||
|
|
||||||
+17
@@ -0,0 +1,17 @@
|
|||||||
|
## Interface: 50001
|
||||||
|
## Author: Ramble (modified by Isharra) (updated by thegabbert) (converted to Ace3 by Takika)
|
||||||
|
## Version: 51
|
||||||
|
## Title: MyBags |cff007FFF -Ace3-|r
|
||||||
|
## Notes: Complete Replacement for Inventory and Bank Bags.
|
||||||
|
## OptionalDeps: MyBagsCache, DataStore_Containers
|
||||||
|
## SavedVariables: MyInventoryDB, MyBankDB, MyEquipmentDB
|
||||||
|
|
||||||
|
Embeds.xml
|
||||||
|
|
||||||
|
Locals\Locals.xml
|
||||||
|
|
||||||
|
MyBagsCore\MyBags.xml
|
||||||
|
MyInventory\MyInventory.xml
|
||||||
|
MyBank\MyBank.xml
|
||||||
|
MyEquipment\MyEquipment.xml
|
||||||
|
|
||||||
@@ -0,0 +1,12 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<Ui xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.blizzard.com/wow/ui/" xsi:schemaLocation="http://www.blizzard.com/wow/ui/
|
||||||
|
..\FrameXML\UI.xsd">
|
||||||
|
<Script file="Libs\LibStub\LibStub.lua"/>
|
||||||
|
<Include file="Libs\CallbackHandler-1.0\CallbackHandler-1.0.xml"/>
|
||||||
|
|
||||||
|
<!--Ace3 Libraries-->
|
||||||
|
<Include file="Libs\AceAddon-3.0\AceAddon-3.0.xml"/>
|
||||||
|
<Include file="Libs\AceEvent-3.0\AceEvent-3.0.xml"/>
|
||||||
|
<Include file="Libs\AceDB-3.0\AceDB-3.0.xml"/>
|
||||||
|
<Include file="Libs\AceLocale-3.0\AceLocale-3.0.xml"/>
|
||||||
|
</Ui>
|
||||||
@@ -0,0 +1,4 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<Ui xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.blizzard.com/wow/ui/" xsi:schemaLocation="http://www.blizzard.com/wow/ui/FrameXML\UI.xsd">
|
||||||
|
<Include file="enUS.lua"/>
|
||||||
|
</Ui>
|
||||||
@@ -0,0 +1,11 @@
|
|||||||
|
local L = LibStub("AceLocale-3.0"):NewLocale("MyBagsCache", "enUS", true, true)
|
||||||
|
|
||||||
|
if not L then
|
||||||
|
print("AceLocale not loaded")
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
|
L["ACE_TEXT_OF"] = "of";
|
||||||
|
L["CHARACTER_DELIMITOR"] = " of ";
|
||||||
|
L["SplitString must be passed a string as the first argument"] = "SplitString must be passed a string as the first argument";
|
||||||
|
|
||||||
@@ -0,0 +1,449 @@
|
|||||||
|
MyBagsCache = LibStub("AceAddon-3.0"):NewAddon("MyBagsCache", "AceEvent-3.0");
|
||||||
|
|
||||||
|
local L = LibStub("AceLocale-3.0"):GetLocale("MyBagsCache")
|
||||||
|
|
||||||
|
local select, tinsert, type = select, table.insert, type
|
||||||
|
local strfind, strsub, strtrim = string.find, string.sub, strtrim
|
||||||
|
local error, unpack = error, unpack
|
||||||
|
local tonumber, pairs = tonumber, pairs
|
||||||
|
|
||||||
|
local function GetItemInfoFromLink(l)
|
||||||
|
if (not l) then
|
||||||
|
return
|
||||||
|
end
|
||||||
|
local c, id, il, n = select(3, strfind(l, "|cff(%x+)|Hitem:(%-?%d+)([^|]+)|h%[(.-)%]|h|r"))
|
||||||
|
return n, c, id .. il, id
|
||||||
|
end
|
||||||
|
|
||||||
|
local function SplitString(s, p, n)
|
||||||
|
if (type(s) ~= "string") then
|
||||||
|
error(L["SplitString must be passed a string as the first argument"], 2)
|
||||||
|
end
|
||||||
|
|
||||||
|
local l, sp, ep = {}, 0
|
||||||
|
while (sp) do
|
||||||
|
sp, ep = strfind(s, p)
|
||||||
|
if (sp) then
|
||||||
|
tinsert(l, strsub(s, 1, sp - 1))
|
||||||
|
s = strsub(s, ep + 1)
|
||||||
|
else
|
||||||
|
tinsert(l, s)
|
||||||
|
break
|
||||||
|
end
|
||||||
|
if (n) then
|
||||||
|
n = n - 1
|
||||||
|
end
|
||||||
|
if (n and (n == 0)) then
|
||||||
|
tinsert(l, s)
|
||||||
|
break
|
||||||
|
end
|
||||||
|
end
|
||||||
|
return unpack(l)
|
||||||
|
end
|
||||||
|
|
||||||
|
local function SortChars(a, b, a_time, b_time, t)
|
||||||
|
local a_player, a_realm = SplitString(a, L["CHARACTER_DELIMITOR"])
|
||||||
|
local b_player, b_realm = SplitString(b, L["CHARACTER_DELIMITOR"])
|
||||||
|
if (t == "realm") then
|
||||||
|
if (a_realm == b_realm) then
|
||||||
|
return (a_player > b_player)
|
||||||
|
else
|
||||||
|
return (a_realm > b_realm)
|
||||||
|
end
|
||||||
|
elseif (t == "char") then
|
||||||
|
if (a_player == b_player) then
|
||||||
|
return (a_realm > b_realm)
|
||||||
|
else
|
||||||
|
return (a_player > b_player)
|
||||||
|
end
|
||||||
|
elseif (t == "update") then
|
||||||
|
return a_time < b_time
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
function MyBagsCache:OnInitialize()
|
||||||
|
self.db = LibStub("AceDB-3.0"):New("MyBagsCacheDB");
|
||||||
|
local charName = strtrim(UnitName("player"));
|
||||||
|
local realmName = strtrim(GetRealmName());
|
||||||
|
-- self.atBank = false
|
||||||
|
self.Player = charName .. L["CHARACTER_DELIMITOR"] .. realmName
|
||||||
|
|
||||||
|
if not self.db.global[self.Player] then
|
||||||
|
self.db.global[self.Player]={}
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
function MyBagsCache:OnEnable()
|
||||||
|
self:RegisterEvent("PLAYER_MONEY")
|
||||||
|
self:RegisterEvent("PLAYERBANKSLOTS_CHANGED")
|
||||||
|
self:RegisterEvent("PLAYERBANKBAGSLOTS_CHANGED")
|
||||||
|
self:RegisterEvent("BANKFRAME_OPENED")
|
||||||
|
self:RegisterEvent("BANKFRAME_CLOSED")
|
||||||
|
self:RegisterEvent("UNIT_INVENTORY_CHANGED")
|
||||||
|
self:RegisterEvent("BAG_UPDATE")
|
||||||
|
self:RegisterEvent("BANKFRAME_OPENED")
|
||||||
|
self:RegisterEvent("BANKFRAME_CLOSED")
|
||||||
|
|
||||||
|
self:RegisterEvent("VOID_STORAGE_CONTENTS_UPDATE")
|
||||||
|
self:RegisterEvent("VOID_TRANSFER_DONE")
|
||||||
|
-- self:RegisterEvent("INVENTORY_SEARCH_UPDATE")
|
||||||
|
self:RegisterEvent("VOID_STORAGE_OPEN")
|
||||||
|
self:RegisterEvent("VOID_STORAGE_CLOSE")
|
||||||
|
|
||||||
|
if not self.db.global[self.Player][0] then
|
||||||
|
self:SaveItems()
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
function MyBagsCache:VOID_STORAGE_CONTENTS_UPDATE()
|
||||||
|
-- Move item in Void OR
|
||||||
|
-- Move item from Void to Withdraw
|
||||||
|
if (CanUseVoidStorage()) then
|
||||||
|
self.atVoid = true
|
||||||
|
self:SaveItems()
|
||||||
|
self:SaveUpdateTime()
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
function MyBagsCache:VOID_TRANSFER_DONE()
|
||||||
|
-- Move items between bags and void
|
||||||
|
if (CanUseVoidStorage()) then
|
||||||
|
self.atVoid = true
|
||||||
|
self:SaveItems()
|
||||||
|
self:SaveUpdateTime()
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
--[[
|
||||||
|
function MyBagsCache:INVENTORY_SEARCH_UPDATE()
|
||||||
|
-- Search box change
|
||||||
|
end
|
||||||
|
]]
|
||||||
|
|
||||||
|
function MyBagsCache:VOID_STORAGE_OPEN()
|
||||||
|
-- Open Void
|
||||||
|
if (CanUseVoidStorage()) then
|
||||||
|
self.atVoid = true
|
||||||
|
self:SaveItems()
|
||||||
|
self:SaveUpdateTime()
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
function MyBagsCache:VOID_STORAGE_CLOSE()
|
||||||
|
-- Close Void
|
||||||
|
self.atVoid = false
|
||||||
|
end
|
||||||
|
|
||||||
|
function MyBagsCache:PLAYER_MONEY()
|
||||||
|
self.db.global[self.Player].cash = GetMoney();
|
||||||
|
self:SaveUpdateTime()
|
||||||
|
end
|
||||||
|
|
||||||
|
function MyBagsCache:PLAYERBANKBAGSLOTS_CHANGED()
|
||||||
|
local numSlots, full = GetNumBankSlots()
|
||||||
|
local cost = GetBankSlotCost(numSlots)
|
||||||
|
if not self.db.global[self.Player].BankSlots then
|
||||||
|
self.db.global[self.Player].BankSlots = {}
|
||||||
|
end
|
||||||
|
self.db.global[self.Player].BankSlots = {
|
||||||
|
["Number"] = numSlots,
|
||||||
|
["Cost"] = cost,
|
||||||
|
["Full"] = full
|
||||||
|
}
|
||||||
|
self:SaveUpdateTime()
|
||||||
|
end
|
||||||
|
|
||||||
|
function MyBagsCache:PLAYERBANKSLOTS_CHANGED()
|
||||||
|
local itemIndex
|
||||||
|
for itemIndex = 1, 28 do
|
||||||
|
self:SaveItemInfo(BANK_CONTAINER, itemIndex)
|
||||||
|
end
|
||||||
|
self:SaveUpdateTime()
|
||||||
|
end
|
||||||
|
|
||||||
|
function MyBagsCache:BAG_UPDATE(event, bagIndex)
|
||||||
|
if not self.atBank and bagIndex > 4 and bagIndex <= 11 then
|
||||||
|
return
|
||||||
|
end
|
||||||
|
local slots = self:SaveBagInfo(bagIndex)
|
||||||
|
local itemIndex
|
||||||
|
for itemIndex = 1, slots do
|
||||||
|
self:SaveItemInfo(bagIndex, itemIndex)
|
||||||
|
end
|
||||||
|
self:SaveUpdateTime()
|
||||||
|
end
|
||||||
|
|
||||||
|
function MyBagsCache:UNIT_INVENTORY_CHANGED(event, unit)
|
||||||
|
if (unit == "player") then
|
||||||
|
self:SaveEquipment()
|
||||||
|
self:SaveUpdateTime()
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
function MyBagsCache:BANKFRAME_OPENED()
|
||||||
|
self.atBank = true
|
||||||
|
self:SaveItems()
|
||||||
|
self:SaveUpdateTime()
|
||||||
|
end
|
||||||
|
|
||||||
|
function MyBagsCache:BANKFRAME_CLOSED()
|
||||||
|
self.atBank = false
|
||||||
|
end
|
||||||
|
|
||||||
|
function MyBagsCache:SaveUpdateTime()
|
||||||
|
self.db.global[self.Player].updateTime = GetTime()
|
||||||
|
end
|
||||||
|
|
||||||
|
function MyBagsCache:SaveItems()
|
||||||
|
self:SaveVoid()
|
||||||
|
self:SaveInventory()
|
||||||
|
self:SaveBank()
|
||||||
|
self:SaveEquipment()
|
||||||
|
self:PLAYER_MONEY()
|
||||||
|
end
|
||||||
|
|
||||||
|
function MyBagsCache:SaveVoid()
|
||||||
|
if not self.atVoid then return end
|
||||||
|
if not self.db.global[self.Player]["Void"] then
|
||||||
|
self.db.global[self.Player]["Void"] = {}
|
||||||
|
end
|
||||||
|
local itemIndex
|
||||||
|
local VOID_STORAGE_SIZE = 80
|
||||||
|
for itemIndex = 1, VOID_STORAGE_SIZE do
|
||||||
|
local itemID, texture = GetVoidItemInfo(itemIndex);
|
||||||
|
if (itemID) then
|
||||||
|
local myName, myLink = GetItemInfo(itemID)
|
||||||
|
local myColor = select(2, GetItemInfoFromLink(myLink))
|
||||||
|
self.db.global[self.Player]["Void"][itemIndex] = {
|
||||||
|
["Name"] = myName,
|
||||||
|
["Color"] = myColor,
|
||||||
|
["Link"] = myLink,
|
||||||
|
["Count"] = 1,
|
||||||
|
["Texture"] = texture,
|
||||||
|
}
|
||||||
|
else
|
||||||
|
self.db.global[self.Player]["Void"][itemIndex] = nil
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
function MyBagsCache:SaveInventory()
|
||||||
|
local bagIndex
|
||||||
|
for bagIndex = 0, 4 do
|
||||||
|
local slots = self:SaveBagInfo(bagIndex)
|
||||||
|
local itemIndex
|
||||||
|
for itemIndex = 1, slots do
|
||||||
|
self:SaveItemInfo(bagIndex, itemIndex)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
function MyBagsCache:SaveBank()
|
||||||
|
if not self.atBank then return end
|
||||||
|
if not self.db.global[self.Player][BANK_CONTAINER] then
|
||||||
|
self.db.global[self.Player][BANK_CONTAINER] = {}
|
||||||
|
end
|
||||||
|
if not self.db.global[self.Player][BANK_CONTAINER][0] then
|
||||||
|
self.db.global[self.Player][BANK_CONTAINER][0] = {}
|
||||||
|
end
|
||||||
|
self.db.global[self.Player][BANK_CONTAINER][0] = {
|
||||||
|
["Count"] = 28
|
||||||
|
}
|
||||||
|
local itemIndex, bagIndex
|
||||||
|
for itemIndex = 1, 28 do
|
||||||
|
self:SaveItemInfo(BANK_CONTAINER, itemIndex)
|
||||||
|
end
|
||||||
|
for bagIndex = 5, 11 do
|
||||||
|
local slots = self:SaveBagInfo(bagIndex)
|
||||||
|
for itemIndex = 1, slots do
|
||||||
|
self:SaveItemInfo(bagIndex, itemIndex)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
function MyBagsCache:SaveEquipment()
|
||||||
|
if not self.db.global[self.Player].equipment then
|
||||||
|
self.db.global[self.Player].equipment = {}
|
||||||
|
end
|
||||||
|
local itemIndex
|
||||||
|
for itemIndex = 0, 19 do
|
||||||
|
self:SaveEquipmentInfo(itemIndex)
|
||||||
|
end
|
||||||
|
local hasRelic = UnitHasRelicSlot("player")
|
||||||
|
self.db.global[self.Player].equipment.hasRelic = hasRelic
|
||||||
|
end
|
||||||
|
|
||||||
|
function MyBagsCache:SaveBagInfo(bagIndex)
|
||||||
|
local invID -- get Inventory ID
|
||||||
|
if bagIndex >= 1 and bagIndex <=4 then
|
||||||
|
invID = ContainerIDToInventoryID(bagIndex)
|
||||||
|
elseif bagIndex >= 5 and bagIndex <= 11 then
|
||||||
|
invID = BankButtonIDToInvSlotID(bagIndex, 1)
|
||||||
|
else
|
||||||
|
invID = nil;
|
||||||
|
end
|
||||||
|
if bagIndex == 0 then -- Set Count to 16
|
||||||
|
if not self.db.global[self.Player][bagIndex] then
|
||||||
|
self.db.global[self.Player][bagIndex]= {}
|
||||||
|
end
|
||||||
|
self.db.global[self.Player][bagIndex][0] = {
|
||||||
|
["Count"] = 16,
|
||||||
|
["Texture"] = "Interface\\Buttons\\Button-Backpack-Up"
|
||||||
|
}
|
||||||
|
return 16
|
||||||
|
end
|
||||||
|
local bagSize = GetContainerNumSlots(bagIndex)
|
||||||
|
local itemLink = GetInventoryItemLink("player", invID)
|
||||||
|
if itemLink then
|
||||||
|
local name, myColor, myLink = GetItemInfoFromLink(itemLink)
|
||||||
|
local soulbound, madeBy = nil
|
||||||
|
local texture = GetInventoryItemTexture("player", invID)
|
||||||
|
if not self.db.global[self.Player][bagIndex] then
|
||||||
|
self.db.global[self.Player][bagIndex] = {}
|
||||||
|
end
|
||||||
|
self.db.global[self.Player][bagIndex][0] = {
|
||||||
|
["Name"] = name,
|
||||||
|
["Color"] = myColor,
|
||||||
|
["Link"] = myLink,
|
||||||
|
["Count"] = bagSize,
|
||||||
|
["Texture"] = texture,
|
||||||
|
["Soulbound"] = soulbound,
|
||||||
|
["MadeBy"] = madeBy
|
||||||
|
}
|
||||||
|
end
|
||||||
|
if bagSize > 0 then
|
||||||
|
return bagSize
|
||||||
|
else
|
||||||
|
self.db.global[self.Player][bagIndex] = nil
|
||||||
|
return 0
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
function MyBagsCache:SaveEquipmentInfo(itemIndex)
|
||||||
|
local itemLink = GetInventoryItemLink("player", itemIndex)
|
||||||
|
if itemLink or itemIndex == 0 then
|
||||||
|
-- local myColor, myLink, myName, soulbound, madeBy = nil
|
||||||
|
local texture = GetInventoryItemTexture("player", itemIndex)
|
||||||
|
local count = GetInventoryItemCount("player", itemIndex)
|
||||||
|
local myName, myColor, myLink = GetItemInfoFromLink(itemLink)
|
||||||
|
if not self.db.global[self.Player].equipment[itemIndex] then
|
||||||
|
self.db.global[self.Player].equipment[itemIndex] = {}
|
||||||
|
end
|
||||||
|
self.db.global[self.Player].equipment[itemIndex] = {
|
||||||
|
["Name"] = myName,
|
||||||
|
["Color"] = myColor,
|
||||||
|
["Link"] = myLink,
|
||||||
|
["Count"] = count,
|
||||||
|
["Texture"] = texture,
|
||||||
|
["Soulbound"] = nil,
|
||||||
|
["MadeBy"] = nil,
|
||||||
|
}
|
||||||
|
else
|
||||||
|
self.db.global[self.Player].equipment[itemIndex] = nil
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
function MyBagsCache:SaveItemInfo(bagIndex, itemIndex)
|
||||||
|
local itemLink = GetContainerItemLink(bagIndex, itemIndex)
|
||||||
|
if itemLink then
|
||||||
|
local myName, myColor, myLink = GetItemInfoFromLink(itemLink)
|
||||||
|
local texture, itemCount = GetContainerItemInfo(bagIndex, itemIndex)
|
||||||
|
self.db.global[self.Player][bagIndex][itemIndex] = {
|
||||||
|
["Name"] = myName,
|
||||||
|
["Color"] = myColor,
|
||||||
|
["Link"] = myLink,
|
||||||
|
["Count"] = itemCount,
|
||||||
|
["Texture"] = texture,
|
||||||
|
["Soulbound"] = nil,
|
||||||
|
["MadeBy"] = nil,
|
||||||
|
}
|
||||||
|
else
|
||||||
|
self.db.global[self.Player][bagIndex][itemIndex] = nil
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
function MyBagsCache:GetInfo(bagIndex, slotIndex, charID)
|
||||||
|
slotIndex = tonumber(slotIndex or 0)
|
||||||
|
if not self.db.global[charID] or not self.db.global[charID][bagIndex] or not self.db.global[charID][bagIndex][slotIndex] then
|
||||||
|
return nil, 0, nil, nil, nil
|
||||||
|
else
|
||||||
|
local data = self.db.global[charID][bagIndex][slotIndex]
|
||||||
|
return data.Texture, data.Count, data.Link, data.Color, data.Name
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
function MyBagsCache:GetRelic(charID)
|
||||||
|
if not self.db.global[charID] or not self.db.global[charID].equipment or not self.db.global[charID].equipment.hasRelic then
|
||||||
|
return nil
|
||||||
|
else
|
||||||
|
return self.db.global[charID].equipment.hasRelic
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
function MyBagsCache:GetCash(charID)
|
||||||
|
if not self.db.global[charID] or not self.db.global[charID].cash then
|
||||||
|
return nil
|
||||||
|
else
|
||||||
|
return self.db.global[charID].cash
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
function MyBagsCache:GetCharList(realm)
|
||||||
|
local result = {}
|
||||||
|
local cache = self.db.global
|
||||||
|
local index, value
|
||||||
|
for index, value in pairs(cache) do
|
||||||
|
if index ~= "profiles" then
|
||||||
|
local charName, realmID = SplitString(index, L["CHARACTER_DELIMITOR"])
|
||||||
|
if (not realm or realmID == realm) then
|
||||||
|
result[index] = {
|
||||||
|
name = charName,
|
||||||
|
realm = realmID,
|
||||||
|
}
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
return result
|
||||||
|
end
|
||||||
|
|
||||||
|
function MyBagsCache:GetSortedCharList(sorttype, realm)
|
||||||
|
local result = {}
|
||||||
|
local idx = 0
|
||||||
|
local cache = self.db.global
|
||||||
|
local index, value
|
||||||
|
for index, value in pairs(cache) do
|
||||||
|
if index ~= "profiles" then
|
||||||
|
local realmID = select(2, SplitString(index, L["CHARACTER_DELIMITOR"]))
|
||||||
|
if (not realm or realmID == realm) then
|
||||||
|
idx = idx + 1
|
||||||
|
result[idx] = index
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
local swapped
|
||||||
|
local x_time, y_time
|
||||||
|
local q, w, i
|
||||||
|
repeat
|
||||||
|
swapped = 0
|
||||||
|
for i = 1, idx-1 do
|
||||||
|
q = result[i]
|
||||||
|
w = result[i+1]
|
||||||
|
if (not self.db.global[q].updateTime) then
|
||||||
|
x_time = 0
|
||||||
|
else
|
||||||
|
x_time = self.db.global[q].updateTime
|
||||||
|
end
|
||||||
|
if (not self.db.global[w].updateTime) then
|
||||||
|
y_time = 0
|
||||||
|
else
|
||||||
|
y_time = self.db.global[w].updateTime
|
||||||
|
end
|
||||||
|
if SortChars(q, w, x_time, y_time, sorttype) then
|
||||||
|
result[i] = w
|
||||||
|
result[i+1] = q
|
||||||
|
swapped = 1
|
||||||
|
end
|
||||||
|
end
|
||||||
|
until swapped == 0
|
||||||
|
return result
|
||||||
|
end
|
||||||
@@ -0,0 +1,16 @@
|
|||||||
|
## Interface: 50100
|
||||||
|
## Author: Takika
|
||||||
|
## Title: MyBagsCache3 |cff007FFF -Ace3-|r
|
||||||
|
## Notes: Item database for Equipment, Inventory and Bank Bags.
|
||||||
|
## OptionalDeps: Ace3
|
||||||
|
## SavedVariables: MyBagsCacheDB
|
||||||
|
## LoadOnDemand: 0
|
||||||
|
|
||||||
|
# Libraries
|
||||||
|
Embeds.xml
|
||||||
|
|
||||||
|
#Locales
|
||||||
|
Locals\Locals.xml
|
||||||
|
|
||||||
|
MyBagsCache.xml
|
||||||
|
MyBagsCache.lua
|
||||||
@@ -0,0 +1,12 @@
|
|||||||
|
<Ui xmlns="http://www.blizzard.com/wow/ui/"
|
||||||
|
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||||
|
xsi:schemaLocation="http://www.blizzard.com/wow/ui/FrameXML/UI.xsd">
|
||||||
|
<GameTooltip name="MyBagsCacheHiddenTooltip" inherits="GameTooltipTemplate" parent="UIParent" hidden="true">
|
||||||
|
<Scripts>
|
||||||
|
<OnLoad>
|
||||||
|
self:SetOwner(UIParent, "ANCHOR_NONE");
|
||||||
|
</OnLoad>
|
||||||
|
</Scripts>
|
||||||
|
</GameTooltip>
|
||||||
|
</Ui>
|
||||||
|
|
||||||
@@ -0,0 +1,4 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<Ui xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.blizzard.com/wow/ui/" xsi:schemaLocation="http://www.blizzard.com/wow/ui/FrameXML\UI.xsd">
|
||||||
|
<Include file="enUS.lua"/>
|
||||||
|
</Ui>
|
||||||
@@ -0,0 +1,36 @@
|
|||||||
|
local L = LibStub("AceLocale-3.0"):NewLocale("MyBagsCore", "enUS", true)
|
||||||
|
|
||||||
|
if not L then
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
|
L["ACE_TEXT_OF"] = "of";
|
||||||
|
L["CHARACTER_DELIMITOR"] = " of ";
|
||||||
|
L["ACEG_TEXT_AMMO"] = "Ammo";
|
||||||
|
L["ACEG_TEXT_QUIVER"] = "Quiver";
|
||||||
|
L["ACEG_TEXT_SOUL"] = "Soul Bag";
|
||||||
|
L["ACEG_TEXT_ENCHANT"] = "Enchanting Bag";
|
||||||
|
L["ACEG_TEXT_ENGINEER"] = "Engineering Bag";
|
||||||
|
L["ACEG_TEXT_GEM"] = "Gem Bag";
|
||||||
|
L["ACEG_TEXT_HERB"] = "Herb Bag";
|
||||||
|
L["ACEG_TEXT_MINING"] = "Mining Bag";
|
||||||
|
L["ACEG_TEXT_NOW_SET_TO"] = "is now set to";
|
||||||
|
L["ACEG_TEXT_DEFAULT"] = "default";
|
||||||
|
L["ACEG_DISPLAY_OPTION"] = "[|cfff5f530%s|r]";
|
||||||
|
L["ACE_CMD_REPORT_NO_VAL"] = "|cffc7c7c7no value|r"
|
||||||
|
L["ACE_CMD_RESULT"] = "|cffffff78%s:|r %s"
|
||||||
|
|
||||||
|
--MyInventory Title
|
||||||
|
L["MYBAGS_TITLE0"] = ""
|
||||||
|
L["MYBAGS_TITLE1"] = "%s's "
|
||||||
|
L["MYBAGS_TITLE2"] = "%s of %s's "
|
||||||
|
|
||||||
|
L["MYBAGS_SLOTS_FREE"] = "%d/%d Slots Free";
|
||||||
|
L["MYBAGS_SLOTS_USED"] = "%d/%d Slots Used";
|
||||||
|
-- SLASHCOMMANDS
|
||||||
|
|
||||||
|
--KEYBINDINGS
|
||||||
|
L["BINDING_HEADER_MYBAGSHEADER"] = "My Bags"
|
||||||
|
L["BINDING_NAME_MYINVENTORY"] = "My Inventory Toggle"
|
||||||
|
L["BINDING_NAME_MYBANK"] = "My Bank Toggle"
|
||||||
|
L["BINDING_NAME_MYEQUIPMENT"] = "My Equipment Toggle"
|
||||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,445 @@
|
|||||||
|
<Ui xmlns="http://www.blizzard.com/wow/ui/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||||
|
xsi:schemaLocation="http://www.blizzard.com/wow/ui/FrameXML/UI.xsd">
|
||||||
|
<Script file="MyBags.lua"/>
|
||||||
|
<!-- Templates -->
|
||||||
|
<Button name="MyBagsItemButtonTemplate" inherits="ContainerFrameItemButtonTemplate" virtual="true">
|
||||||
|
<Frames>
|
||||||
|
<Cooldown name="$parentCooldown" inherits="CooldownFrameTemplate"/>
|
||||||
|
</Frames>
|
||||||
|
<Scripts>
|
||||||
|
<OnLoad>
|
||||||
|
mybags = self:GetParent():GetParent().self;
|
||||||
|
mybags:ItemButton_OnLoad(self)
|
||||||
|
</OnLoad>
|
||||||
|
<PostClick>
|
||||||
|
if ( IsModifierKeyDown() ) then
|
||||||
|
mybags = self:GetParent():GetParent().self
|
||||||
|
mybags:ItemButton_OnModifiedClick(self, button)
|
||||||
|
end
|
||||||
|
</PostClick>
|
||||||
|
<OnDragStart>
|
||||||
|
mybags = self:GetParent():GetParent().self
|
||||||
|
mybags:ItemButton_OnDragStart(self)
|
||||||
|
</OnDragStart>
|
||||||
|
<OnReceiveDrag>
|
||||||
|
mybags = self:GetParent():GetParent().self
|
||||||
|
mybags:ItemButton_OnReceiveDrag(self)
|
||||||
|
</OnReceiveDrag>
|
||||||
|
<OnEnter>
|
||||||
|
mybags = self:GetParent():GetParent().self
|
||||||
|
mybags:ItemButton_OnEnter(self)
|
||||||
|
</OnEnter>
|
||||||
|
<OnLeave>
|
||||||
|
mybags = self:GetParent():GetParent().self
|
||||||
|
mybags:ItemButton_OnLeave(self)
|
||||||
|
</OnLeave>
|
||||||
|
<OnUpdate>
|
||||||
|
if ( GameTooltip:IsOwned( self ) ) then
|
||||||
|
mybags = self:GetParent():GetParent().self
|
||||||
|
mybags:ItemButton_OnEnter(self)
|
||||||
|
end
|
||||||
|
</OnUpdate>
|
||||||
|
</Scripts>
|
||||||
|
</Button>
|
||||||
|
<CheckButton name="MyBagsBagButtonTemplate" inherits="ItemButtonTemplate" hidden="true" virtual="true">
|
||||||
|
<CheckedTexture alphaMode="ADD" file="Interface\Buttons\ButtonHilight-Square"/>
|
||||||
|
<HighlightTexture alphaMode="ADD" file="Interface\Buttons\CheckButtonHilight"/>
|
||||||
|
<Scripts>
|
||||||
|
<OnLoad>
|
||||||
|
self.isBag = 1;
|
||||||
|
self:RegisterForClicks("LeftButtonUp", "RightButtonUp")
|
||||||
|
self:RegisterForDrag("LeftButton")
|
||||||
|
</OnLoad>
|
||||||
|
<OnClick>
|
||||||
|
mybags = self:GetParent():GetParent().self
|
||||||
|
mybags:BagButton_OnClick(self, button)
|
||||||
|
</OnClick>
|
||||||
|
<OnDragStart>
|
||||||
|
mybags = self:GetParent():GetParent().self
|
||||||
|
mybags:BagButton_OnDragStart(self)
|
||||||
|
</OnDragStart>
|
||||||
|
<OnReceiveDrag>
|
||||||
|
mybags = self:GetParent():GetParent().self
|
||||||
|
mybags:BagButton_OnReceiveDrag(self)
|
||||||
|
</OnReceiveDrag>
|
||||||
|
<OnEnter>
|
||||||
|
mybags = self:GetParent():GetParent(self).self
|
||||||
|
mybags:BagButton_OnEnter(self)
|
||||||
|
</OnEnter>
|
||||||
|
<OnLeave>
|
||||||
|
mybags = self:GetParent():GetParent(self).self
|
||||||
|
mybags:BagButton_OnLeave(self)
|
||||||
|
</OnLeave>
|
||||||
|
</Scripts>
|
||||||
|
</CheckButton>
|
||||||
|
<Frame name="MyBagsContainerTemplate" virtual="true">
|
||||||
|
<Frames>
|
||||||
|
<Frame name="$parentBackRow1"/>
|
||||||
|
<Frame name="$parentBackRow2"/>
|
||||||
|
<Frame name="$parentBackRow3"/>
|
||||||
|
<CheckButton name="$parentBag" inherits="MyBagsBagButtonTemplate" id="0"/>
|
||||||
|
</Frames>
|
||||||
|
</Frame>
|
||||||
|
<Frame name="MyBagsButtonBarTemplate" hidden="false" virtual="true">
|
||||||
|
<Size>
|
||||||
|
<AbsDimension x="100" y="20"/>
|
||||||
|
</Size>
|
||||||
|
<Anchors>
|
||||||
|
<Anchor point="TOPRIGHT" relativeTo="$parent" relativePoint="TOPRIGHT"/>
|
||||||
|
</Anchors>
|
||||||
|
<Frames>
|
||||||
|
<Button name="$parentCloseButton" inherits="UIPanelCloseButton">
|
||||||
|
<Anchors>
|
||||||
|
<Anchor point="TOPRIGHT" relativeTo="$parent" relativePoint="TOPRIGHT">
|
||||||
|
<Offset>
|
||||||
|
<AbsDimension x="-1" y="-1"/>
|
||||||
|
</Offset>
|
||||||
|
</Anchor>
|
||||||
|
</Anchors>
|
||||||
|
<Scripts>
|
||||||
|
<OnClick>
|
||||||
|
mybags = self:GetParent():GetParent().self;
|
||||||
|
mybags:Close();
|
||||||
|
</OnClick>
|
||||||
|
</Scripts>
|
||||||
|
</Button>
|
||||||
|
<Button name="$parentLockButton" inherits="UIPanelCloseButton">
|
||||||
|
<NormalTexture name="$parentNormalTexture" file="Interface\AddOns\MyBags\Skin\LockButton-Unlocked-Up"/>
|
||||||
|
<PushedTexture name="$parentPushedTexture" file="Interface\AddOns\MyBags\Skin\LockButton-Locked-Down"/>
|
||||||
|
<Anchors>
|
||||||
|
<Anchor point="RIGHT" relativeTo="$parentCloseButton" relativePoint="LEFT">
|
||||||
|
<Offset>
|
||||||
|
<Absdimension x="10" y="0"/>
|
||||||
|
</Offset>
|
||||||
|
</Anchor>
|
||||||
|
</Anchors>
|
||||||
|
<Scripts>
|
||||||
|
<OnClick>
|
||||||
|
mybags = self:GetParent():GetParent().self
|
||||||
|
mybags:LockButton_OnClick()
|
||||||
|
</OnClick>
|
||||||
|
</Scripts>
|
||||||
|
</Button>
|
||||||
|
</Frames>
|
||||||
|
</Frame>
|
||||||
|
<Frame name="MyBagsCharSelectTemplate" virtual="true" hidden="false">
|
||||||
|
<Size>
|
||||||
|
<AbsDimension x="190" y="30"/>
|
||||||
|
</Size>
|
||||||
|
<Anchors>
|
||||||
|
<Anchor point="TOP">
|
||||||
|
<Offset>
|
||||||
|
<AbsDimension x="0" y="-38"/>
|
||||||
|
</Offset>
|
||||||
|
</Anchor>
|
||||||
|
</Anchors>
|
||||||
|
<Frames>
|
||||||
|
<Frame name="$parentDropDown" inherits="UIDropDownMenuTemplate" enableMouse="true" hidden="false">
|
||||||
|
<Size>
|
||||||
|
<AbsDimension x="150" y="30"/>
|
||||||
|
</Size>
|
||||||
|
<Anchors>
|
||||||
|
<Anchor point="RIGHT">
|
||||||
|
<Offset>
|
||||||
|
<AbsDimension x="0" y="0"/>
|
||||||
|
</Offset>
|
||||||
|
</Anchor>
|
||||||
|
</Anchors>
|
||||||
|
<Layers>
|
||||||
|
<Layer level="BACKGROUND">
|
||||||
|
<FontString name="$parentLabel" inherits="GameFontNormalSmall" text="Select Player:">
|
||||||
|
<Anchors>
|
||||||
|
<Anchor point="BOTTOMLEFT" relativePoint="TOPLEFT">
|
||||||
|
<Offset>
|
||||||
|
<AbsDimension x="18" y="0"/>
|
||||||
|
</Offset>
|
||||||
|
</Anchor>
|
||||||
|
</Anchors>
|
||||||
|
</FontString>
|
||||||
|
</Layer>
|
||||||
|
</Layers>
|
||||||
|
</Frame>
|
||||||
|
</Frames>
|
||||||
|
</Frame>
|
||||||
|
<EditBox name="MyBagsSearchBoxTemplate" inherits="BagSearchBoxTemplate" letters="15" hidden="true" virtual="true">
|
||||||
|
<Size x="130" y="20"/>
|
||||||
|
<Scripts>
|
||||||
|
<!--
|
||||||
|
<OnHide>
|
||||||
|
myedit = self:GetParent().self
|
||||||
|
myedit:BagSearch_OnHide()
|
||||||
|
</OnHide>
|
||||||
|
-->
|
||||||
|
<OnTextChanged>
|
||||||
|
myedit = self:GetParent().self
|
||||||
|
myedit:BagSearch_OnTextChanged()
|
||||||
|
</OnTextChanged>
|
||||||
|
<!--
|
||||||
|
<OnChar>
|
||||||
|
myedit = self:GetParent().self
|
||||||
|
myedit:BagSearch_OnChar()
|
||||||
|
</OnChar>
|
||||||
|
<OnEnterPressed>
|
||||||
|
myedit = self:GetParent().self
|
||||||
|
myedit:EditBox_ClearFocus()
|
||||||
|
</OnEnterPressed>
|
||||||
|
<OnEditFocusLost>
|
||||||
|
myedit = self:GetParent().self
|
||||||
|
myedit:BagSearch_OnEditFocusLost()
|
||||||
|
</OnEditFocusLost>
|
||||||
|
-->
|
||||||
|
<OnEditFocusGained>
|
||||||
|
myedit = self:GetParent().self
|
||||||
|
myedit:BagSearch_OnEditFocusGained()
|
||||||
|
</OnEditFocusGained>
|
||||||
|
|
||||||
|
<OnHide function="BagSearch_OnHide"/>
|
||||||
|
<!--
|
||||||
|
|
||||||
|
<OnTextChanged function="BagSearch_OnTextChanged"/>
|
||||||
|
-->
|
||||||
|
<OnChar function="BagSearch_OnChar"/>
|
||||||
|
<OnEnterPressed function="EditBox_ClearFocus"/>
|
||||||
|
<OnEditFocusLost function="BagSearch_OnEditFocusLost"/>
|
||||||
|
<!--
|
||||||
|
<OnEditFocusGained function="BagSearch_OnEditFocusGained"/>
|
||||||
|
-->
|
||||||
|
</Scripts>
|
||||||
|
</EditBox>
|
||||||
|
<Frame name="MyBagsFrameTemplate" virtual="true" movable="true" enableMouse="true" toplevel="true" hidden="true">
|
||||||
|
<Backdrop bgFile="Interface\ChatFrame\ChatFrameBackground" edgeFile="Interface\Tooltips\UI-Tooltip-Border" tile="true">
|
||||||
|
<BackgroundInsets>
|
||||||
|
<AbsInset left="5" right="5" top="5" bottom="5"/>
|
||||||
|
</BackgroundInsets>
|
||||||
|
<TileSize>
|
||||||
|
<AbsValue val="16"/>
|
||||||
|
</TileSize>
|
||||||
|
<EdgeSize>
|
||||||
|
<AbsValue val="16"/>
|
||||||
|
</EdgeSize>
|
||||||
|
</Backdrop>
|
||||||
|
<Layers>
|
||||||
|
<!-- -LITE{{{ -->
|
||||||
|
|
||||||
|
<Layer level="BACKGROUND">
|
||||||
|
<Texture name="$parentPortrait" hidden="false" file="Interface\AddOns\MyBags\Skin\Backpack">
|
||||||
|
<!-- -->
|
||||||
|
|
||||||
|
<Size>
|
||||||
|
<AbsDimension x="58" y="58"/>
|
||||||
|
</Size>
|
||||||
|
<Anchors>
|
||||||
|
<Anchor point="TOPLEFT">
|
||||||
|
<Offset>
|
||||||
|
<AbsDimension x="-5" y="1"/>
|
||||||
|
</Offset>
|
||||||
|
</Anchor>
|
||||||
|
</Anchors>
|
||||||
|
</Texture>
|
||||||
|
<Texture name="$parentTextureTopLeft" file="Interface\AddOns\MyBags\Skin\TopLeft" hidden="false">
|
||||||
|
<Size>
|
||||||
|
<AbsDimension x="128" y="128"/>
|
||||||
|
</Size>
|
||||||
|
<Anchors>
|
||||||
|
<Anchor point="TOPLEFT">
|
||||||
|
<Offset>
|
||||||
|
<AbsDimension x="-65" y="58"/>
|
||||||
|
</Offset>
|
||||||
|
</Anchor>
|
||||||
|
</Anchors>
|
||||||
|
</Texture>
|
||||||
|
<Texture name="$parentTextureTopRight" file="Interface\AddOns\MyBags\Skin\TopRight" hidden="false">
|
||||||
|
<Size>
|
||||||
|
<AbsDimension x="64" y="128"/>
|
||||||
|
</Size>
|
||||||
|
<Anchors>
|
||||||
|
<Anchor point="TOPRIGHT">
|
||||||
|
<Offset>
|
||||||
|
<AbsDimension x="36" y="58"/>
|
||||||
|
</Offset>
|
||||||
|
</Anchor>
|
||||||
|
</Anchors>
|
||||||
|
</Texture>
|
||||||
|
<Texture name="$parentTextureTopCenter" file="Interface\AddOns\MyBags\Skin\TopCenter" hidden="false">
|
||||||
|
<Size>
|
||||||
|
<AbsDimension x="128" y="128"/>
|
||||||
|
</Size>
|
||||||
|
<Anchors>
|
||||||
|
<Anchor point="BOTTOMLEFT" relativeTo="$parentTextureTopLeft" relativePoint="BOTTOMRIGHT"/>
|
||||||
|
<Anchor point="BOTTOMRIGHT" relativeTo="$parentTextureTopRight" relativePoint="BOTTOMLEFT"/>
|
||||||
|
</Anchors>
|
||||||
|
</Texture>
|
||||||
|
<Texture name="$parentTextureBottomLeft" file="Interface\AddOns\MyBags\Skin\BottomLeft" hidden="false">
|
||||||
|
<Size>
|
||||||
|
<AbsDimension x="128" y="128"/>
|
||||||
|
</Size>
|
||||||
|
<Anchors>
|
||||||
|
<Anchor point="BOTTOMLEFT">
|
||||||
|
<Offset>
|
||||||
|
<AbsDimension x="-65" y="-60"/>
|
||||||
|
</Offset>
|
||||||
|
</Anchor>
|
||||||
|
</Anchors>
|
||||||
|
</Texture>
|
||||||
|
<Texture name="$parentTextureBottomRight" file="Interface\AddOns\MyBags\Skin\BottomRight"
|
||||||
|
hidden="false">
|
||||||
|
<Size>
|
||||||
|
<AbsDimension x="64" y="128"/>
|
||||||
|
</Size>
|
||||||
|
<Anchors>
|
||||||
|
<Anchor point="BOTTOMRIGHT">
|
||||||
|
<Offset>
|
||||||
|
<AbsDimension x="36" y="-60"/>
|
||||||
|
</Offset>
|
||||||
|
</Anchor>
|
||||||
|
</Anchors>
|
||||||
|
</Texture>
|
||||||
|
<Texture name="$parentTextureBottomCenter" file="Interface\AddOns\MyBags\Skin\BottomCenter"
|
||||||
|
hidden="false">
|
||||||
|
<Size>
|
||||||
|
<AbsDimension x="128" y="128"/>
|
||||||
|
</Size>
|
||||||
|
<Anchors>
|
||||||
|
<Anchor point="TOPLEFT" relativeTo="$parentTextureBottomLeft" relativePoint="TOPRIGHT"/>
|
||||||
|
<Anchor point="TOPRIGHT" relativeTo="$parentTextureBottomRight" relativePoint="TOPLEFT"/>
|
||||||
|
</Anchors>
|
||||||
|
</Texture>
|
||||||
|
<Texture name="$parentTextureLeft" file="Interface\AddOns\MyBags\Skin\Left" hidden="false">
|
||||||
|
<Size>
|
||||||
|
<AbsDimension x="64" y="128"/>
|
||||||
|
</Size>
|
||||||
|
<Anchors>
|
||||||
|
<Anchor point="TOPRIGHT" relativeTo="$parentTextureTopLeft" relativePoint="BOTTOMRIGHT"/>
|
||||||
|
<Anchor point="BOTTOMRIGHT" relativeTo="$parentTextureBottomLeft" relativePoint="TOPRIGHT"/>
|
||||||
|
</Anchors>
|
||||||
|
</Texture>
|
||||||
|
<Texture name="$parentTextureRight" file="Interface\AddOns\MyBags\Skin\Right" hidden="false">
|
||||||
|
<Size>
|
||||||
|
<AbsDimension x="64" y="128"/>
|
||||||
|
</Size>
|
||||||
|
<Anchors>
|
||||||
|
<Anchor point="TOPLEFT" relativeTo="$parentTextureTopRight" relativePoint="BOTTOMLEFT"/>
|
||||||
|
<Anchor point="BOTTOMLEFT" relativeTo="$parentTextureBottomRight" relativePoint="TOPLEFT"/>
|
||||||
|
</Anchors>
|
||||||
|
</Texture>
|
||||||
|
<Texture name="$parentTextureCenter" file="Interface\AddOns\MyBags\Skin\Center" hidden="false">
|
||||||
|
<Size>
|
||||||
|
<AbsDimension x="128" y="128"/>
|
||||||
|
</Size>
|
||||||
|
<Anchors>
|
||||||
|
<Anchor point="TOPLEFT" relativeTo="$parentTextureTopCenter" relativePoint="BOTTOMLEFT"/>
|
||||||
|
<Anchor point="TOPRIGHT" relativeTo="$parentTextureTopCenter" relativePoint="BOTTOMRIGHT"/>
|
||||||
|
<Anchor point="BOTTOMLEFT" relativeTo="$parentTextureBottomCenter" relativePoint="TOPLEFT"/>
|
||||||
|
<Anchor point="BOTTOMRIGHT" relativeTo="$parentTextureBottomCenter" relativePoint="TOPRIGHT"/>
|
||||||
|
</Anchors>
|
||||||
|
</Texture>
|
||||||
|
</Layer>
|
||||||
|
<!-- }}}-LITE -->
|
||||||
|
<Layer level="ARTWORK">
|
||||||
|
<FontString name="$parentName" inherits="GameFontNormal" justifyH="LEFT">
|
||||||
|
<Color r="1.0" g="1.0" b="1.0"/>
|
||||||
|
<Anchors>
|
||||||
|
<Anchor point="TOPLEFT">
|
||||||
|
<Offset>
|
||||||
|
<AbsDimension x="7" y="-10"/>
|
||||||
|
</Offset>
|
||||||
|
</Anchor>
|
||||||
|
</Anchors>
|
||||||
|
</FontString>
|
||||||
|
<FontString name="$parentSlots" inherits="GameFontNormal" justifyH="LEFT">
|
||||||
|
<Color r="1.0" g="1.0" b="1.0"/>
|
||||||
|
<Anchors>
|
||||||
|
<Anchor point="BOTTOMLEFT">
|
||||||
|
<Offset>
|
||||||
|
<AbsDimension x="7" y="10"/>
|
||||||
|
</Offset>
|
||||||
|
</Anchor>
|
||||||
|
</Anchors>
|
||||||
|
</FontString>
|
||||||
|
</Layer>
|
||||||
|
</Layers>
|
||||||
|
<Frames>
|
||||||
|
<Frame name="$parentBag0" inherits="MyBagsContainerTemplate" id="0"/>
|
||||||
|
<Frame name="$parentBag1" inherits="MyBagsContainerTemplate" id="1"/>
|
||||||
|
<Frame name="$parentBag2" inherits="MyBagsContainerTemplate" id="2"/>
|
||||||
|
<Frame name="$parentBag3" inherits="MyBagsContainerTemplate" id="3"/>
|
||||||
|
<Frame name="$parentBag4" inherits="MyBagsContainerTemplate" id="4"/>
|
||||||
|
<Frame name="$parentButtons" inherits="MyBagsButtonBarTemplate"/>
|
||||||
|
<Frame name="$parentCharSelect" inherits="MyBagsCharSelectTemplate"/>
|
||||||
|
<Frame name="$parentTokenFrame">
|
||||||
|
<Size>
|
||||||
|
<AbsDimension x="183" y="32"/>
|
||||||
|
</Size>
|
||||||
|
<Frames>
|
||||||
|
<Button name="$parentToken1" inherits="BackpackTokenTemplate" id="1">
|
||||||
|
<Anchors>
|
||||||
|
<Anchor point="LEFT">
|
||||||
|
<Offset x="13" y="0"/>
|
||||||
|
</Anchor>
|
||||||
|
</Anchors>
|
||||||
|
</Button>
|
||||||
|
<Button name="$parentToken2" inherits="BackpackTokenTemplate" id="2">
|
||||||
|
<Anchors>
|
||||||
|
<Anchor point="LEFT" relativeTo="$parentToken1" relativePoint="RIGHT">
|
||||||
|
<Offset x="2" y="0"/>
|
||||||
|
</Anchor>
|
||||||
|
</Anchors>
|
||||||
|
</Button>
|
||||||
|
<Button name="$parentToken3" inherits="BackpackTokenTemplate" id="3">
|
||||||
|
<Anchors>
|
||||||
|
<Anchor point="LEFT" relativeTo="$parentToken2" relativePoint="RIGHT">
|
||||||
|
<Offset x="2" y="0"/>
|
||||||
|
</Anchor>
|
||||||
|
</Anchors>
|
||||||
|
</Button>
|
||||||
|
</Frames>
|
||||||
|
</Frame>
|
||||||
|
<Frame name="$parentMoneyFrame" inherits="SmallMoneyFrameTemplate" hidden="false">
|
||||||
|
<Anchors>
|
||||||
|
<Anchor point="BOTTOMRIGHT" relativeTo="$parent" relativePoint="BOTTOMRIGHT">
|
||||||
|
<Offset>
|
||||||
|
<AbsDimension x="0" y="8"/>
|
||||||
|
</Offset>
|
||||||
|
</Anchor>
|
||||||
|
</Anchors>
|
||||||
|
</Frame>
|
||||||
|
<EditBox name="$parentSearchBox" inherits="MyBagsSearchBoxTemplate" letters="15" hidden="false" text="SEARCH">
|
||||||
|
<Size x="130" y="20"/>
|
||||||
|
<Anchors>
|
||||||
|
<Anchor point="BOTTOMRIGHT" relativeTo="$parentCharSelect" relativePoint="BOTTOMLEFT">
|
||||||
|
<Offset>
|
||||||
|
<AbsDimension x="-10" y="8"/>
|
||||||
|
</Offset>
|
||||||
|
</Anchor>
|
||||||
|
</Anchors>
|
||||||
|
</EditBox>
|
||||||
|
</Frames>
|
||||||
|
<Scripts>
|
||||||
|
<OnShow>
|
||||||
|
PlaySound("igBackPackOpen")
|
||||||
|
</OnShow>
|
||||||
|
<OnHide>
|
||||||
|
PlaySound("igBackPackClose")
|
||||||
|
</OnHide>
|
||||||
|
<OnMouseDown>
|
||||||
|
mybags = self.self
|
||||||
|
if not mybags.GetOpt("Lock") then
|
||||||
|
self:GetParent():StartMoving()
|
||||||
|
end
|
||||||
|
</OnMouseDown>
|
||||||
|
<OnMouseUp>
|
||||||
|
mybags = self.self
|
||||||
|
if not mybags.GetOpt("Lock") then
|
||||||
|
self:GetParent():StopMovingOrSizing()
|
||||||
|
end
|
||||||
|
</OnMouseUp>
|
||||||
|
</Scripts>
|
||||||
|
</Frame>
|
||||||
|
<GameTooltip name="MyBagsHiddenTooltip" inherits="GameTooltipTemplate" parent="UIParent" hidden="true">
|
||||||
|
<Scripts>
|
||||||
|
<OnLoad>
|
||||||
|
self:SetOwner(UIParent, "ANCHOR_NONE");
|
||||||
|
</OnLoad>
|
||||||
|
</Scripts>
|
||||||
|
</GameTooltip>
|
||||||
|
</Ui>
|
||||||
@@ -0,0 +1,4 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<Ui xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.blizzard.com/wow/ui/" xsi:schemaLocation="http://www.blizzard.com/wow/ui/FrameXML\UI.xsd">
|
||||||
|
<Include file="enUS.lua"/>
|
||||||
|
</Ui>
|
||||||
@@ -0,0 +1,34 @@
|
|||||||
|
-- Version : English - Ramble
|
||||||
|
|
||||||
|
MYBANK_NAME = "MyBank"
|
||||||
|
MYBANK_DESCRIPTION = "All in one bank mod"
|
||||||
|
|
||||||
|
MYBANKFRAME_TITLE = "Bank"
|
||||||
|
|
||||||
|
-- SLASHCOMMANDS
|
||||||
|
-- MYBANK_COMMANDS = {"/mybank", "/mb"}
|
||||||
|
--[[ MYBANK_CMD_OPTIONS = {
|
||||||
|
MYBAGS_CMD_OPT_REPLACE, -- done
|
||||||
|
MYBAGS_CMD_OPT_FREEZE, -- done
|
||||||
|
MYBAGS_CMD_OPT_LOCK, -- done
|
||||||
|
MYBAGS_CMD_OPT_COLUMNS, -- done
|
||||||
|
MYBAGS_CMD_OPT_BAG, -- done
|
||||||
|
MYBAGS_CMD_OPT_HIGHLIGHT, -- done
|
||||||
|
MYBAGS_CMD_OPT_NOESC, -- done
|
||||||
|
MYBAGS_CMD_OPT_TITLE, -- done
|
||||||
|
MYBAGS_CMD_OPT_CASH, -- done
|
||||||
|
MYBAGS_CMD_OPT_BUTTONS, -- done
|
||||||
|
MYBAGS_CMD_OPT_AIOI, -- done
|
||||||
|
MYBAGS_CMD_OPT_REVERSE, -- done
|
||||||
|
MYBAGS_CMD_OPT_BORDER, -- done
|
||||||
|
MYBAGS_CMD_OPT_PLAYERSEL, -- done
|
||||||
|
MYBAGS_CMD_OPT_COUNT, -- done
|
||||||
|
MYBAGS_CMD_OPT_SCALE, -- done
|
||||||
|
MYBAGS_CMD_OPT_STRATA, -- done
|
||||||
|
MYBAGS_CMD_OPT_ANCHOR, -- done
|
||||||
|
MYBAGS_CMD_OPT_TOGGLE, -- done
|
||||||
|
MYBAGS_CMD_RESET, -- done
|
||||||
|
MYBAGS_CMD_OPT_GRAPHICS, -- skip
|
||||||
|
MYBAGS_CMD_OPT_SLOTCOLOR, -- skip
|
||||||
|
}
|
||||||
|
]]
|
||||||
@@ -0,0 +1,703 @@
|
|||||||
|
local MYBANK_DEFAULT_OPTIONS = {
|
||||||
|
["Columns"] = 14,
|
||||||
|
["Replace"] = true,
|
||||||
|
["Bag"] = "bar",
|
||||||
|
["Graphics"] = "art",
|
||||||
|
["Count"] = "free",
|
||||||
|
["HlItems"] = true,
|
||||||
|
["Sort"] = "realm",
|
||||||
|
["Search"] = true,
|
||||||
|
["HlBags"] = true,
|
||||||
|
["Freeze"] = "sticky",
|
||||||
|
["Lock"] = false,
|
||||||
|
["NoEsc"] = false,
|
||||||
|
["Title"] = true,
|
||||||
|
["Cash"] = true,
|
||||||
|
["Buttons"] = true,
|
||||||
|
["AIOI"] = false,
|
||||||
|
["Border"] = true,
|
||||||
|
["Cache"] = nil,
|
||||||
|
["Player"] = true,
|
||||||
|
["Scale"] = false,
|
||||||
|
["Strata"] = "DIALOG",
|
||||||
|
["Anchor"] = "bottomleft",
|
||||||
|
["BackColor"] = {0.7,0,0,0},
|
||||||
|
["SlotColor"] = nil,
|
||||||
|
["AmmoColor"] = nil,
|
||||||
|
["EnchantColor"] = nil,
|
||||||
|
["EngColor"] = nil,
|
||||||
|
["HerbColor"] = nil,
|
||||||
|
["MAXBAGSLOTS"] = 36,
|
||||||
|
["_TOPOFFSET"] = 28,
|
||||||
|
["_BOTTOMOFFSET"] = 20,
|
||||||
|
["_LEFTOFFSET"] = 8,
|
||||||
|
["_RIGHTOFFSET"] = 3,
|
||||||
|
}
|
||||||
|
|
||||||
|
MyBank = LibStub("AceAddon-3.0"):NewAddon("MyBank", "MyBagsCore-1.0", "AceHook-3.0", "AceEvent-3.0", "AceConsole-3.0")
|
||||||
|
local MB_Config = LibStub("AceConfig-3.0")
|
||||||
|
local MB_Dialog = LibStub("AceConfigDialog-3.0")
|
||||||
|
local MB_Cmd = LibStub("AceConfigCmd-3.0")
|
||||||
|
local MB_Core = LibStub("MyBagsCore-1.0")
|
||||||
|
|
||||||
|
local L = LibStub("AceLocale-3.0"):GetLocale("MyBags")
|
||||||
|
|
||||||
|
function MyBank:OnInitialize()
|
||||||
|
self.name = "MyBank"
|
||||||
|
self.frameName = "MyBankFrame"
|
||||||
|
self.defaults = MYBANK_DEFAULT_OPTIONS
|
||||||
|
self.totalBags = 7
|
||||||
|
self.firstBag = 5
|
||||||
|
self.isBank = true
|
||||||
|
self.atBank = false
|
||||||
|
self.saveBankFrame = BankFrame
|
||||||
|
self.anchorPoint = "BOTTOMLEFT"
|
||||||
|
self.anchorParent = "UIParent"
|
||||||
|
self.anchorOffsetX = 5
|
||||||
|
self.anchorOffsetY = 100
|
||||||
|
self.db = LibStub("AceDB-3.0"):New("MyBankDB");
|
||||||
|
local prof = self.db:GetCurrentProfile()
|
||||||
|
if self.db.profiles[prof] and self.db.profiles[prof]["Columns"] and self.db.profiles[prof]["Columns"] > 0 then
|
||||||
|
else
|
||||||
|
self.db.profiles[prof] = self.defaults
|
||||||
|
end
|
||||||
|
self:RegisterChatCommand("mb", "MB_ChatCommand")
|
||||||
|
self:RegisterChatCommand("mybank", "MB_ChatCommand")
|
||||||
|
self.options = {
|
||||||
|
type = "group",
|
||||||
|
args = {
|
||||||
|
replace = {
|
||||||
|
type = "toggle",
|
||||||
|
name = "Replace",
|
||||||
|
desc = "Set replacing of default bags",
|
||||||
|
get = function(info)
|
||||||
|
return MyBank.IsSet("Replace")
|
||||||
|
end,
|
||||||
|
set = function(info, val)
|
||||||
|
MyBank:SetReplace()
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
freeze = {
|
||||||
|
type = "select",
|
||||||
|
name = "Freeze",
|
||||||
|
desc = "Keep window from closing when you leave vendors or bank",
|
||||||
|
values = {
|
||||||
|
["always"] = "Always leave the bag open",
|
||||||
|
["sticky"] = "Only leave open if manually opened",
|
||||||
|
["none"] = "Let the UI close the window",
|
||||||
|
},
|
||||||
|
get = function(info)
|
||||||
|
return MyBank.GetOpt("Freeze")
|
||||||
|
end,
|
||||||
|
set = function(info, val)
|
||||||
|
MyBank:SetFreeze(val)
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
lock = {
|
||||||
|
type = "toggle",
|
||||||
|
name = "Lock",
|
||||||
|
desc = "Keep the window from moving",
|
||||||
|
get = function(info)
|
||||||
|
return MyBank.IsSet("Lock")
|
||||||
|
end,
|
||||||
|
set = function(info, val)
|
||||||
|
MyBank:SetLock()
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
cols = {
|
||||||
|
type = "range",
|
||||||
|
name = "Columns",
|
||||||
|
desc = "Resize the frame",
|
||||||
|
step = 1,
|
||||||
|
min = 2,
|
||||||
|
max = 24,
|
||||||
|
softMin = 2,
|
||||||
|
softMax = 24,
|
||||||
|
get = function(info)
|
||||||
|
return MyBank.GetOpt("Columns")
|
||||||
|
end,
|
||||||
|
set = function(info, val)
|
||||||
|
MyBank:SetColumns(val)
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
bag = {
|
||||||
|
type = "select",
|
||||||
|
name = "Bag",
|
||||||
|
desc = "Toggle between bag button view options",
|
||||||
|
values = {
|
||||||
|
["bar"] = "Bags are displayed as a bar on top of the frame",
|
||||||
|
["before"] = "Bag icons are places in the frame before bag slots",
|
||||||
|
["none"] = "Bags are hidden from the frame",
|
||||||
|
},
|
||||||
|
get = function(info)
|
||||||
|
return MyBank.GetOpt("Bag")
|
||||||
|
end,
|
||||||
|
set = function(info, val)
|
||||||
|
MyBank:SetBagDisplay(val)
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
back = {
|
||||||
|
type = "select",
|
||||||
|
name = "Background",
|
||||||
|
desc = "Toggle window background options",
|
||||||
|
values = {
|
||||||
|
["default"] = "Semi-transparent minimalistic background",
|
||||||
|
["art"] = "Blizzard style artwork",
|
||||||
|
["none"] = "Disable background",
|
||||||
|
},
|
||||||
|
get = function(info)
|
||||||
|
return MyBank.GetOpt("Graphics")
|
||||||
|
end,
|
||||||
|
set = function(info, val)
|
||||||
|
MyBank:SetGraphicsDisplay(val)
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
sort = {
|
||||||
|
type = "select",
|
||||||
|
name = "Sort",
|
||||||
|
desc = "Sort names in character list",
|
||||||
|
values = {
|
||||||
|
["realm"] = "Sort by realm names first",
|
||||||
|
["char"] = "Sort by character names first",
|
||||||
|
["update"] = "Sort by update times",
|
||||||
|
},
|
||||||
|
get = function(info)
|
||||||
|
return MyBank.GetOpt("Sort")
|
||||||
|
end,
|
||||||
|
set = function(info, val)
|
||||||
|
MyBank.SetOpt("Sort", val)
|
||||||
|
MyBank.Result("Sort: ", val)
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
search = {
|
||||||
|
type = "toggle",
|
||||||
|
name = "Search",
|
||||||
|
desc = "Enable searchbox",
|
||||||
|
get = function(info)
|
||||||
|
return MyBank.GetOpt("Search")
|
||||||
|
end,
|
||||||
|
set = function(info, val)
|
||||||
|
MyBank:SetSearch()
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
highlight = {
|
||||||
|
type = "multiselect",
|
||||||
|
name = "Hilight",
|
||||||
|
desc = "Toggle Highlighting options",
|
||||||
|
values = {
|
||||||
|
["items"] = "Highlight items when you mouse over bag slots",
|
||||||
|
["bag"] = "Highlight bag when you mouse over an item",
|
||||||
|
},
|
||||||
|
get = function(info, key)
|
||||||
|
if key == "items" then
|
||||||
|
return MyBank.GetOpt("HlItems")
|
||||||
|
end
|
||||||
|
if key == "bag" then
|
||||||
|
return MyBank.GetOpt("HlBags")
|
||||||
|
end
|
||||||
|
end,
|
||||||
|
set = function(info, key, val)
|
||||||
|
MyBank:SetHighlight(key)
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
noesc = {
|
||||||
|
type = "toggle",
|
||||||
|
name = "Escape",
|
||||||
|
desc = "Remove frame from the list of UI managed files, to be used with freeze",
|
||||||
|
get = function(info)
|
||||||
|
return MyBank.GetOpt("NoEsc")
|
||||||
|
end,
|
||||||
|
set = function(info, val)
|
||||||
|
MyBank:SetNoEsc()
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
title = {
|
||||||
|
type = "toggle",
|
||||||
|
name = "Title",
|
||||||
|
desc = "Show/Hide the title",
|
||||||
|
get = function(info)
|
||||||
|
return MyBank.GetOpt("Title")
|
||||||
|
end,
|
||||||
|
set = function(info, val)
|
||||||
|
MyBank:SetTitle()
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
cash = {
|
||||||
|
type = "toggle",
|
||||||
|
name = "Cash",
|
||||||
|
desc = "Show/Hide the money display",
|
||||||
|
get = function(info)
|
||||||
|
return MyBank.GetOpt("Cash")
|
||||||
|
end,
|
||||||
|
set = function(info, val)
|
||||||
|
MyBank:SetCash()
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
buttons = {
|
||||||
|
type = "toggle",
|
||||||
|
name = "Buttons",
|
||||||
|
desc = "Show/Hide the close and lock buttons",
|
||||||
|
get = function(info)
|
||||||
|
return MyBank.GetOpt("Buttons")
|
||||||
|
end,
|
||||||
|
set = function(info, val)
|
||||||
|
MyBank:SetButtons()
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
aioi = {
|
||||||
|
type = "toggle",
|
||||||
|
name = "AIOI",
|
||||||
|
desc = "Toggle partial row placement at bottom left or upper right",
|
||||||
|
get = function(info)
|
||||||
|
return MyBank.GetOpt("AIOI")
|
||||||
|
end,
|
||||||
|
set = function(info, val)
|
||||||
|
MyBank:SetAIOI()
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
reverse = {
|
||||||
|
type = "toggle",
|
||||||
|
name = "Reverse",
|
||||||
|
desc = "Toggle order of bags (item order within bags is unchanged)",
|
||||||
|
get = function(info)
|
||||||
|
return MyBank.GetOpt("Reverse")
|
||||||
|
end,
|
||||||
|
set = function(info, val)
|
||||||
|
MyBank:SetReverse()
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
quality = {
|
||||||
|
type = "toggle",
|
||||||
|
name = "Quality",
|
||||||
|
desc = "Highlight items based on quality",
|
||||||
|
get = function(info)
|
||||||
|
return MyBank.GetOpt("Border")
|
||||||
|
end,
|
||||||
|
set = function(info, val)
|
||||||
|
MyBank:SetBorder()
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
player = {
|
||||||
|
type = "toggle",
|
||||||
|
name = "Player",
|
||||||
|
desc = "Show/Hide the offline player selection box",
|
||||||
|
get = function(info)
|
||||||
|
return MyBank.GetOpt("Player")
|
||||||
|
end,
|
||||||
|
set = function(info, val)
|
||||||
|
MyBank:SetPlayerSel()
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
count = {
|
||||||
|
type = "select",
|
||||||
|
name = "Count",
|
||||||
|
desc = "Toggles between item count display modes",
|
||||||
|
values = {
|
||||||
|
["free"] = "Count free slots",
|
||||||
|
["used"] = "Count used slots",
|
||||||
|
["none"] = "Disable slot display",
|
||||||
|
},
|
||||||
|
get = function(info)
|
||||||
|
return MyBank.GetOpt("Count")
|
||||||
|
end,
|
||||||
|
set = function(info, val)
|
||||||
|
MyBank:SetCount(val)
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
scale = {
|
||||||
|
type = "range",
|
||||||
|
name = "Scale",
|
||||||
|
desc = "Sets the Scale for the frame",
|
||||||
|
min = 0.2,
|
||||||
|
max = 2.0,
|
||||||
|
softMin = 0.2,
|
||||||
|
softMax = 2.0,
|
||||||
|
get = function(info)
|
||||||
|
return MyBank.GetOpt("Scale")
|
||||||
|
end,
|
||||||
|
set = function(info, val)
|
||||||
|
MyBank:SetScale(val)
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
strata = {
|
||||||
|
type = "select",
|
||||||
|
name = "Strata",
|
||||||
|
desc = "Sets the Strata for the frame",
|
||||||
|
values = {
|
||||||
|
["BACKGROUND"] = "BACKGROUND",
|
||||||
|
["LOW"] = "LOW",
|
||||||
|
["MEDIUM"] = "MEDIUM",
|
||||||
|
["HIGH"] = "HIGH",
|
||||||
|
["DIALOG"] = "DIALOG",
|
||||||
|
},
|
||||||
|
get = function(info)
|
||||||
|
return MyBank.GetOpt("Strata")
|
||||||
|
end,
|
||||||
|
set = function(info, val)
|
||||||
|
MyBank:SetStrata(val)
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
anchor = {
|
||||||
|
type = "select",
|
||||||
|
name = "Anchor",
|
||||||
|
desc = "Sets the anchor point for the frame",
|
||||||
|
values = {
|
||||||
|
["bottomleft"] = "Frame grows from bottom left",
|
||||||
|
["bottomright"] = "Frame grows from bottom right",
|
||||||
|
["topleft"] = "Frame grows from top left",
|
||||||
|
["topright"] = "Frame grows from top right",
|
||||||
|
},
|
||||||
|
get = function(info)
|
||||||
|
return MyBank.GetOpt("Anchor")
|
||||||
|
end,
|
||||||
|
set = function(info, val)
|
||||||
|
MyBank:SetAnchor(val)
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
tog = {
|
||||||
|
type = "execute",
|
||||||
|
name = "Toggle",
|
||||||
|
desc = "Toggle the frame",
|
||||||
|
guiHidden = true,
|
||||||
|
func = function()
|
||||||
|
MyBank:Toggle()
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
reset = {
|
||||||
|
type = "multiselect",
|
||||||
|
name = "Reset",
|
||||||
|
desc = "Resets elements of the addon",
|
||||||
|
guiHidden = true,
|
||||||
|
values = {
|
||||||
|
["settings"] = "Reset all settings to default",
|
||||||
|
["anchor"] = "Reanchors the frame to it's default position",
|
||||||
|
},
|
||||||
|
get = function(info, key)
|
||||||
|
return true
|
||||||
|
end,
|
||||||
|
set = function(info, key, val)
|
||||||
|
if key == "settings" then
|
||||||
|
MyBank:ResetSettings()
|
||||||
|
end
|
||||||
|
if key == "anchor" then
|
||||||
|
MyBank:ResetAnchor()
|
||||||
|
end
|
||||||
|
end
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
end
|
||||||
|
|
||||||
|
function MyBank:OnEnable()
|
||||||
|
-- MyBagsCore:Enable(self);
|
||||||
|
MyBankFrameBank.maxIndex = 28
|
||||||
|
MyBankFrameBank:SetID(BANK_CONTAINER)
|
||||||
|
MyBankFrameBag0:SetID(5)
|
||||||
|
MyBankFrameBag1:SetID(6)
|
||||||
|
MyBankFrameBag2:SetID(7)
|
||||||
|
MyBankFrameBag3:SetID(8)
|
||||||
|
MyBankFrameBag4:SetID(9)
|
||||||
|
MyBankFrameBag5:SetID(10)
|
||||||
|
MyBankFrameBag6:SetID(11)
|
||||||
|
if self.GetOpt("Replace") then
|
||||||
|
BankFrame:UnregisterEvent("BANKFRAME_OPENED")
|
||||||
|
BankFrame:UnregisterEvent("BANKFRAME_CLOSED")
|
||||||
|
_G["BankFrame"] = self.frame
|
||||||
|
end
|
||||||
|
MyBankFramePortrait:SetTexture("Interface\\Addons\\MyBags\\Skin\\MyBankPortrait")
|
||||||
|
StaticPopupDialogs["PURCHASE_BANKBAG"] = {
|
||||||
|
text = TEXT(CONFIRM_BUY_BANK_SLOT),
|
||||||
|
button1 = TEXT(YES),
|
||||||
|
button2 = TEXT(NO),
|
||||||
|
OnAccept = function()
|
||||||
|
if CT_oldPurchaseSlot then
|
||||||
|
CT_oldPurchaseSlot()
|
||||||
|
else
|
||||||
|
PurchaseSlot()
|
||||||
|
end;
|
||||||
|
end,
|
||||||
|
OnShow = function()
|
||||||
|
MoneyFrame_Update(this:GetName().."MoneyFrame", GetBankSlotCost());
|
||||||
|
end,
|
||||||
|
showAlert = 1,
|
||||||
|
hasMoneyFrame = 1,
|
||||||
|
timeout = 0,
|
||||||
|
hideOnEscape = 1,
|
||||||
|
}
|
||||||
|
end
|
||||||
|
|
||||||
|
function MyBank:MB_ChatCommand(input)
|
||||||
|
if not input or input:trim() == "" then
|
||||||
|
MB_Dialog:Open(self.name)
|
||||||
|
else
|
||||||
|
MB_Cmd.HandleCommand(MyBank, "mybank", self.name, input)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
function MyBank:Disable()
|
||||||
|
BankFrame = self.saveBankFrame
|
||||||
|
BankFrame:RegisterEvent("BANKFRAME_OPENED")
|
||||||
|
BankFrame:RegisterEvent("BANKFRAME_CLOSED")
|
||||||
|
end
|
||||||
|
|
||||||
|
function MyBank:LoadDropDown()
|
||||||
|
local dropDown = _G[self.frameName .. "CharSelectDropDown"]
|
||||||
|
local dropDownButton = _G[self.frameName .. "CharSelectDropDownButton"]
|
||||||
|
if not dropDown then return end
|
||||||
|
local last_this = _G["this"]
|
||||||
|
_G["this"] = dropDownButton
|
||||||
|
UIDropDownMenu_Initialize(dropDown, self.UserDropDown_Initialize)
|
||||||
|
UIDropDownMenu_SetSelectedValue(dropDown, self:GetCurrentPlayer())
|
||||||
|
UIDropDownMenu_SetWidth(dropDown, 140)
|
||||||
|
_G["this"] = last_this
|
||||||
|
end
|
||||||
|
|
||||||
|
function MyBank:UserDropDown_Initialize()
|
||||||
|
local this = self or _G.this
|
||||||
|
local chars, char_num, i
|
||||||
|
chars = MyBank:GetSortedCharList(MyBank.GetOpt("Sort"))
|
||||||
|
char_num = getn(chars)
|
||||||
|
if (char_num == 0) then
|
||||||
|
MyBank.GetOpt("Player")
|
||||||
|
return
|
||||||
|
end
|
||||||
|
local frame = this:GetParent():GetParent()
|
||||||
|
local selectedValue = UIDropDownMenu_GetSelectedValue(this)
|
||||||
|
|
||||||
|
for i = 1, char_num do
|
||||||
|
local info = {
|
||||||
|
["text"] = chars[i],
|
||||||
|
["value"] = chars[i],
|
||||||
|
["func"] = frame.self.UserDropDown_OnClick,
|
||||||
|
["owner"] = frame.self,
|
||||||
|
["checked"] = nil,
|
||||||
|
}
|
||||||
|
if selectedValue == info.value then info.checked = 1 end
|
||||||
|
UIDropDownMenu_AddButton(info)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
function MyBank:UserDropDown_OnClick()
|
||||||
|
local this = self or _G.this
|
||||||
|
self = this.owner
|
||||||
|
local dropDown = _G[self.frameName .. "CharSelectDropDown"]
|
||||||
|
self.Player = this.value
|
||||||
|
UIDropDownMenu_SetSelectedValue(dropDown, this.value)
|
||||||
|
self:LayoutFrame()
|
||||||
|
end
|
||||||
|
|
||||||
|
function MyBank:RegisterEvents()
|
||||||
|
MB_Core:RegisterEvents(self)
|
||||||
|
self:RegisterEvent("BANKFRAME_OPENED")
|
||||||
|
self:RegisterEvent("BANKFRAME_CLOSED")
|
||||||
|
self:RegisterEvent("PLAYERBANKSLOTS_CHANGED", "LayoutFrameOnEvent")
|
||||||
|
self:RegisterEvent("PLAYERBANKBAGSLOTS_CHANGED","LayoutFrameOnEvent")
|
||||||
|
end
|
||||||
|
|
||||||
|
function MyBank:HookFunctions()
|
||||||
|
MB_Core:HookFunctions(self)
|
||||||
|
self:RawHook("ToggleAllBags", true)
|
||||||
|
self:RawHook("CloseAllBags", true)
|
||||||
|
end
|
||||||
|
|
||||||
|
function MyBank:ToggleAllBags(forceopen)
|
||||||
|
if forceopen then
|
||||||
|
OpenBackpack()
|
||||||
|
else
|
||||||
|
ToggleBackpack()
|
||||||
|
end
|
||||||
|
local action, i
|
||||||
|
if (IsBagOpen(0) or MyInventory.frame:IsVisible()) then
|
||||||
|
action = "OpenBag"
|
||||||
|
else
|
||||||
|
action = "CloseBag"
|
||||||
|
end
|
||||||
|
for i=1, 4, 1 do
|
||||||
|
if not (MyInventory.GetOpt("Replace") and MyInventory:IncludeBag(i)) then
|
||||||
|
self.hooks[action](i)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
for i=5, 11, 1 do
|
||||||
|
if not MyBank.GetOpt("Replace") or not MyBank:IncludeBag(i) then
|
||||||
|
self.hooks[action](i)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
function MyBank:CloseAllBags()
|
||||||
|
local i
|
||||||
|
MyInventory:Close()
|
||||||
|
CloseBackpack() -- just in case backpack is not contolled by MyInventory
|
||||||
|
for i=1, 4, 1 do
|
||||||
|
if not MyInventory.GetOpt("Replace") or not MyInventory:IncludeBag(i) then
|
||||||
|
self.hooks.CloseBag(i)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
for i=5, 11, 1 do
|
||||||
|
if not MyBank.GetOpt("Replace") or not MyBank:IncludeBag(i) then
|
||||||
|
self.hooks.CloseBag(i)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
function MyBank:BAG_UPDATE(event, bag)
|
||||||
|
if self.isLive and (bag == -1 or (bag >= 5 and bag <= 11)) then
|
||||||
|
self:LayoutFrame()
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
function MyBank:BANKFRAME_OPENED()
|
||||||
|
MyBank.atBank = true
|
||||||
|
SetPortraitTexture(MyBankFramePortrait, "npc")
|
||||||
|
if self.Freeze == "always" or (self.Freeze == "sticky" and self.frame:IsVisible()) then
|
||||||
|
self.holdOpen = true
|
||||||
|
else
|
||||||
|
self.holdOpen = false
|
||||||
|
end
|
||||||
|
if self.GetOpt("Replace") then
|
||||||
|
self:Open()
|
||||||
|
else
|
||||||
|
self:LayoutFrame()
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
function MyBank:BANKFRAME_CLOSED()
|
||||||
|
MyBank.atBank = false
|
||||||
|
MyBankFramePortrait:SetTexture("Interface\\Addons\\MyBags\\Skin\\MyBankPortrait")
|
||||||
|
if self.GetOpt("Replace") and not self.holdOpen then
|
||||||
|
if self.frame:IsVisible() then
|
||||||
|
self.frame:Hide()
|
||||||
|
end -- calling self:close() would trigger the bank closing twice
|
||||||
|
else
|
||||||
|
self.holdOpen = false
|
||||||
|
if self.isLive then self:LayoutFrame() end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
function MyBank:GetInfoFunc()
|
||||||
|
if self.isLive then
|
||||||
|
return self.GetInfoLive
|
||||||
|
end
|
||||||
|
if IsAddOnLoaded("DataStore_Containers") then
|
||||||
|
return self.GetInfoDataStore
|
||||||
|
end
|
||||||
|
if IsAddOnLoaded("MyBagsCache") then
|
||||||
|
return self.GetInfoMyBagsCache
|
||||||
|
end
|
||||||
|
return self.GetInfoNone
|
||||||
|
end
|
||||||
|
|
||||||
|
function MyBank:GetSortedCharList(sorttype, realm)
|
||||||
|
if IsAddOnLoaded("DataStore_Containers") then
|
||||||
|
local realmname
|
||||||
|
local realmlist = {}
|
||||||
|
local realmcount = 0
|
||||||
|
if not realm then
|
||||||
|
for realmname in pairs(DataStore:GetRealms()) do
|
||||||
|
realmcount = realmcount + 1
|
||||||
|
realmlist[realmcount] = realmname
|
||||||
|
end
|
||||||
|
else
|
||||||
|
realmcount = 1
|
||||||
|
realmlist[1] = realm
|
||||||
|
end
|
||||||
|
local result = {}
|
||||||
|
local idx = 0
|
||||||
|
local i
|
||||||
|
local charname, charkey
|
||||||
|
for i=1, realmcount do
|
||||||
|
for charname, charkey in pairs(DataStore:GetCharacters(realmlist[i])) do
|
||||||
|
-- charkey = DataStore:GetCharacter(charname, realmlist[i])
|
||||||
|
if DataStore_Containers.Characters[charkey] then
|
||||||
|
idx = idx + 1
|
||||||
|
result[idx] = charname .. L["CHARACTER_DELIMITOR"] .. realmlist[i]
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
local swapped
|
||||||
|
local q, w
|
||||||
|
local x_time, y_time;
|
||||||
|
local charName, realmName
|
||||||
|
repeat
|
||||||
|
swapped = 0
|
||||||
|
for i = 1, idx-1 do
|
||||||
|
q = result[i]
|
||||||
|
w = result[i+1]
|
||||||
|
charName, realmName = self:SplitString(q)
|
||||||
|
if (not DataStore:GetModuleLastUpdate(DataStore_Containers, charName, realmName)) then
|
||||||
|
x_time = 0
|
||||||
|
else
|
||||||
|
x_time = DataStore:GetModuleLastUpdate(DataStore_Containers, charName, realmName)
|
||||||
|
end
|
||||||
|
charName, realmName = self:SplitString(w)
|
||||||
|
if (not DataStore:GetModuleLastUpdate(DataStore_Containers, charName, realmName)) then
|
||||||
|
y_time = 0
|
||||||
|
else
|
||||||
|
y_time = DataStore:GetModuleLastUpdate(DataStore_Containers, charName, realmName)
|
||||||
|
end
|
||||||
|
if self:SortChars(q, w, x_time, y_time, sorttype) then
|
||||||
|
result[i] = w
|
||||||
|
result[i+1] = q
|
||||||
|
swapped = 1
|
||||||
|
end
|
||||||
|
end
|
||||||
|
until swapped == 0
|
||||||
|
return result
|
||||||
|
end
|
||||||
|
if IsAddOnLoaded("MyBagsCache") then
|
||||||
|
local result = {}
|
||||||
|
local idx = 0
|
||||||
|
local cache = MyBagsCache.db.global
|
||||||
|
local index, value
|
||||||
|
for index, value in pairs(cache) do
|
||||||
|
local charName, realmID = self:SplitString(index)
|
||||||
|
if index ~= "profiles" then
|
||||||
|
if (not realm or realmID == realm) then
|
||||||
|
idx = idx + 1
|
||||||
|
result[idx] = index
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
local swapped
|
||||||
|
local q, w
|
||||||
|
local x_time, y_time
|
||||||
|
local i
|
||||||
|
repeat
|
||||||
|
swapped = 0
|
||||||
|
for i = 1, idx-1 do
|
||||||
|
q = result[i]
|
||||||
|
w = result[i+1]
|
||||||
|
if (not cache[q].updateTime) then
|
||||||
|
x_time = 0
|
||||||
|
else
|
||||||
|
x_time = cache[q].updateTime
|
||||||
|
end
|
||||||
|
if (not cache[w].updateTime) then
|
||||||
|
y_time = 0
|
||||||
|
else
|
||||||
|
y_time = cache[w].updateTime
|
||||||
|
end
|
||||||
|
if self:SortChars(q, w, x_time, y_time, sorttype) then
|
||||||
|
result[i] = w
|
||||||
|
result[i+1] = q
|
||||||
|
swapped = 1
|
||||||
|
end
|
||||||
|
end
|
||||||
|
until swapped == 0
|
||||||
|
return result
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
function MyBank:SetReplace()
|
||||||
|
self.TogMsg("Replace", "Replace default bags")
|
||||||
|
self:LayoutFrame()
|
||||||
|
if self.GetOpt("Replace") then
|
||||||
|
BankFrame:UnregisterEvent("BANKFRAME_OPENED")
|
||||||
|
BankFrame:UnregisterEvent("BANKFRAME_CLOSED")
|
||||||
|
_G["BankFrame"] = self.frame
|
||||||
|
else
|
||||||
|
_G["BankFrame"] = self.saveBankFrame
|
||||||
|
BankFrame:RegisterEvent("BANKFRAME_OPENED")
|
||||||
|
BankFrame:RegisterEvent("BANKFRAME_CLOSED")
|
||||||
|
end
|
||||||
|
end
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
## Interface: 40300
|
||||||
|
## Author: Ramble (modified by Isharra) (updated by thegabbert)
|
||||||
|
## Title: MyBank |cff007FFF -Ace-|r
|
||||||
|
## Notes: A replacement for the Blizzard Bank frame bags allowing remote viewing and viewing of other characters data when KC_Items.bank or MyBagsCache are available.
|
||||||
|
## Dependancies: Ace, MyBags
|
||||||
|
## SavedVariables: MyBankDB
|
||||||
|
## LoadOnDemand: 0
|
||||||
|
MyBank.xml
|
||||||
@@ -0,0 +1,36 @@
|
|||||||
|
<Ui xmlns="http://www.blizzard.com/wow/ui/"
|
||||||
|
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||||
|
xsi:schemaLocation="http://www.blizzard.com/wow/ui/FrameXML/UI.xsd">
|
||||||
|
<Include file="Locals\Locals.xml"/>
|
||||||
|
<Script file="MyBank.lua"/>
|
||||||
|
<Frame name="MyBagsBankContainerTemplate" inherits="MyBagsContainerTemplate" ID="BANK_CONTAINER" virtual="true">
|
||||||
|
</Frame>
|
||||||
|
<Frame name="MyBankAnchorFrame" hidden="false" movable="true" parent="UIParent">
|
||||||
|
<Size><AbsDimension x="10" y="10"/></Size>
|
||||||
|
<Anchors>
|
||||||
|
<Anchor point="BOTTOMLEFT" >
|
||||||
|
<Offset><AbsDimension x="5" y="100"/></Offset>
|
||||||
|
</Anchor>
|
||||||
|
</Anchors>
|
||||||
|
|
||||||
|
<Frames>
|
||||||
|
<Frame name="MyBankFrame" inherits="MyBagsFrameTemplate">
|
||||||
|
<Anchors>
|
||||||
|
<Anchor point="BOTTOMLEFT" />
|
||||||
|
</Anchors>
|
||||||
|
<Frames>
|
||||||
|
<Frame name="$parentBank" inherits="MyBagsBankContainerTemplate" ID="BANK_CONTAINER"/>
|
||||||
|
<Frame name="$parentBag5" inherits="MyBagsContainerTemplate" id="5"/>
|
||||||
|
<Frame name="$parentBag6" inherits="MyBagsContainerTemplate" id="6"/>
|
||||||
|
</Frames>
|
||||||
|
<Scripts>
|
||||||
|
<OnHide>
|
||||||
|
if MyBank.atBank then
|
||||||
|
CloseBankFrame()
|
||||||
|
end
|
||||||
|
</OnHide>
|
||||||
|
</Scripts>
|
||||||
|
</Frame>
|
||||||
|
</Frames>
|
||||||
|
</Frame>
|
||||||
|
</Ui>
|
||||||
@@ -0,0 +1,687 @@
|
|||||||
|
local MYBAGS_MAXEQUIPSLOTS = 19
|
||||||
|
local MYBAGS_SLOTCOLOR = { 0.5, 0.5, 0.5 }
|
||||||
|
local MYEQUIPMENT_SLOT = {}
|
||||||
|
|
||||||
|
local SLOTNAMES = {
|
||||||
|
"HEADSLOT",
|
||||||
|
"NECKSLOT",
|
||||||
|
"SHOULDERSLOT",
|
||||||
|
"BACKSLOT",
|
||||||
|
"CHESTSLOT",
|
||||||
|
"SHIRTSLOT",
|
||||||
|
"TABARDSLOT",
|
||||||
|
"WRISTSLOT",
|
||||||
|
"HANDSSLOT",
|
||||||
|
"WAISTSLOT",
|
||||||
|
"LEGSSLOT",
|
||||||
|
"FEETSLOT",
|
||||||
|
"FINGER0SLOT",
|
||||||
|
"FINGER1SLOT",
|
||||||
|
"TRINKET0SLOT",
|
||||||
|
"TRINKET1SLOT",
|
||||||
|
"MAINHANDSLOT",
|
||||||
|
"SECONDARYHANDSLOT",
|
||||||
|
}
|
||||||
|
|
||||||
|
local MYEQUIPMENT_DEFAULT_OPTIONS = {
|
||||||
|
["Columns"] = 7,
|
||||||
|
["Graphics"] = "art",
|
||||||
|
["Lock"] = false,
|
||||||
|
["NoEsc"] = false,
|
||||||
|
["Title"] = true,
|
||||||
|
["Cash"] = true,
|
||||||
|
["Sort"] = "realm",
|
||||||
|
["Buttons"] = true,
|
||||||
|
["Border"] = true,
|
||||||
|
["Cache"] = nil,
|
||||||
|
["Player"] = true,
|
||||||
|
["Scale"] = false,
|
||||||
|
["Strata"] = "DIALOG",
|
||||||
|
["Anchor"] = "bottomright",
|
||||||
|
["BackColor"] = {0.7,0,0,0},
|
||||||
|
["SlotColor"] = nil,
|
||||||
|
["_TOPOFFSET"] = 28,
|
||||||
|
["_BOTTOMOFFSET"] = 20,
|
||||||
|
["_LEFTOFFSET"] = 8,
|
||||||
|
["_RIGHTOFFSET"] = 3,
|
||||||
|
}
|
||||||
|
|
||||||
|
MyEquipment = LibStub("AceAddon-3.0"):NewAddon("MyEquipment", "AceConsole-3.0", "AceHook-3.0", "AceEvent-3.0", "MyBagsCore-1.0")
|
||||||
|
local ME_Dialog = LibStub("AceConfigDialog-3.0")
|
||||||
|
local ME_Cmd = LibStub("AceConfigCmd-3.0")
|
||||||
|
|
||||||
|
local function ColorConvertHexToDigit(h)
|
||||||
|
if(strlen(h)~=6) then return 0,0,0 end
|
||||||
|
local r={a=10,b=11,c=12,d=13,e=14,f=15}
|
||||||
|
return ((tonumber(strsub(h,1,1)) or r[strsub(h,1,1)] or 0) * 16 + (tonumber(strsub(h,2,2)) or r[strsub(h,2,2)] or 0))/255,
|
||||||
|
((tonumber(strsub(h,3,3)) or r[strsub(h,3,3)] or 0) * 16 + (tonumber(strsub(h,4,4)) or r[strsub(h,4,4)] or 0))/255,
|
||||||
|
((tonumber(strsub(h,5,5)) or r[strsub(h,5,5)] or 0) * 16 + (tonumber(strsub(h,6,6)) or r[strsub(h,6,6)] or 0))/255
|
||||||
|
end
|
||||||
|
|
||||||
|
local function GetItemInfoFromLink(l)
|
||||||
|
if(not l) then return end
|
||||||
|
local c,id,il,n=select(3, strfind(l,"|cff(%x+)|Hitem:(%-?%d+)([^|]+)|h%[(.-)%]|h|r"))
|
||||||
|
return n,c,id..il,id
|
||||||
|
end
|
||||||
|
|
||||||
|
local function tonum(val)
|
||||||
|
return tonumber(val or 0)
|
||||||
|
end
|
||||||
|
|
||||||
|
function MyEquipment:OnInitialize()
|
||||||
|
self.name = "MyEquipment"
|
||||||
|
self.frameName = "MyEquipmentFrame"
|
||||||
|
self.defaults = MYEQUIPMENT_DEFAULT_OPTIONS
|
||||||
|
self.isEquipment = true
|
||||||
|
self.anchorPoint = "BOTTOM"
|
||||||
|
self.anchorParent = "UIParent"
|
||||||
|
self.anchorOffsetX = -5
|
||||||
|
self.anchorOffsetY = 100
|
||||||
|
self.db = LibStub("AceDB-3.0"):New("MyEquipmentDB")
|
||||||
|
local prof = self.db:GetCurrentProfile()
|
||||||
|
if self.db.profiles[prof] and self.db.profiles[prof]["Columns"] and self.db.profiles[prof]["Columns"] > 0 then
|
||||||
|
else
|
||||||
|
self.db.profiles[prof] = self.defaults
|
||||||
|
end
|
||||||
|
self:RegisterChatCommand("mq", "ME_ChatCommand")
|
||||||
|
self:RegisterChatCommand("myequip", "ME_ChatCommand")
|
||||||
|
self:RegisterChatCommand("myequipment", "ME_ChatCommand")
|
||||||
|
self.options = {
|
||||||
|
type = "group",
|
||||||
|
args = {
|
||||||
|
lock = {
|
||||||
|
type = "toggle",
|
||||||
|
name = "Lock",
|
||||||
|
desc = "Keep the window from moving",
|
||||||
|
get = function(info)
|
||||||
|
return MyEquipment.IsSet("Lock")
|
||||||
|
end,
|
||||||
|
set = function(info, val)
|
||||||
|
MyEquipment:SetLock()
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
back = {
|
||||||
|
type = "select",
|
||||||
|
name = "Background",
|
||||||
|
desc = "Toggle window background options",
|
||||||
|
values = {
|
||||||
|
["default"] = "Semi-transparent minimalistic background",
|
||||||
|
["art"] = "Blizard style artwork",
|
||||||
|
["none"] = "Disable background",
|
||||||
|
},
|
||||||
|
get = function(info)
|
||||||
|
return MyEquipment.GetOpt("Graphics")
|
||||||
|
end,
|
||||||
|
set = function(info, val)
|
||||||
|
MyEquipment:SetGraphicsDisplay(val)
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
cols = {
|
||||||
|
type = "range",
|
||||||
|
name = "Columns",
|
||||||
|
desc = "Resize the frame",
|
||||||
|
step = 1,
|
||||||
|
min = 2,
|
||||||
|
max = 24,
|
||||||
|
softMin = 2,
|
||||||
|
softMax = 24,
|
||||||
|
get = function(info)
|
||||||
|
return MyEquipment.GetOpt("Columns")
|
||||||
|
end,
|
||||||
|
set = function(info, val)
|
||||||
|
MyEquipment:SetColumns(val)
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
sort = {
|
||||||
|
type = "select",
|
||||||
|
name = "Sort",
|
||||||
|
desc = "Sort names in character list",
|
||||||
|
values = {
|
||||||
|
["realm"] = "Sort by realm names first",
|
||||||
|
["char"] = "Sort by character names first",
|
||||||
|
["update"] = "Sort by update times",
|
||||||
|
},
|
||||||
|
get = function(info)
|
||||||
|
return MyEquipment.GetOpt("Sort")
|
||||||
|
end,
|
||||||
|
set = function(info, val)
|
||||||
|
MyEquipment.SetOpt("Sort", val)
|
||||||
|
MyEquipment.Result("Sort: ", val)
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
noesc = {
|
||||||
|
type = "toggle",
|
||||||
|
name = "Escape",
|
||||||
|
desc = "Remove frame from the list of UI managed files, to be used with freeze",
|
||||||
|
get = function(info)
|
||||||
|
return MyEquipment.GetOpt("NoEsc")
|
||||||
|
end,
|
||||||
|
set = function(info, val)
|
||||||
|
MyEquipment:SetNoEsc()
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
title = {
|
||||||
|
type = "toggle",
|
||||||
|
name = "Title",
|
||||||
|
desc = "Show/Hide the title",
|
||||||
|
get = function(info)
|
||||||
|
return MyEquipment.GetOpt("Title")
|
||||||
|
end,
|
||||||
|
set = function(info, val)
|
||||||
|
MyEquipment:SetTitle()
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
cash = {
|
||||||
|
type = "toggle",
|
||||||
|
name = "Cash",
|
||||||
|
desc = "Show/Hide the money display",
|
||||||
|
get = function(info)
|
||||||
|
return MyEquipment.GetOpt("Cash")
|
||||||
|
end,
|
||||||
|
set = function(info, val)
|
||||||
|
MyEquipment:SetCash()
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
buttons = {
|
||||||
|
type = "toggle",
|
||||||
|
name = "Buttons",
|
||||||
|
desc = "Show/Hide the close and lock buttons",
|
||||||
|
get = function(info)
|
||||||
|
return MyEquipment.GetOpt("Buttons")
|
||||||
|
end,
|
||||||
|
set = function(info, val)
|
||||||
|
MyEquipment:SetButtons()
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
aioi = {
|
||||||
|
type = "toggle",
|
||||||
|
name = "AIOI",
|
||||||
|
desc = "Toggle partial row placement at bottom left or upper right",
|
||||||
|
get = function(info)
|
||||||
|
return MyEquipment.GetOpt("AIOI")
|
||||||
|
end,
|
||||||
|
set = function(info, val)
|
||||||
|
MyEquipment:SetAIOI()
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
quality = {
|
||||||
|
type = "toggle",
|
||||||
|
name = "Quality",
|
||||||
|
desc = "Highlight items based on quality",
|
||||||
|
get = function(info)
|
||||||
|
return MyEquipment.GetOpt("Border")
|
||||||
|
end,
|
||||||
|
set = function(info, val)
|
||||||
|
MyEquipment:SetBorder()
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
player = {
|
||||||
|
type = "toggle",
|
||||||
|
name = "Player",
|
||||||
|
desc = "Show/Hide the offline player selection box",
|
||||||
|
get = function(info)
|
||||||
|
return MyEquipment.GetOpt("Player")
|
||||||
|
end,
|
||||||
|
set = function(info, val)
|
||||||
|
MyEquipment:SetPlayerSel()
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
scale = {
|
||||||
|
type = "range",
|
||||||
|
name = "Scale",
|
||||||
|
desc = "Sets the Scale for the frame",
|
||||||
|
min = 0.2,
|
||||||
|
max = 2.0,
|
||||||
|
softMin = 0.2,
|
||||||
|
softMax = 2.0,
|
||||||
|
get = function(info)
|
||||||
|
return MyEquipment.GetOpt("Scale")
|
||||||
|
end,
|
||||||
|
set = function(info, val)
|
||||||
|
MyEquipment:SetScale(val)
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
strata = {
|
||||||
|
type = "select",
|
||||||
|
name = "Strata",
|
||||||
|
desc = "Sets the Strata for the frame",
|
||||||
|
values = {
|
||||||
|
["BACKGROUND"] = "BACKGROUND",
|
||||||
|
["LOW"] = "LOW",
|
||||||
|
["MEDIUM"] = "MEDIUM",
|
||||||
|
["HIGH"] = "HIGH",
|
||||||
|
["DIALOG"] = "DIALOG",
|
||||||
|
},
|
||||||
|
get = function(info)
|
||||||
|
return MyEquipment.GetOpt("Strata")
|
||||||
|
end,
|
||||||
|
set = function(info, val)
|
||||||
|
MyEquipment:SetStrata(val)
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
anchor = {
|
||||||
|
type = "select",
|
||||||
|
name = "Anchor",
|
||||||
|
desc = "Sets the anchor point for the frame",
|
||||||
|
values = {
|
||||||
|
["bottomleft"] = "Frame grows from bottom left",
|
||||||
|
["bottomright"] = "Frame grows from bottom right",
|
||||||
|
["topleft"] = "Frame grows from top left",
|
||||||
|
["topright"] = "Frame grows from top right",
|
||||||
|
},
|
||||||
|
get = function(info)
|
||||||
|
return MyEquipment.GetOpt("Anchor")
|
||||||
|
end,
|
||||||
|
set = function(info, val)
|
||||||
|
MyEquipment:SetAnchor(val)
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
tog = {
|
||||||
|
type = "execute",
|
||||||
|
name = "Toggle",
|
||||||
|
desc = "Toggle the frame",
|
||||||
|
guiHidden = true,
|
||||||
|
func = function()
|
||||||
|
MyEquipment:Toggle()
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
reset = {
|
||||||
|
type = "multiselect",
|
||||||
|
name = "Reset",
|
||||||
|
desc = "Resets elements of the addon",
|
||||||
|
guiHidden = true,
|
||||||
|
values = {
|
||||||
|
["settings"] = "Reset all settings to default",
|
||||||
|
["anchor"] = "Reanchors the frame to it's default position",
|
||||||
|
},
|
||||||
|
get = function(info, key)
|
||||||
|
return true
|
||||||
|
end,
|
||||||
|
set = function(info, key, val)
|
||||||
|
if key == "settings" then
|
||||||
|
MyEquipment:ResetSettings()
|
||||||
|
end
|
||||||
|
if key == "anchor" then
|
||||||
|
MyEquipment:ResetAnchor()
|
||||||
|
end
|
||||||
|
end
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
end
|
||||||
|
|
||||||
|
function MyEquipment:OnEnable()
|
||||||
|
MyEquipmentFramePortrait:SetTexture("Interface\\Addons\\MyBags\\Skin\\MyEquipmentPortrait")
|
||||||
|
local key, value
|
||||||
|
for key,value in pairs( SLOTNAMES ) do -- Just in case Blizzard shuffles the slot name table around
|
||||||
|
local slotId = GetInventorySlotInfo(value)
|
||||||
|
MYEQUIPMENT_SLOT[slotId] = value
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
function MyEquipment:Disable()
|
||||||
|
end
|
||||||
|
|
||||||
|
function MyEquipment:RegisterEvents()
|
||||||
|
self:RegisterEvent("UNIT_INVENTORY_CHANGED", "LayoutFrameOnEvent")
|
||||||
|
self:RegisterEvent("ITEM_LOCK_CHANGED", "LayoutFrameOnEvent")
|
||||||
|
end
|
||||||
|
|
||||||
|
function MyEquipment:HookFunctions()
|
||||||
|
end
|
||||||
|
|
||||||
|
function MyEquipment:LoadDropDown()
|
||||||
|
local dropDown = _G[self.frameName .. "CharSelectDropDown"]
|
||||||
|
local dropDownButton = _G[self.frameName .. "CharSelectDropDownButton"]
|
||||||
|
if not dropDown then return end
|
||||||
|
local last_this = _G["this"]
|
||||||
|
_G["this"] = dropDownButton
|
||||||
|
UIDropDownMenu_Initialize(dropDown, self.UserDropDown_Initialize)
|
||||||
|
UIDropDownMenu_SetSelectedValue(dropDown, self:GetCurrentPlayer())
|
||||||
|
-- UIDropDownMenu_SetSelectedValue(dropDown, self.Player)
|
||||||
|
UIDropDownMenu_SetWidth(dropDown, 140)
|
||||||
|
_G["this"] = last_this
|
||||||
|
end
|
||||||
|
|
||||||
|
function MyEquipment:UserDropDown_Initialize()
|
||||||
|
local this = self or _G.this
|
||||||
|
local chars, charnum
|
||||||
|
chars = MyEquipment:GetSortedCharList(MyEquipment.GetOpt("Sort"))
|
||||||
|
charnum = getn(chars)
|
||||||
|
if (charnum == 0) then
|
||||||
|
self.GetOpt("Player")
|
||||||
|
return
|
||||||
|
end
|
||||||
|
local frame = this:GetParent():GetParent()
|
||||||
|
local selectedValue = UIDropDownMenu_GetSelectedValue(this)
|
||||||
|
|
||||||
|
local i
|
||||||
|
for i = 1, charnum do
|
||||||
|
local info = {
|
||||||
|
["text"] = chars[i],
|
||||||
|
["value"] = chars[i],
|
||||||
|
["func"] = frame.self.UserDropDown_OnClick,
|
||||||
|
["owner"] = frame.self,
|
||||||
|
["checked"] = nil,
|
||||||
|
}
|
||||||
|
if selectedValue == info.value then info.checked = 1 end
|
||||||
|
UIDropDownMenu_AddButton(info)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
function MyEquipment:UserDropDown_OnClick()
|
||||||
|
local this = self or _G.this
|
||||||
|
self = this.owner
|
||||||
|
local dropDown = _G[self.frameName .. "CharSelectDropDown"]
|
||||||
|
self.Player = this.value
|
||||||
|
UIDropDownMenu_SetSelectedValue(dropDown, this.value)
|
||||||
|
self:LayoutFrame()
|
||||||
|
end
|
||||||
|
|
||||||
|
function MyEquipment:BAG_UPDATE() -- no bags here, move along
|
||||||
|
end
|
||||||
|
|
||||||
|
function MyEquipment:GetRelic(charID)
|
||||||
|
if self.isLive then
|
||||||
|
return UnitHasRelicSlot("player")
|
||||||
|
elseif IsAddOnLoaded("MyBagsCache") then
|
||||||
|
return MyBagsCache:GetRelic(charID)
|
||||||
|
end
|
||||||
|
return nil
|
||||||
|
end
|
||||||
|
|
||||||
|
function MyEquipment:GetInfoFunc()
|
||||||
|
if self.isLive then
|
||||||
|
return self.GetEquipInfoLive
|
||||||
|
--[[
|
||||||
|
elseif IsAddOnLoaded("DataStore_Inventory") then
|
||||||
|
return self.GetInfoDataStore
|
||||||
|
]]
|
||||||
|
elseif IsAddOnLoaded("MyBagsCache") then
|
||||||
|
return self.GetInfoMyBagsCache
|
||||||
|
end
|
||||||
|
return self.GetInfoNone
|
||||||
|
end
|
||||||
|
|
||||||
|
function MyEquipment:GetEquipInfoLive(itemIndex)
|
||||||
|
local itemLink = GetInventoryItemLink("player",itemIndex)
|
||||||
|
local myColor, myLink, myName = nil
|
||||||
|
local texture, count, quality, ID = nil
|
||||||
|
if itemLink or itemIndex == 0 then
|
||||||
|
texture = GetInventoryItemTexture("player",itemIndex)
|
||||||
|
count = GetInventoryItemCount("player",itemIndex)
|
||||||
|
if itemIndex ~= 0 then
|
||||||
|
quality = select(2, GetItemInfoFromLink(itemLink))
|
||||||
|
ID = select(4, GetItemInfoFromLink(itemLink))
|
||||||
|
end
|
||||||
|
end
|
||||||
|
local hasRelic = UnitHasRelicSlot("player")
|
||||||
|
local locked = IsInventoryItemLocked(itemIndex)
|
||||||
|
return texture, count, ID, locked, quality, readable, nil
|
||||||
|
end
|
||||||
|
|
||||||
|
function MyEquipment:MyEquipmentItemSlotButton_OnLoad(widget)
|
||||||
|
widget:RegisterForDrag("LeftButton")
|
||||||
|
_G[widget:GetName().."NormalTexture"]:SetTexture("Interface\\AddOns\\MyBags\\Skin\\Button")
|
||||||
|
widget.UpdateTooltip = widget.MyEquipmentItemSlotButton_OnEnter;
|
||||||
|
end
|
||||||
|
|
||||||
|
function MyEquipment:MyEquipmentItemSlotButton_OnEnter(widget)
|
||||||
|
local text
|
||||||
|
self:TooltipSetOwner(widget)
|
||||||
|
if self.isLive then
|
||||||
|
local hasItem, hasCooldown, repairCost = GameTooltip:SetInventoryItem("player", widget:GetID())
|
||||||
|
if not hasItem then
|
||||||
|
text = TEXT(_G[MYEQUIPMENT_SLOT[tonum(strsub(widget:GetName(), 21))]])
|
||||||
|
if widget.hasRelic then text = TEXT(_G["RELICSLOT"]) end
|
||||||
|
GameTooltip:SetText(text)
|
||||||
|
end
|
||||||
|
if ( InRepairMode() and repairCost and (repairCost > 0) ) then
|
||||||
|
GameTooltip:AddLine(TEXT(REPAIR_COST), "", 1, 1, 1)
|
||||||
|
SetTooltipMoney(GameTooltip, repairCost)
|
||||||
|
GameTooltip:Show()
|
||||||
|
elseif hasItem and IsControlKeyDown() then
|
||||||
|
ShowInspectCursor()
|
||||||
|
else
|
||||||
|
CursorUpdate(widget)
|
||||||
|
end
|
||||||
|
else
|
||||||
|
local _, count, ID, _, quality, _, name = self:GetInfo(widget:GetID())
|
||||||
|
if ID and ID ~= "" then
|
||||||
|
local hyperlink = self:GetHyperlink(ID)
|
||||||
|
if hyperlink then GameTooltip:SetHyperlink(hyperlink) end
|
||||||
|
if IsControlKeyDown() and hyperlink then ShowInspectCursor() end
|
||||||
|
else
|
||||||
|
text = TEXT(_G[MYEQUIPMENT_SLOT[tonum(strsub(widget:GetName(), 21))]])
|
||||||
|
if widget.hasRelic then text = TEXT(_G["RELICSLOT"]) end
|
||||||
|
if name then -- it's a bleeding ammo slot
|
||||||
|
text = name
|
||||||
|
GameTooltip:SetText(text, ColorConvertHexToDigit(quality))
|
||||||
|
if count >= 1000 then
|
||||||
|
GameTooltip:AddLine(count,1,1,1)
|
||||||
|
GameTooltip:Show()
|
||||||
|
end
|
||||||
|
else
|
||||||
|
GameTooltip:SetText(text)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
function MyEquipment:MyEquipmentItemSlotButton_OnClick(widget, button)
|
||||||
|
if self.isLive then
|
||||||
|
PaperDollItemSlotButton_OnClick(widget, button)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
function MyEquipment:MyEquipmentItemSlotButton_OnModifiedClick(widget, button)
|
||||||
|
if self.isLive then
|
||||||
|
PaperDollItemSlotButton_OnModifiedClick(widget, button)
|
||||||
|
else
|
||||||
|
if ( button == "LeftButton" ) then
|
||||||
|
if ( IsControlKeyDown() ) then
|
||||||
|
local ID = select(3, self:GetInfo( widget:GetID() ))
|
||||||
|
if DressUpItemLink and ID and ID ~= "" then
|
||||||
|
DressUpItemLink("item:"..ID)
|
||||||
|
end
|
||||||
|
elseif ( IsShiftKeyDown() ) then
|
||||||
|
local ID = select(3, self:GetInfo( widget:GetID() ))
|
||||||
|
local hyperLink
|
||||||
|
if ID then hyperLink = self:GetHyperlink(ID) end
|
||||||
|
if hyperLink then
|
||||||
|
ChatEdit_InsertLink(hyperLink)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
function MyEquipment:MyEquipmentItemSlotButton_OnDragStart(widget)
|
||||||
|
if self.isLive then
|
||||||
|
PaperDollItemSlotButton_OnClick(widget, "LeftButton", 1)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
function MyEquipment:MyEquipmentItemSlotButton_OnEvent(widget, event)
|
||||||
|
if self.isLive then
|
||||||
|
PaperDollItemSlotButton_OnEvent(widget, event)
|
||||||
|
else
|
||||||
|
if ( event == "CURSOR_UPDATE" ) then
|
||||||
|
if ( CursorCanGoInSlot(widget:GetID() ) ) then
|
||||||
|
widget:LockHighlight()
|
||||||
|
else
|
||||||
|
widget:UnlockHighlight()
|
||||||
|
end
|
||||||
|
return
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
function MyEquipment:MyEquipmentItemSlotButton_OnUpdate(widget, elapsed)
|
||||||
|
if ( GameTooltip:IsOwned(widget) ) and self.isLive then
|
||||||
|
self:MyEquipmentItemSlotButton_OnEnter(widget)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
function MyEquipment:LayoutEquipmentFrame(self)
|
||||||
|
local itemBase = "MyEquipmentSlotsItem"
|
||||||
|
local texture, count, locked, quality, ammo, key, value, id
|
||||||
|
local slotColor = ((self.GetOpt("SlotColor")) or MYBAGS_SLOTCOLOR)
|
||||||
|
local charID = self:GetCurrentPlayer()
|
||||||
|
local hasRelic = self:GetRelic(charID)
|
||||||
|
local hideAmmo = false
|
||||||
|
self.watchLock = false
|
||||||
|
if self.aioiOrder and (hasRelic or hideAmmo) then
|
||||||
|
self.curCol = self.curCol + 1
|
||||||
|
end
|
||||||
|
for key,value in pairs( SLOTNAMES ) do
|
||||||
|
local slot = GetInventorySlotInfo(value)
|
||||||
|
local itemButton = _G[itemBase .. slot]
|
||||||
|
if self.curCol >= self.GetOpt("Columns") then
|
||||||
|
self.curCol = 0
|
||||||
|
self.curRow = self.curRow + 1
|
||||||
|
end
|
||||||
|
itemButton:Show()
|
||||||
|
itemButton:ClearAllPoints()
|
||||||
|
itemButton:SetPoint("TOPLEFT", self.frame:GetName(), "TOPLEFT", self:GetXY(self.curRow, self.curCol))
|
||||||
|
self.curCol = self.curCol + 1
|
||||||
|
texture, count, id, locked, quality = self:GetInfo(slot)
|
||||||
|
if id and id ~= "" then
|
||||||
|
itemButton.hasItem = 1
|
||||||
|
end
|
||||||
|
if self.isLive then
|
||||||
|
local start,duration, enable = GetInventoryItemCooldown("player", slot)
|
||||||
|
local cooldown = _G[itemButton:GetName() .. "Cooldown"]
|
||||||
|
CooldownFrame_SetTimer(cooldown,start,duration,enable)
|
||||||
|
if duration>0 and enable==0 then
|
||||||
|
SetItemButtonTextureVertexColor(itemButton, 0.4,0.4,0.4)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
if value == "RANGEDSLOT" and hasRelic then
|
||||||
|
itemButton.hasRelic = 1
|
||||||
|
end
|
||||||
|
SetItemButtonTexture(itemButton, (texture or ""))
|
||||||
|
SetItemButtonCount(itemButton, count)
|
||||||
|
SetItemButtonDesaturated(itemButton, locked, 0.5, 0.5, 0.5)
|
||||||
|
if locked and locked ~= "" then
|
||||||
|
itemButton:LockHighlight()
|
||||||
|
self.watchLock =1
|
||||||
|
else itemButton:UnlockHighlight() end
|
||||||
|
if quality and self.GetOpt("Border") then
|
||||||
|
SetItemButtonNormalTextureVertexColor(itemButton, ColorConvertHexToDigit(quality))
|
||||||
|
else
|
||||||
|
SetItemButtonNormalTextureVertexColor(itemButton, unpack(slotColor))
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
function MyEquipment:ME_ChatCommand(input)
|
||||||
|
if not input or input:trim() == "" then
|
||||||
|
ME_Dialog:Open(self.name)
|
||||||
|
else
|
||||||
|
ME_Cmd.HandleCommand(MyEquipment, "myequipment", self.name, input)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
function MyEquipment:GetSortedCharList(sorttype, realm)
|
||||||
|
--[[
|
||||||
|
if IsAddOnLoaded("DataStore_Inventory") then
|
||||||
|
local realmname
|
||||||
|
local realmlist = {}
|
||||||
|
local realmcount = 0
|
||||||
|
if not realm then
|
||||||
|
for realmname in pairs(DataStore:GetRealms()) do
|
||||||
|
realmcount = realmcount + 1
|
||||||
|
realmlist[realmcount] = realmname
|
||||||
|
end
|
||||||
|
else
|
||||||
|
realmcount = 1
|
||||||
|
realmlist[1] = realm
|
||||||
|
end
|
||||||
|
local result = {}
|
||||||
|
local idx = 0
|
||||||
|
local i
|
||||||
|
local charname, charkey
|
||||||
|
for i=1, realmcount do
|
||||||
|
for charname, charkey in pairs(DataStore:GetCharacters(realmlist[i])) do
|
||||||
|
-- charkey = DataStore:GetCharacter(charname, realmlist[i])
|
||||||
|
if DataStore_Inventory.Characters[charkey] then
|
||||||
|
idx = idx + 1
|
||||||
|
result[idx] = charname .. L["CHARACTER_DELIMITOR"] .. realmlist[i]
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
local swapped
|
||||||
|
local q, w
|
||||||
|
local x_time, y_time;
|
||||||
|
local charName, realmName
|
||||||
|
repeat
|
||||||
|
swapped = 0
|
||||||
|
for i = 1, idx-1 do
|
||||||
|
q = result[i]
|
||||||
|
w = result[i+1]
|
||||||
|
charName, realmName = self:SplitString(q)
|
||||||
|
if (not DataStore:GetModuleLastUpdate(DataStore_Inventory, charName, realmName)) then
|
||||||
|
x_time = 0
|
||||||
|
else
|
||||||
|
x_time = DataStore:GetModuleLastUpdate(DataStore_Inventory, charName, realmName)
|
||||||
|
end
|
||||||
|
charName, realmName = self:SplitString(w)
|
||||||
|
if (not DataStore:GetModuleLastUpdate(DataStore_Inventory, charName, realmName)) then
|
||||||
|
y_time = 0
|
||||||
|
else
|
||||||
|
y_time = DataStore:GetModuleLastUpdate(DataStore_Inventory, charName, realmName)
|
||||||
|
end
|
||||||
|
if self:SortChars(q, w, x_time, y_time, sorttype) then
|
||||||
|
result[i] = w
|
||||||
|
result[i+1] = q
|
||||||
|
swapped = 1
|
||||||
|
end
|
||||||
|
end
|
||||||
|
until swapped == 0
|
||||||
|
return result
|
||||||
|
end
|
||||||
|
]]
|
||||||
|
if IsAddOnLoaded("MyBagsCache") then
|
||||||
|
local result = {}
|
||||||
|
local idx = 0
|
||||||
|
local cache = MyBagsCache.db.global
|
||||||
|
local index, value
|
||||||
|
for index, value in pairs(cache) do
|
||||||
|
local charName, realmID = self:SplitString(index)
|
||||||
|
if index ~= "profiles" then
|
||||||
|
if (not realm or realmID == realm) then
|
||||||
|
idx = idx + 1
|
||||||
|
result[idx] = index
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
local swapped
|
||||||
|
local q, w
|
||||||
|
local x_time, y_time
|
||||||
|
local i
|
||||||
|
repeat
|
||||||
|
swapped = 0
|
||||||
|
for i = 1, idx-1 do
|
||||||
|
q = result[i]
|
||||||
|
w = result[i+1]
|
||||||
|
if (not cache[q].updateTime) then
|
||||||
|
x_time = 0
|
||||||
|
else
|
||||||
|
x_time = cache[q].updateTime
|
||||||
|
end
|
||||||
|
if (not cache[w].updateTime) then
|
||||||
|
y_time = 0
|
||||||
|
else
|
||||||
|
y_time =cache[w].updateTime
|
||||||
|
end
|
||||||
|
if self:SortChars(q, w, x_time, y_time, sorttype) then
|
||||||
|
result[i] = w
|
||||||
|
result[i+1] = q
|
||||||
|
swapped = 1
|
||||||
|
end
|
||||||
|
end
|
||||||
|
until swapped == 0
|
||||||
|
return result
|
||||||
|
end
|
||||||
|
end
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
## Interface: 40300
|
||||||
|
## Author: Isharra (updated by thegabbert)
|
||||||
|
## Title: MyEquipment |cff007FFF -Ace-|r
|
||||||
|
## Notes: An alternate view of your equipped items allowing viewing of other characters data when KC_Items.equipment or MyBagsCache are available.
|
||||||
|
## Dependancies: Ace, MyBags
|
||||||
|
## SavedVariables: MyEquipmentDB
|
||||||
|
## LoadOnDemand: 0
|
||||||
|
MyEquipment.xml
|
||||||
@@ -0,0 +1,237 @@
|
|||||||
|
<Ui xmlns="http://www.blizzard.com/wow/ui/"
|
||||||
|
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||||
|
xsi:schemaLocation="http://www.blizzard.com/wow/ui/FrameXML/UI.xsd">
|
||||||
|
<Script file="locals.lua" />
|
||||||
|
<Script file="MyEquipment.lua" />
|
||||||
|
|
||||||
|
<!-- Templates -->
|
||||||
|
<Button name="MyEquipmentItemButtonTemplate" inherits="ItemButtonTemplate" virtual="true">
|
||||||
|
<Frames>
|
||||||
|
<Cooldown name="$parentCooldown" inherits="CooldownFrameTemplate"/>
|
||||||
|
</Frames>
|
||||||
|
<Scripts>
|
||||||
|
<OnLoad>
|
||||||
|
MyEquipment:MyEquipmentItemSlotButton_OnLoad(self)
|
||||||
|
</OnLoad>
|
||||||
|
<OnClick>
|
||||||
|
if ( not IsModifierKeyDown() ) then
|
||||||
|
mybags = self:GetParent():GetParent().self
|
||||||
|
mybags:MyEquipmentItemSlotButton_OnClick(self, button)
|
||||||
|
end
|
||||||
|
</OnClick>
|
||||||
|
<PostClick>
|
||||||
|
if ( IsModifierKeyDown() ) then
|
||||||
|
mybags = self:GetParent():GetParent().self
|
||||||
|
mybags:MyEquipmentItemSlotButton_OnModifiedClick(self, button)
|
||||||
|
end
|
||||||
|
</PostClick>
|
||||||
|
<OnDragStart>
|
||||||
|
mybags = self:GetParent():GetParent().self
|
||||||
|
mybags:MyEquipmentItemSlotButton_OnClick(self, "LeftButton", 1)
|
||||||
|
</OnDragStart>
|
||||||
|
<OnReceiveDrag>
|
||||||
|
mybags = self:GetParent():GetParent().self
|
||||||
|
mybags:MyEquipmentItemSlotButton_OnClick(self, "LeftButton", 1)
|
||||||
|
</OnReceiveDrag>
|
||||||
|
<OnEnter>
|
||||||
|
mybags = self:GetParent():GetParent().self
|
||||||
|
mybags:MyEquipmentItemSlotButton_OnEnter(self)
|
||||||
|
</OnEnter>
|
||||||
|
<OnLeave>
|
||||||
|
GameTooltip:Hide()
|
||||||
|
</OnLeave>
|
||||||
|
<OnUpdate>
|
||||||
|
mybags = self:GetParent():GetParent().self
|
||||||
|
mybags:MyEquipmentItemSlotButton_OnUpdate(self, elapsed);
|
||||||
|
</OnUpdate>
|
||||||
|
<OnEvent>
|
||||||
|
mybags = self:GetParent():GetParent().self
|
||||||
|
mybags:MyEquipmentItemSlotButton_OnEvent(self, event)
|
||||||
|
</OnEvent>
|
||||||
|
</Scripts>
|
||||||
|
</Button>
|
||||||
|
|
||||||
|
<Frame name="MyEquipmentTemplate" virtual="true">
|
||||||
|
<Frames>
|
||||||
|
<Frame name="$parentBackRow1"/>
|
||||||
|
<Frame name="$parentBackRow2"/>
|
||||||
|
<Frame name="$parentBackRow3"/>
|
||||||
|
<Button name="$parentItem0" inherits="MyEquipmentItemButtonTemplate" id="0"/>
|
||||||
|
<Button name="$parentItem1" inherits="MyEquipmentItemButtonTemplate" id="1"/>
|
||||||
|
<Button name="$parentItem2" inherits="MyEquipmentItemButtonTemplate" id="2"/>
|
||||||
|
<Button name="$parentItem3" inherits="MyEquipmentItemButtonTemplate" id="3"/>
|
||||||
|
<Button name="$parentItem4" inherits="MyEquipmentItemButtonTemplate" id="4"/>
|
||||||
|
<Button name="$parentItem5" inherits="MyEquipmentItemButtonTemplate" id="5"/>
|
||||||
|
<Button name="$parentItem6" inherits="MyEquipmentItemButtonTemplate" id="6"/>
|
||||||
|
<Button name="$parentItem7" inherits="MyEquipmentItemButtonTemplate" id="7"/>
|
||||||
|
<Button name="$parentItem8" inherits="MyEquipmentItemButtonTemplate" id="8"/>
|
||||||
|
<Button name="$parentItem9" inherits="MyEquipmentItemButtonTemplate" id="9"/>
|
||||||
|
<Button name="$parentItem10" inherits="MyEquipmentItemButtonTemplate" id="10"/>
|
||||||
|
<Button name="$parentItem11" inherits="MyEquipmentItemButtonTemplate" id="11"/>
|
||||||
|
<Button name="$parentItem12" inherits="MyEquipmentItemButtonTemplate" id="12"/>
|
||||||
|
<Button name="$parentItem13" inherits="MyEquipmentItemButtonTemplate" id="13"/>
|
||||||
|
<Button name="$parentItem14" inherits="MyEquipmentItemButtonTemplate" id="14"/>
|
||||||
|
<Button name="$parentItem15" inherits="MyEquipmentItemButtonTemplate" id="15"/>
|
||||||
|
<Button name="$parentItem16" inherits="MyEquipmentItemButtonTemplate" id="16"/>
|
||||||
|
<Button name="$parentItem17" inherits="MyEquipmentItemButtonTemplate" id="17"/>
|
||||||
|
<Button name="$parentItem18" inherits="MyEquipmentItemButtonTemplate" id="18"/>
|
||||||
|
<Button name="$parentItem19" inherits="MyEquipmentItemButtonTemplate" id="19"/>
|
||||||
|
</Frames>
|
||||||
|
</Frame>
|
||||||
|
|
||||||
|
<Frame name="MyEquipmentFrameTemplate" virtual="true" movable="true" enableMouse="true" toplevel="true" hidden="true">
|
||||||
|
<Backdrop bgFile="Interface\ChatFrame\ChatFrameBackground" edgeFile="Interface\Tooltips\UI-Tooltip-Border" tile="true">
|
||||||
|
<BackgroundInsets><AbsInset left="5" right="5" top="5" bottom="5"/></BackgroundInsets>
|
||||||
|
<TileSize><AbsValue val="16"/></TileSize>
|
||||||
|
<EdgeSize><AbsValue val="16"/></EdgeSize>
|
||||||
|
</Backdrop>
|
||||||
|
<Layers>
|
||||||
|
<!-- -LITE{{{ -->
|
||||||
|
<Layer level="BACKGROUND">
|
||||||
|
<Texture name="$parentPortrait" hidden="false" file="Interface\AddOns\MyBags\Skin\Backpack" > <!-- -->
|
||||||
|
<Size><AbsDimension x="58" y="58"/></Size>
|
||||||
|
<Anchors>
|
||||||
|
<Anchor point="TOPLEFT">
|
||||||
|
<Offset><AbsDimension x="-5" y="1"/></Offset>
|
||||||
|
</Anchor>
|
||||||
|
</Anchors>
|
||||||
|
</Texture>
|
||||||
|
<Texture name="$parentTextureTopLeft" file="Interface\AddOns\MyBags\Skin\TopLeft" hidden="false">
|
||||||
|
<Size><AbsDimension x="128" y="128"/></Size>
|
||||||
|
<Anchors>
|
||||||
|
<Anchor point="TOPLEFT">
|
||||||
|
<Offset><AbsDimension x="-65" y="58"/></Offset>
|
||||||
|
</Anchor>
|
||||||
|
</Anchors>
|
||||||
|
</Texture>
|
||||||
|
<Texture name="$parentTextureTopRight" file="Interface\AddOns\MyBags\Skin\TopRight" hidden="false">
|
||||||
|
<Size><AbsDimension x="64" y="128"/></Size>
|
||||||
|
<Anchors>
|
||||||
|
<Anchor point="TOPRIGHT">
|
||||||
|
<Offset><AbsDimension x="36" y="58"/></Offset>
|
||||||
|
</Anchor>
|
||||||
|
</Anchors>
|
||||||
|
</Texture>
|
||||||
|
<Texture name="$parentTextureTopCenter" file="Interface\AddOns\MyBags\Skin\TopCenter" hidden="false">
|
||||||
|
<Size><AbsDimension x="128" y="128"/></Size>
|
||||||
|
<Anchors>
|
||||||
|
<Anchor point="BOTTOMLEFT" relativeTo="$parentTextureTopLeft" relativePoint="BOTTOMRIGHT"/>
|
||||||
|
<Anchor point="BOTTOMRIGHT" relativeTo="$parentTextureTopRight" relativePoint="BOTTOMLEFT"/>
|
||||||
|
</Anchors>
|
||||||
|
</Texture>
|
||||||
|
<Texture name="$parentTextureBottomLeft" file="Interface\AddOns\MyBags\Skin\BottomLeft" hidden="false">
|
||||||
|
<Size><AbsDimension x="128" y="128"/></Size>
|
||||||
|
<Anchors>
|
||||||
|
<Anchor point="BOTTOMLEFT">
|
||||||
|
<Offset><AbsDimension x="-65" y="-60"/></Offset>
|
||||||
|
</Anchor>
|
||||||
|
</Anchors>
|
||||||
|
</Texture>
|
||||||
|
<Texture name="$parentTextureBottomRight" file="Interface\AddOns\MyBags\Skin\BottomRight" hidden="false">
|
||||||
|
<Size><AbsDimension x="64" y="128"/></Size>
|
||||||
|
<Anchors>
|
||||||
|
<Anchor point="BOTTOMRIGHT">
|
||||||
|
<Offset><AbsDimension x="36" y="-60"/></Offset>
|
||||||
|
</Anchor>
|
||||||
|
</Anchors>
|
||||||
|
</Texture>
|
||||||
|
<Texture name="$parentTextureBottomCenter" file="Interface\AddOns\MyBags\Skin\BottomCenter" hidden="false">
|
||||||
|
<Size><AbsDimension x="128" y="128"/></Size>
|
||||||
|
<Anchors>
|
||||||
|
<Anchor point="TOPLEFT" relativeTo="$parentTextureBottomLeft" relativePoint="TOPRIGHT"/>
|
||||||
|
<Anchor point="TOPRIGHT" relativeTo="$parentTextureBottomRight" relativePoint="TOPLEFT"/>
|
||||||
|
</Anchors>
|
||||||
|
</Texture>
|
||||||
|
<Texture name="$parentTextureLeft" file="Interface\AddOns\MyBags\Skin\Left" hidden="false">
|
||||||
|
<Size><AbsDimension x="64" y="128"/></Size>
|
||||||
|
<Anchors>
|
||||||
|
<Anchor point="TOPRIGHT" relativeTo="$parentTextureTopLeft" relativePoint="BOTTOMRIGHT"/>
|
||||||
|
<Anchor point="BOTTOMRIGHT" relativeTo="$parentTextureBottomLeft" relativePoint="TOPRIGHT"/>
|
||||||
|
</Anchors>
|
||||||
|
</Texture>
|
||||||
|
<Texture name="$parentTextureRight" file="Interface\AddOns\MyBags\Skin\Right" hidden="false">
|
||||||
|
<Size><AbsDimension x="64" y="128"/></Size>
|
||||||
|
<Anchors>
|
||||||
|
<Anchor point="TOPLEFT" relativeTo="$parentTextureTopRight" relativePoint="BOTTOMLEFT"/>
|
||||||
|
<Anchor point="BOTTOMLEFT" relativeTo="$parentTextureBottomRight" relativePoint="TOPLEFT"/>
|
||||||
|
</Anchors>
|
||||||
|
</Texture>
|
||||||
|
<Texture name="$parentTextureCenter" file="Interface\AddOns\MyBags\Skin\Center" hidden="false">
|
||||||
|
<Size><AbsDimension x="128" y="128"/></Size>
|
||||||
|
<Anchors>
|
||||||
|
<Anchor point="TOPLEFT" relativeTo="$parentTextureTopCenter" relativePoint="BOTTOMLEFT"/>
|
||||||
|
<Anchor point="TOPRIGHT" relativeTo="$parentTextureTopCenter" relativePoint="BOTTOMRIGHT"/>
|
||||||
|
<Anchor point="BOTTOMLEFT" relativeTo="$parentTextureBottomCenter" relativePoint="TOPLEFT"/>
|
||||||
|
<Anchor point="BOTTOMRIGHT" relativeTo="$parentTextureBottomCenter" relativePoint="TOPRIGHT"/>
|
||||||
|
</Anchors>
|
||||||
|
</Texture>
|
||||||
|
</Layer>
|
||||||
|
<!-- }}}-LITE -->
|
||||||
|
<Layer level="ARTWORK">
|
||||||
|
<FontString name="$parentName" inherits="GameFontNormal" justifyH="LEFT">
|
||||||
|
<Color r="1.0" g="1.0" b="1.0" />
|
||||||
|
<Anchors>
|
||||||
|
<Anchor point="TOPLEFT">
|
||||||
|
<Offset><AbsDimension x="7" y="-10"/></Offset>
|
||||||
|
</Anchor>
|
||||||
|
</Anchors>
|
||||||
|
</FontString>
|
||||||
|
<FontString name="$parentSlots" inherits="GameFontNormal" justifyH="LEFT">
|
||||||
|
<Color r="1.0" g="1.0" b="1.0" />
|
||||||
|
<Anchors>
|
||||||
|
<Anchor point="BOTTOMLEFT">
|
||||||
|
<Offset><AbsDimension x="7" y="10"/></Offset>
|
||||||
|
</Anchor>
|
||||||
|
</Anchors>
|
||||||
|
</FontString>
|
||||||
|
</Layer>
|
||||||
|
</Layers>
|
||||||
|
<Frames>
|
||||||
|
<Frame name="MyEquipmentSlots" inherits="MyEquipmentTemplate"/>
|
||||||
|
<Frame name="$parentButtons" inherits="MyBagsButtonBarTemplate"/>
|
||||||
|
<Frame name="$parentCharSelect" inherits="MyBagsCharSelectTemplate"/>
|
||||||
|
<Frame name="$parentMoneyFrame" inherits="SmallMoneyFrameTemplate" hidden="false">
|
||||||
|
<Anchors>
|
||||||
|
<Anchor point="BOTTOMRIGHT" relativeTo="$parent" relativePoint="BOTTOMRIGHT">
|
||||||
|
<Offset><AbsDimension x="0" y="8"/></Offset>
|
||||||
|
</Anchor>
|
||||||
|
</Anchors>
|
||||||
|
</Frame>
|
||||||
|
</Frames>
|
||||||
|
<Scripts>
|
||||||
|
<OnShow>
|
||||||
|
PlaySound("igBackPackOpen")
|
||||||
|
</OnShow>
|
||||||
|
<OnHide>
|
||||||
|
PlaySound("igBackPackClose")
|
||||||
|
</OnHide>
|
||||||
|
<OnMouseDown>
|
||||||
|
mybags = self.self
|
||||||
|
if not mybags.GetOpt("Lock") then
|
||||||
|
self:GetParent():StartMoving()
|
||||||
|
end
|
||||||
|
</OnMouseDown>
|
||||||
|
<OnMouseUp>
|
||||||
|
self:GetParent():StopMovingOrSizing()
|
||||||
|
</OnMouseUp>
|
||||||
|
</Scripts>
|
||||||
|
</Frame>
|
||||||
|
|
||||||
|
<!-- Frame -->
|
||||||
|
<Frame name="MyEquipmentAnchorFrame" hidden="false" movable="true" parent="UIParent">
|
||||||
|
<Size><AbsDimension x="10" y="10"/></Size>
|
||||||
|
<Anchors>
|
||||||
|
<Anchor point="BOTTOMRIGHT" >
|
||||||
|
<Offset><AbsDimension x="-5" y="100"/></Offset>
|
||||||
|
</Anchor>
|
||||||
|
</Anchors>
|
||||||
|
<Frames>
|
||||||
|
<Frame name="MyEquipmentFrame" inherits="MyEquipmentFrameTemplate">
|
||||||
|
<Size>
|
||||||
|
<AbsDimension x="500" y="500"/>
|
||||||
|
</Size>
|
||||||
|
<Anchors><Anchor point="BOTTOMRIGHT"/></Anchors>
|
||||||
|
</Frame>
|
||||||
|
</Frames>
|
||||||
|
</Frame>
|
||||||
|
</Ui>
|
||||||
@@ -0,0 +1,29 @@
|
|||||||
|
-- Version : English - Isharra
|
||||||
|
|
||||||
|
MYEQUIPMENT_NAME = "MyEquipment"
|
||||||
|
MYEQUIPMENT_DESCRIPTION = "Equipped items display"
|
||||||
|
|
||||||
|
MYEQUIPMENTFRAME_TITLE = "Equipment"
|
||||||
|
|
||||||
|
-- SLASHCOMMANDS
|
||||||
|
-- /me already taken by emote commands
|
||||||
|
-- MYEQUIPMENT_COMMANDS = {"/myequipment", "/myequip", "/mq"}
|
||||||
|
--[[ MYEQUIPMENT_CMD_OPTIONS = {
|
||||||
|
MYBAGS_CMD_OPT_LOCK, -- done
|
||||||
|
MYBAGS_CMD_OPT_COLUMNS, -- done
|
||||||
|
MYBAGS_CMD_OPT_NOESC, -- done
|
||||||
|
MYBAGS_CMD_OPT_TITLE, -- done
|
||||||
|
MYBAGS_CMD_OPT_CASH, -- done
|
||||||
|
MYBAGS_CMD_OPT_BUTTONS, -- done
|
||||||
|
MYBAGS_CMD_OPT_AIOI, -- done
|
||||||
|
MYBAGS_CMD_OPT_BORDER, -- done
|
||||||
|
MYBAGS_CMD_OPT_PLAYERSEL, -- done
|
||||||
|
MYBAGS_CMD_OPT_SCALE, -- done
|
||||||
|
MYBAGS_CMD_OPT_STRATA, -- done
|
||||||
|
MYBAGS_CMD_OPT_ANCHOR, -- done
|
||||||
|
MYBAGS_CMD_OPT_TOGGLE, -- done
|
||||||
|
MYBAGS_CMD_RESET, -- done
|
||||||
|
MYBAGS_CMD_OPT_GRAPHICS, -- skip
|
||||||
|
MYBAGS_CMD_OPT_SLOTCOLOR, -- skip
|
||||||
|
}
|
||||||
|
]]
|
||||||
@@ -0,0 +1,655 @@
|
|||||||
|
local MYINVENTORY_DEFAULT_OPTIONS = {
|
||||||
|
["Columns"] = 12,
|
||||||
|
["Replace"] = true,
|
||||||
|
["Bag"] = "bar",
|
||||||
|
["Graphics"] = "art",
|
||||||
|
["Count"] = "free",
|
||||||
|
["HlItems"] = true,
|
||||||
|
["Sort"] = "realm",
|
||||||
|
["Search"] = true,
|
||||||
|
["Token"] = true,
|
||||||
|
["HlBags"] = true,
|
||||||
|
["Freeze"] = "sticky",
|
||||||
|
["NoEsc"] = false,
|
||||||
|
["Lock"] = false,
|
||||||
|
["Title"] = true,
|
||||||
|
["Cash"] = true,
|
||||||
|
["Buttons"] = true,
|
||||||
|
["AIOI"] = false,
|
||||||
|
["Reverse"] = false,
|
||||||
|
["Border"] = true,
|
||||||
|
["Cache"] = nil,
|
||||||
|
["Player"] = true,
|
||||||
|
["Scale"] = false,
|
||||||
|
["Strata"] = "DIALOG",
|
||||||
|
["Anchor"] = "bottomright",
|
||||||
|
["BackColor"] = {0.7,0,0,0},
|
||||||
|
["SlotColor"] = nil,
|
||||||
|
["AmmoColor"] = nil,
|
||||||
|
["EnchantColor"] = nil,
|
||||||
|
["EngColor"] = nil,
|
||||||
|
["HerbColor"] = nil,
|
||||||
|
["Companion"] = nil,
|
||||||
|
["MAXBAGSLOTS"] = 36,
|
||||||
|
["_TOPOFFSET"] = 28,
|
||||||
|
["_BOTTOMOFFSET"] = 20,
|
||||||
|
["_LEFTOFFSET"] = 8,
|
||||||
|
["_RIGHTOFFSET"] = 3,
|
||||||
|
}
|
||||||
|
|
||||||
|
MyInventory = LibStub("AceAddon-3.0"):NewAddon("MyInventory", "AceConsole-3.0", "AceHook-3.0", "AceEvent-3.0", "MyBagsCore-1.0")
|
||||||
|
local MI_Dialog = LibStub("AceConfigDialog-3.0")
|
||||||
|
local MI_Cmd = LibStub("AceConfigCmd-3.0")
|
||||||
|
local MB_Core = LibStub("MyBagsCore-1.0")
|
||||||
|
|
||||||
|
local L = LibStub("AceLocale-3.0"):GetLocale("MyBags")
|
||||||
|
|
||||||
|
function MyInventory:OnInitialize()
|
||||||
|
self.name = "MyInventory"
|
||||||
|
self.frameName = "MyInventoryFrame"
|
||||||
|
self.defaults = MYINVENTORY_DEFAULT_OPTIONS
|
||||||
|
self.totalBags = 5
|
||||||
|
self.firstBag = 0
|
||||||
|
self.anchorPoint = "BOTTOMRIGHT"
|
||||||
|
self.anchorParent = "UIParent"
|
||||||
|
self.anchorOffsetX = -5
|
||||||
|
self.anchorOffsetY = 100
|
||||||
|
self.isBank = false
|
||||||
|
self.db = LibStub("AceDB-3.0"):New("MyInventoryDB")
|
||||||
|
local prof = self.db:GetCurrentProfile()
|
||||||
|
if self.db.profiles[prof] and self.db.profiles[prof]["Columns"] and self.db.profiles[prof]["Columns"] > 0 then
|
||||||
|
else
|
||||||
|
self.db.profiles[prof] = self.defaults
|
||||||
|
end
|
||||||
|
self:RegisterChatCommand("mi", "MI_ChatCommand")
|
||||||
|
self:RegisterChatCommand("myinventory", "MI_ChatCommand")
|
||||||
|
self.options = {
|
||||||
|
type = "group",
|
||||||
|
args = {
|
||||||
|
replace = {
|
||||||
|
type = "toggle",
|
||||||
|
name = "Replace",
|
||||||
|
desc = "Set replacing of default bags",
|
||||||
|
get = function(info)
|
||||||
|
return MyInventory.IsSet("Replace")
|
||||||
|
end,
|
||||||
|
set = function(info, val)
|
||||||
|
MyInventory:SetReplace()
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
freeze = {
|
||||||
|
type = "select",
|
||||||
|
name = "Freeze",
|
||||||
|
desc = "Keep window from closing when you leave vendors or bank",
|
||||||
|
values = {
|
||||||
|
["always"] = "Always leave the bag open",
|
||||||
|
["sticky"] = "Only leave open if manually opened",
|
||||||
|
["none"] = "Let the UI close the window",
|
||||||
|
},
|
||||||
|
get = function(info)
|
||||||
|
return MyInventory.GetOpt("Freeze")
|
||||||
|
end,
|
||||||
|
set = function(info, val)
|
||||||
|
MyInventory:SetFreeze(val)
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
lock = {
|
||||||
|
type = "toggle",
|
||||||
|
name = "Lock",
|
||||||
|
desc = "Keep the window from moving",
|
||||||
|
get = function(info)
|
||||||
|
return MyInventory.IsSet("Lock")
|
||||||
|
end,
|
||||||
|
set = function(info, val)
|
||||||
|
MyInventory:SetLock()
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
cols = {
|
||||||
|
type = "range",
|
||||||
|
name = "Columns",
|
||||||
|
desc = "Resize the frame",
|
||||||
|
step = 1,
|
||||||
|
min = 2,
|
||||||
|
max = 24,
|
||||||
|
softMin = 2,
|
||||||
|
softMax = 24,
|
||||||
|
get = function(info)
|
||||||
|
return MyInventory.GetOpt("Columns")
|
||||||
|
end,
|
||||||
|
set = function(info, val)
|
||||||
|
MyInventory:SetColumns(val)
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
bag = {
|
||||||
|
type = "select",
|
||||||
|
name = "Bag",
|
||||||
|
desc = "Toggle between bag button view options",
|
||||||
|
values = {
|
||||||
|
["bar"] = "Bags are displayed as a bar on top of the frame",
|
||||||
|
["before"] = "Bag icons are places in the frame before bag slots",
|
||||||
|
["none"] = "Bags are hidden from the frame",
|
||||||
|
},
|
||||||
|
get = function(info)
|
||||||
|
return MyInventory.GetOpt("Bag")
|
||||||
|
end,
|
||||||
|
set = function(info, val)
|
||||||
|
MyInventory:SetBagDisplay(val)
|
||||||
|
end
|
||||||
|
},
|
||||||
|
back = {
|
||||||
|
type = "select",
|
||||||
|
name = "Background",
|
||||||
|
desc = "Toggle window background options",
|
||||||
|
values = {
|
||||||
|
["default"] = "Semi-transparent minimalistic background",
|
||||||
|
["art"] = "Blizard style artwork",
|
||||||
|
["none"] = "Disable background",
|
||||||
|
},
|
||||||
|
get = function(info)
|
||||||
|
return MyInventory.GetOpt("Graphics")
|
||||||
|
end,
|
||||||
|
set = function(info, val)
|
||||||
|
MyInventory:SetGraphicsDisplay(val)
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
sort = {
|
||||||
|
type = "select",
|
||||||
|
name = "Sort",
|
||||||
|
desc = "Sort names in character list",
|
||||||
|
values = {
|
||||||
|
["realm"] = "Sort by realm names first",
|
||||||
|
["char"] = "Sort by character names first",
|
||||||
|
["update"] = "Sort by update times",
|
||||||
|
},
|
||||||
|
get = function(info)
|
||||||
|
return MyInventory.GetOpt("Sort")
|
||||||
|
end,
|
||||||
|
set = function(info, val)
|
||||||
|
MyInventory.SetOpt("Sort", val)
|
||||||
|
MyInventory.Result("Sort: ", val)
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
search = {
|
||||||
|
type = "toggle",
|
||||||
|
name = "Search",
|
||||||
|
desc = "Enable searchbox",
|
||||||
|
get = function(info)
|
||||||
|
return MyInventory.GetOpt("Search")
|
||||||
|
end,
|
||||||
|
set = function(info, val)
|
||||||
|
MyInventory:SetSearch()
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
token = {
|
||||||
|
type = "toggle",
|
||||||
|
name = "Token",
|
||||||
|
desc = "Show token frame",
|
||||||
|
get = function(info)
|
||||||
|
return MyInventory.GetOpt("Token")
|
||||||
|
end,
|
||||||
|
set = function(info, val)
|
||||||
|
MyInventory:SetToken()
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
highlight = {
|
||||||
|
type = "multiselect",
|
||||||
|
name = "Hilight",
|
||||||
|
desc = "Toggle Highlighting options",
|
||||||
|
values = {
|
||||||
|
["items"] = "Highlight items when you mouse over bag slots",
|
||||||
|
["bag"] = "Highlight bag when you mouse over an item",
|
||||||
|
},
|
||||||
|
get = function(info, key)
|
||||||
|
if key == "items" then
|
||||||
|
return MyInventory.GetOpt("HlItems")
|
||||||
|
end
|
||||||
|
if key == "bag" then
|
||||||
|
return MyInventory.GetOpt("HlBags")
|
||||||
|
end
|
||||||
|
end,
|
||||||
|
set = function(info, key, val)
|
||||||
|
MyInventory:SetHighlight(key)
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
noesc = {
|
||||||
|
type = "toggle",
|
||||||
|
name = "Escape",
|
||||||
|
desc = "Remove frame from the list of UI managed files, to be used with freeze",
|
||||||
|
get = function(info)
|
||||||
|
return MyInventory.GetOpt("NoEsc")
|
||||||
|
end,
|
||||||
|
set = function(info, val)
|
||||||
|
MyInventory:SetNoEsc()
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
title = {
|
||||||
|
type = "toggle",
|
||||||
|
name = "Title",
|
||||||
|
desc = "Show/Hide the title",
|
||||||
|
get = function(info)
|
||||||
|
return MyInventory.GetOpt("Title")
|
||||||
|
end,
|
||||||
|
set = function(info, val)
|
||||||
|
MyInventory:SetTitle()
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
cash = {
|
||||||
|
type = "toggle",
|
||||||
|
name = "Cash",
|
||||||
|
desc = "Show/Hide the money display",
|
||||||
|
get = function(info)
|
||||||
|
return MyInventory.GetOpt("Cash")
|
||||||
|
end,
|
||||||
|
set = function(info, val)
|
||||||
|
MyInventory:SetCash()
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
buttons = {
|
||||||
|
type = "toggle",
|
||||||
|
name = "Buttons",
|
||||||
|
desc = "Show/Hide the close and lock buttons",
|
||||||
|
get = function(info)
|
||||||
|
return MyInventory.GetOpt("Buttons")
|
||||||
|
end,
|
||||||
|
set = function(info, val)
|
||||||
|
MyInventory:SetButtons()
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
aioi = {
|
||||||
|
type = "toggle",
|
||||||
|
name = "AIOI",
|
||||||
|
desc = "Toggle partial row placement at bottom left or upper right",
|
||||||
|
get = function(info)
|
||||||
|
return MyInventory.GetOpt("AIOI")
|
||||||
|
end,
|
||||||
|
set = function(info, val)
|
||||||
|
MyInventory:SetAIOI()
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
reverse = {
|
||||||
|
type = "toggle",
|
||||||
|
name = "Reverse",
|
||||||
|
desc = "Toggle order of bags (item order within bags is unchanged)",
|
||||||
|
get = function(info)
|
||||||
|
return MyInventory.GetOpt("Reverse")
|
||||||
|
end,
|
||||||
|
set = function(info, val)
|
||||||
|
MyInventory:SetReverse()
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
quality = {
|
||||||
|
type = "toggle",
|
||||||
|
name = "Quality",
|
||||||
|
desc = "Highlight items based on quality",
|
||||||
|
get = function(info)
|
||||||
|
return MyInventory.GetOpt("Border")
|
||||||
|
end,
|
||||||
|
set = function(info, val)
|
||||||
|
MyInventory:SetBorder()
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
player = {
|
||||||
|
type = "toggle",
|
||||||
|
name = "Player",
|
||||||
|
desc = "Show/Hide the offline player selection box",
|
||||||
|
get = function(info)
|
||||||
|
return MyInventory.GetOpt("Player")
|
||||||
|
end,
|
||||||
|
set = function(info, val)
|
||||||
|
MyInventory:SetPlayerSel()
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
companion = {
|
||||||
|
type = "toggle",
|
||||||
|
name = "Companion",
|
||||||
|
desc = "Open/close MyInventory with bank, mail and trade windows",
|
||||||
|
get = function(info)
|
||||||
|
return MyInventory.GetOpt("Companion")
|
||||||
|
end,
|
||||||
|
set = function(info, val)
|
||||||
|
MyInventory:SetCompanion()
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
count = {
|
||||||
|
type = "select",
|
||||||
|
name = "Count",
|
||||||
|
desc = "Toggles between item count display modes",
|
||||||
|
values = {
|
||||||
|
["free"] = "Count free slots",
|
||||||
|
["used"] = "Count used slots",
|
||||||
|
["none"] = "Disable slot display",
|
||||||
|
},
|
||||||
|
get = function(info)
|
||||||
|
return MyInventory.GetOpt("Count")
|
||||||
|
end,
|
||||||
|
set = function(info, val)
|
||||||
|
MyInventory:SetCount(val)
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
scale = {
|
||||||
|
type = "range",
|
||||||
|
name = "Scale",
|
||||||
|
desc = "Sets the Scale for the frame",
|
||||||
|
min = 0.2,
|
||||||
|
max = 2.0,
|
||||||
|
softMin = 0.2,
|
||||||
|
softMax = 2.0,
|
||||||
|
get = function(info)
|
||||||
|
return MyInventory.GetOpt("Scale")
|
||||||
|
end,
|
||||||
|
set = function(info, val)
|
||||||
|
MyInventory:SetScale(val)
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
strata = {
|
||||||
|
type = "select",
|
||||||
|
name = "Strata",
|
||||||
|
desc = "Sets the Strata for the frame",
|
||||||
|
values = {
|
||||||
|
["BACKGROUND"] = "BACKGROUND",
|
||||||
|
["LOW"] = "LOW",
|
||||||
|
["MEDIUM"] = "MEDIUM",
|
||||||
|
["HIGH"] = "HIGH",
|
||||||
|
["DIALOG"] = "DIALOG",
|
||||||
|
},
|
||||||
|
get = function(info)
|
||||||
|
return MyInventory.GetOpt("Strata")
|
||||||
|
end,
|
||||||
|
set = function(info, val)
|
||||||
|
MyInventory:SetStrata(val)
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
anchor = {
|
||||||
|
type = "select",
|
||||||
|
name = "Anchor",
|
||||||
|
desc = "Sets the anchor point for the frame",
|
||||||
|
values = {
|
||||||
|
["bottomleft"] = "Frame grows from bottom left",
|
||||||
|
["bottomright"] = "Frame grows from bottom right",
|
||||||
|
["topleft"] = "Frame grows from top left",
|
||||||
|
["topright"] = "Frame grows from top right",
|
||||||
|
},
|
||||||
|
get = function(info)
|
||||||
|
return MyInventory.GetOpt("Anchor")
|
||||||
|
end,
|
||||||
|
set = function(info, val)
|
||||||
|
MyInventory:SetAnchor(val)
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
tog = {
|
||||||
|
type = "execute",
|
||||||
|
name = "Toggle",
|
||||||
|
desc = "Toggle the frame",
|
||||||
|
guiHidden = true,
|
||||||
|
func = function()
|
||||||
|
MyInventory:Toggle()
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
reset = {
|
||||||
|
type = "multiselect",
|
||||||
|
name = "Reset",
|
||||||
|
desc = "Resets elements of the addon",
|
||||||
|
guiHidden = true,
|
||||||
|
values = {
|
||||||
|
["settings"] = "Reset all settings to default",
|
||||||
|
["anchor"] = "Reanchors the frame to it's default position",
|
||||||
|
},
|
||||||
|
get = function(info, key)
|
||||||
|
return true
|
||||||
|
end,
|
||||||
|
set = function(info, key, val)
|
||||||
|
if key == "settings" then
|
||||||
|
MyInventory:ResetSettings()
|
||||||
|
end
|
||||||
|
if key == "anchor" then
|
||||||
|
MyInventory:ResetAnchor()
|
||||||
|
end
|
||||||
|
end
|
||||||
|
},
|
||||||
|
--[[
|
||||||
|
back = {
|
||||||
|
type = "select",
|
||||||
|
name = "back",
|
||||||
|
desc = "Toggle window background options",
|
||||||
|
values = {
|
||||||
|
["default"] = "Semi-transparent minimalistic background",
|
||||||
|
["art"] = "Blizzard style artwork",
|
||||||
|
["none"] = "Disable background",
|
||||||
|
},
|
||||||
|
get = function(info)
|
||||||
|
return MyInventory.GetOpt("")
|
||||||
|
end
|
||||||
|
},
|
||||||
|
]]
|
||||||
|
},
|
||||||
|
}
|
||||||
|
end
|
||||||
|
|
||||||
|
function MyInventory:LoadDropDown()
|
||||||
|
local dropDown = _G[self.frameName .. "CharSelectDropDown"]
|
||||||
|
local dropDownButton = _G[self.frameName .. "CharSelectDropDownButton"]
|
||||||
|
if not dropDown then return end
|
||||||
|
local last_this = _G["this"]
|
||||||
|
_G["this"] = dropDownButton
|
||||||
|
UIDropDownMenu_Initialize(dropDown, self.UserDropDown_Initialize)
|
||||||
|
UIDropDownMenu_SetSelectedValue(dropDown, self:GetCurrentPlayer())
|
||||||
|
-- UIDropDownMenu_SetSelectedValue(dropDown, self.Player)
|
||||||
|
UIDropDownMenu_SetWidth(dropDown, 140)
|
||||||
|
_G["this"] = last_this
|
||||||
|
end
|
||||||
|
|
||||||
|
function MyInventory:UserDropDown_Initialize()
|
||||||
|
local this = self or _G.this
|
||||||
|
local chars = MyInventory:GetSortedCharList(MyInventory.GetOpt("Sort"))
|
||||||
|
local frame = this:GetParent():GetParent()
|
||||||
|
local selectedValue = UIDropDownMenu_GetSelectedValue(this)
|
||||||
|
local i
|
||||||
|
|
||||||
|
for i = 1, getn(chars) do
|
||||||
|
local info = {
|
||||||
|
["text"] = chars[i],
|
||||||
|
["value"] = chars[i],
|
||||||
|
["func"] = frame.self.UserDropDown_OnClick,
|
||||||
|
["owner"] = frame.self,
|
||||||
|
["checked"] = nil,
|
||||||
|
}
|
||||||
|
if selectedValue == info.value then info.checked = 1 end
|
||||||
|
UIDropDownMenu_AddButton(info)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
function MyInventory:UserDropDown_OnClick()
|
||||||
|
local this = self or _G.this
|
||||||
|
self = this.owner
|
||||||
|
local dropDown = _G[self.frameName .. "CharSelectDropDown"]
|
||||||
|
self.Player = this.value
|
||||||
|
UIDropDownMenu_SetSelectedValue(dropDown, this.value)
|
||||||
|
self:LayoutFrame()
|
||||||
|
end
|
||||||
|
|
||||||
|
function MyInventory:HookFunctions()
|
||||||
|
MB_Core:HookFunctions(self)
|
||||||
|
self:RawHook("ToggleBackpack", true)
|
||||||
|
self:RawHook("OpenBackpack", true)
|
||||||
|
self:RawHook("CloseBackpack", true)
|
||||||
|
end
|
||||||
|
|
||||||
|
function MyInventory:ToggleBackpack()
|
||||||
|
if not (self.GetOpt("Replace") and self:IncludeBag(0)) then
|
||||||
|
self.hooks.ToggleBackpack()
|
||||||
|
else
|
||||||
|
self:Toggle()
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
function MyInventory:OpenBackpack()
|
||||||
|
if not (self.GetOpt("Replace") and self:IncludeBag(0)) then
|
||||||
|
self.hooks["OpenBackpack"]()
|
||||||
|
else
|
||||||
|
if MailFrame:IsVisible() then self.Companion = 1 end
|
||||||
|
if self.frame:IsVisible() then self.holdOpen = 1 end
|
||||||
|
self:Open()
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
function MyInventory:CloseBackpack()
|
||||||
|
if not (self.GetOpt("Replace") and self:IncludeBag(0)) then
|
||||||
|
self.hooks.CloseBackpack()
|
||||||
|
elseif not self.Freeze then
|
||||||
|
self:Close()
|
||||||
|
elseif self.Freeze == "sticky" then
|
||||||
|
if self.holdOpen then
|
||||||
|
self.holdOpen = nil
|
||||||
|
else
|
||||||
|
self:Close()
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
function MyInventory:CompanionOpen()
|
||||||
|
self.Companion = 1
|
||||||
|
self:OpenBackpack()
|
||||||
|
end
|
||||||
|
|
||||||
|
function MyInventory:CompanionClose()
|
||||||
|
if self.Companion then -- if not true it's a duplicate event
|
||||||
|
self.Companion = nil
|
||||||
|
self:CloseBackpack()
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
function MyInventory:BAG_UPDATE(event, bag)
|
||||||
|
if self.isLive and (bag == -2 or (bag >= 0 and bag <= 4)) then
|
||||||
|
self:LayoutFrame()
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
function MyInventory:GetInfoFunc()
|
||||||
|
if self.isLive then
|
||||||
|
return self.GetInfoLive
|
||||||
|
end
|
||||||
|
if IsAddOnLoaded("DataStore_Containers") then
|
||||||
|
return self.GetInfoDataStore
|
||||||
|
end
|
||||||
|
if IsAddOnLoaded("MyBagsCache") then
|
||||||
|
return self.GetInfoMyBagsCache
|
||||||
|
end
|
||||||
|
return self.GetInfoNone
|
||||||
|
end
|
||||||
|
|
||||||
|
function MyInventory:BagIDToInvSlotID(bag)
|
||||||
|
if bag < 1 or bag > 4 then return nil end
|
||||||
|
return ContainerIDToInventoryID(bag)
|
||||||
|
end
|
||||||
|
|
||||||
|
function MyInventory:IsBagSlotUsable(slot)
|
||||||
|
if (slot >= 0 and slot <= 4) then return true end
|
||||||
|
return false
|
||||||
|
end
|
||||||
|
|
||||||
|
function MyInventory:MI_ChatCommand(input)
|
||||||
|
if not input or input:trim() == "" then
|
||||||
|
MI_Dialog:Open(self.name)
|
||||||
|
else
|
||||||
|
MI_Cmd.HandleCommand(MyInventory, "myinventory", self.name, input)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
function MyInventory:GetSortedCharList(sorttype, realm)
|
||||||
|
if IsAddOnLoaded("DataStore_Containers") then
|
||||||
|
local realmname
|
||||||
|
local realmlist = {}
|
||||||
|
local realmcount = 0
|
||||||
|
if not realm then
|
||||||
|
for realmname in pairs(DataStore:GetRealms()) do
|
||||||
|
realmcount = realmcount + 1
|
||||||
|
realmlist[realmcount] = realmname
|
||||||
|
end
|
||||||
|
else
|
||||||
|
realmcount = 1
|
||||||
|
realmlist[1] = realm
|
||||||
|
end
|
||||||
|
local result = {}
|
||||||
|
local idx = 0
|
||||||
|
for i=1, realmcount do
|
||||||
|
for charname, _ in pairs(DataStore:GetCharacters(realmlist[i])) do
|
||||||
|
if DataStore_Containers.Characters[DataStore:GetCharacter(charname, realmlist[i])] then
|
||||||
|
idx = idx + 1
|
||||||
|
result[idx] = charname .. L["CHARACTER_DELIMITOR"] .. realmlist[i]
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
local swapped
|
||||||
|
local q, w
|
||||||
|
local x_time, y_time;
|
||||||
|
local max = idx - 1;
|
||||||
|
local charName, realmName
|
||||||
|
repeat
|
||||||
|
swapped = 0
|
||||||
|
for i = 1, max do
|
||||||
|
q = result[i]
|
||||||
|
w = result[i+1]
|
||||||
|
charName, realmName = self:SplitString(q)
|
||||||
|
if (not DataStore:GetModuleLastUpdate(DataStore_Containers, charName, realmName)) then
|
||||||
|
x_time = 0
|
||||||
|
else
|
||||||
|
x_time = DataStore:GetModuleLastUpdate(DataStore_Containers, charName, realmName)
|
||||||
|
end
|
||||||
|
charName, realmName = self:SplitString(w)
|
||||||
|
if (not DataStore:GetModuleLastUpdate(DataStore_Containers, charName, realmName)) then
|
||||||
|
y_time = 0
|
||||||
|
else
|
||||||
|
y_time = DataStore:GetModuleLastUpdate(DataStore_Containers, charName, realmName)
|
||||||
|
end
|
||||||
|
if self:SortChars(q, w, x_time, y_time, sorttype) then
|
||||||
|
result[i] = w
|
||||||
|
result[i+1] = q
|
||||||
|
swapped = 1
|
||||||
|
end
|
||||||
|
end
|
||||||
|
until swapped == 0
|
||||||
|
return result
|
||||||
|
end
|
||||||
|
if IsAddOnLoaded("MyBagsCache") then
|
||||||
|
local MBC = MyBagsCache
|
||||||
|
local result = {}
|
||||||
|
local idx = 0
|
||||||
|
local cache = MBC.db.global
|
||||||
|
for index, value in pairs(cache) do
|
||||||
|
local charName, realmID = self:SplitString(index)
|
||||||
|
if index ~= "profiles" then
|
||||||
|
if (not realm or realmID == realm) then
|
||||||
|
idx = idx + 1
|
||||||
|
result[idx] = index
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
local swapped
|
||||||
|
local q, w
|
||||||
|
local x_time, y_time;
|
||||||
|
local max = idx - 1;
|
||||||
|
repeat
|
||||||
|
swapped = 0
|
||||||
|
for i = 1, max do
|
||||||
|
q = result[i]
|
||||||
|
w = result[i+1]
|
||||||
|
if (not MBC.db.global[q].updateTime) then
|
||||||
|
x_time = 0
|
||||||
|
else
|
||||||
|
x_time = MBC.db.global[q].updateTime
|
||||||
|
end
|
||||||
|
if (not MBC.db.global[w].updateTime) then
|
||||||
|
y_time = 0
|
||||||
|
else
|
||||||
|
y_time = MBC.db.global[w].updateTime
|
||||||
|
end
|
||||||
|
if self:SortChars(q, w, x_time, y_time, sorttype) then
|
||||||
|
result[i] = w
|
||||||
|
result[i+1] = q
|
||||||
|
swapped = 1
|
||||||
|
end
|
||||||
|
end
|
||||||
|
until swapped == 0
|
||||||
|
return result
|
||||||
|
end
|
||||||
|
end
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
## Interface: 40300
|
||||||
|
## Author: Isharra (updated by thegabbert)
|
||||||
|
## Title: MyInventory |cff007FFF -Ace-|r
|
||||||
|
## Notes: A replacement for the default inventory bags allowing viewing of other characters data when KC_Items.inventory or MyBagsCache are available.
|
||||||
|
## Dependancies: Ace, MyBags
|
||||||
|
## SavedVariables: MyInventoryDB
|
||||||
|
## LoadOnDemand: 0
|
||||||
|
MyInventory.xml
|
||||||
@@ -0,0 +1,31 @@
|
|||||||
|
<Ui xmlns="http://www.blizzard.com/wow/ui/"
|
||||||
|
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||||
|
xsi:schemaLocation="http://www.blizzard.com/wow/ui/FrameXML/UI.xsd">
|
||||||
|
<Script file="locals.lua"/>
|
||||||
|
<Script file="MyInventory.lua"/>
|
||||||
|
<Frame name="MyInventoryAnchorFrame" hidden="false" movable="true" parent="UIParent">
|
||||||
|
<Size>
|
||||||
|
<AbsDimension x="10" y="10"/>
|
||||||
|
</Size>
|
||||||
|
<Anchors>
|
||||||
|
<Anchor point="BOTTOMRIGHT" >
|
||||||
|
<Offset>
|
||||||
|
<AbsDimension x="-5" y="100"/>
|
||||||
|
</Offset>
|
||||||
|
</Anchor>
|
||||||
|
</Anchors>
|
||||||
|
|
||||||
|
<Frames>
|
||||||
|
<Frame name="MyInventoryFrame" inherits="MyBagsFrameTemplate">
|
||||||
|
<Size>
|
||||||
|
<AbsDimension x="500" y="500"/>
|
||||||
|
</Size>
|
||||||
|
<Anchors>
|
||||||
|
<Anchor point="BOTTOMRIGHT"/>
|
||||||
|
</Anchors>
|
||||||
|
<Frames>
|
||||||
|
</Frames>
|
||||||
|
</Frame>
|
||||||
|
</Frames>
|
||||||
|
</Frame>
|
||||||
|
</Ui>
|
||||||
@@ -0,0 +1,36 @@
|
|||||||
|
-- Version : English - Ramble
|
||||||
|
|
||||||
|
MYINVENTORY_NAME = "MyInventory"
|
||||||
|
MYINVENTORY_DESCRIPTION = "All in one inventory mod"
|
||||||
|
|
||||||
|
MYINVENTORYFRAME_TITLE = "Inventory"
|
||||||
|
|
||||||
|
-- SLASHCOMMANDS
|
||||||
|
--[[
|
||||||
|
MYINVENTORY_COMMANDS = {"/myinventory", "/mi"}
|
||||||
|
MYINVENTORY_CMD_OPTIONS = {
|
||||||
|
MYBAGS_CMD_OPT_TOGGLE, -- done
|
||||||
|
MYBAGS_CMD_OPT_FREEZE, -- done
|
||||||
|
MYBAGS_CMD_OPT_NOESC, -- done
|
||||||
|
MYBAGS_CMD_OPT_COLUMNS, -- done
|
||||||
|
MYBAGS_CMD_OPT_REPLACE, -- done
|
||||||
|
MYBAGS_CMD_OPT_BAG, -- done
|
||||||
|
MYBAGS_CMD_OPT_GRAPHICS, -- ????
|
||||||
|
MYBAGS_CMD_OPT_HIGHLIGHT, -- done
|
||||||
|
MYBAGS_CMD_OPT_LOCK, -- done
|
||||||
|
MYBAGS_CMD_OPT_TITLE, -- done
|
||||||
|
MYBAGS_CMD_OPT_CASH, -- done
|
||||||
|
MYBAGS_CMD_OPT_BUTTONS, -- done
|
||||||
|
MYBAGS_CMD_OPT_AIOI, -- done
|
||||||
|
MYBAGS_CMD_OPT_REVERSE, -- done
|
||||||
|
MYBAGS_CMD_OPT_BORDER, -- done
|
||||||
|
MYBAGS_CMD_OPT_PLAYERSEL, -- done
|
||||||
|
MYBAGS_CMD_OPT_COUNT,
|
||||||
|
MYBAGS_CMD_OPT_SCALE,
|
||||||
|
MYBAGS_CMD_OPT_STRATA,
|
||||||
|
MYBAGS_CMD_OPT_ANCHOR,
|
||||||
|
MYBAGS_CMD_RESET,
|
||||||
|
MYBAGS_CMD_OPT_SLOTCOLOR,
|
||||||
|
MYBAGS_CMD_OPT_COMPANION,
|
||||||
|
}
|
||||||
|
]]
|
||||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Reference in New Issue
Block a user