50 Commits

Author SHA1 Message Date
587a7e0d56 CS fixes 2016-09-23 00:36:46 +02:00
0cb3708671 - Clear some leaked globals
- CS fixes
2016-09-22 17:39:49 +02:00
35023a61c1 CS fixes 2016-09-21 00:06:41 +02:00
a4f08a0b44 - Fix some leaked globals
- CS fixes
2016-09-08 17:13:24 +02:00
771bfaf5eb Remove some more locals 2016-09-06 18:16:40 +02:00
48eba18c2b Remove some locals 2016-09-06 18:11:09 +02:00
089d270ade Remove some locals 2016-09-06 18:07:51 +02:00
83abacd2f9 Remove some locals 2016-09-06 18:04:57 +02:00
895f0ccd4c Variables in for statements are always locals 2016-09-06 18:01:28 +02:00
4d657ecee1 - CS fixes
- Local variable fixes
2016-09-06 17:51:08 +02:00
6352b997d1 Fix some more locals 2016-09-06 17:35:07 +02:00
23ff6cf7f3 Fixed some locals 2016-09-06 17:25:16 +02:00
17486c3251 Fix some locals 2016-09-06 17:13:14 +02:00
f6706c380b Fix uninitialized 'quality' variable 2016-09-06 17:01:50 +02:00
f4ac2a0139 Fix lua errors 2016-09-06 16:51:03 +02:00
b49f508c47 Use MyBagsCore-1.1 2016-09-06 16:39:14 +02:00
3a62dd9b99 Use MyBagsCore-1.1 2016-09-06 16:38:30 +02:00
6e353d9ebd Use MyBagsCore-1.1 2016-09-06 16:37:41 +02:00
733b7cc325 Remove MyBagsCache compatibility 2016-09-06 16:34:30 +02:00
f42d4c2a34 Remove MyBagsCache compatibility 2016-09-06 16:33:09 +02:00
7c694ba727 Remove MyBagsCache compatibility 2016-09-06 16:30:52 +02:00
77c25484f1 Remove MyBagsCache compatibility code 2016-09-06 16:28:58 +02:00
f75aa0bd11 Remove MyBagsCache reference 2016-09-06 16:26:57 +02:00
284bf213dd Remove MyBagsCache references 2016-09-06 16:24:25 +02:00
252e10de9a Delete Locals.xml 2016-09-06 16:16:41 +02:00
800a9b450b Delete enUS.lua 2016-09-06 16:16:11 +02:00
e086ca746b Delete Embeds.xml 2016-09-06 16:14:50 +02:00
e140c68663 Delete MyBagsCache.lua 2016-09-06 16:14:21 +02:00
1f35539578 Delete MyBagsCache.toc 2016-09-06 16:13:59 +02:00
5e6b8eebf8 Delete MyBagsCache.xml 2016-09-06 16:12:43 +02:00
570abca36f Bump interface version 2016-07-19 22:37:00 +02:00
7e13a47e52 7.0.3 compatibility fixes 2016-07-19 22:36:49 +02:00
152d61d84f Core lib version update to trigger packager 2015-08-28 12:36:48 +02:00
d21ff3c73a Core lib version update 2015-08-28 12:23:56 +02:00
59d3e610c3 TOC update 2015-08-28 12:23:37 +02:00
b5dc2961b0 Remove unused localization files 2015-01-06 22:25:23 +01:00
238145bef1 Use the localization from the core library 2015-01-06 22:24:49 +01:00
6e5fa165f2 Use the localization from the core library 2015-01-06 22:24:30 +01:00
c0db29ffe8 Use the localization from the core library 2015-01-06 22:24:08 +01:00
5fc53d2191 Use localized title string 2015-01-06 22:23:08 +01:00
b03e7b4df2 Add some new locale string 2015-01-06 22:22:33 +01:00
31f513db74 Move bindings to Addons category 2015-01-06 22:20:51 +01:00
25765b5f3c - Change event registration methods
- Add MyBank sorting
- Fix some tainting issue
2015-01-06 19:41:22 +01:00
3e06a3a7ad Change toc number 2015-01-05 15:55:37 +01:00
1dffea8341 Added bag sort capability to the inventory frame 2015-01-05 15:39:07 +01:00
237217ede4 Add some debug variable 2014-10-22 17:19:01 +02:00
9c84784542 line endings again 2014-10-21 18:12:30 +02:00
5775870bcd line endings 2014-10-21 18:11:43 +02:00
00683de69b TOC update 2014-10-21 18:10:14 +02:00
2b8a6af9e2 Core fixes for 6.0.2 2014-10-21 18:07:13 +02:00
24 changed files with 3694 additions and 4166 deletions

View File

@ -33,24 +33,3 @@ externals:
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

View File

@ -1,11 +1,11 @@
<Bindings>
<Binding name="MYINVENTORY" header="MYBAGSHEADER">
<Binding name="MYINVENTORY" header="MYBAGSHEADER" category="ADDONS">
if MyInventory then MyInventory:Toggle() end
</Binding>
<Binding name="MYBANK">
<Binding name="MYBANK" header="MYBAGSHEADER" category="ADDONS">
if MyBank then MyBank:Toggle() end
</Binding>
<Binding name="MYEQUIPMENT">
<Binding name="MYEQUIPMENT" header="MYBAGSHEADER" category="ADDONS">
if MyEquipment then MyEquipment:Toggle() end
</Binding>
</Bindings>

View File

@ -1,6 +1,8 @@
local L = LibStub("AceLocale-3.0"):NewLocale("MyBags", "enUS", true)
if not L then return end
if not L then
return
end
-- Global locales
L["ACE_TEXT_OF"] = "of";
@ -13,6 +15,7 @@ L["BINDING_NAME_MYINVENTORY"] = "Toggle MyInventory"
L["BINDING_NAME_MYBANK"] = "Toggle MyBank"
L["BINDING_NAME_MYEQUIPMENT"] = "Toggle MyEquipment"
-- Bag types
L["ACEG_TEXT_AMMO"] = "Ammo";
L["ACEG_TEXT_QUIVER"] = "Quiver";
L["ACEG_TEXT_SOUL"] = "Soul Bag";
@ -21,6 +24,7 @@ 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]";
@ -32,6 +36,12 @@ L["MYBAGS_TITLE0"] = ""
L["MYBAGS_TITLE1"] = "%s's "
L["MYBAGS_TITLE2"] = "%s of %s's "
-- MYBANK_NAME = "MyBank"
-- MYBANK_DESCRIPTION = "All in one bank mod"
L["MYBANKFRAME_TITLE"] = "Bank"
L["MYINVENTORYFRAME_TITLE"] = "Inventory"
L["MYEQUIPMENTFRAME_TITLE"] = "Equipment"
L["MYBAGS_SLOTS_FREE"] = "%d/%d Slots Free";
L["MYBAGS_SLOTS_USED"] = "%d/%d Slots Used";

View File

@ -1,8 +1,8 @@
## Interface: 50400
## Interface: 70000
## Author: Ramble (modified by Isharra) (updated by thegabbert) (converted to Ace3 by Takika)
## Title: MyBags |cff007FFF -Ace3-|r
## Notes: Complete Replacement for Inventory and Bank Bags.
## OptionalDeps: MyBagsCache, DataStore, DataStore_Containers, DataStore_Characters
## OptionalDeps: DataStore, DataStore_Containers, DataStore_Characters
## SavedVariables: MyInventoryDB, MyBankDB, MyEquipmentDB
Embeds.xml

View File

@ -1,12 +0,0 @@
<?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>

View File

@ -1,4 +0,0 @@
<?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>

View File

@ -1,11 +0,0 @@
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";

View File

@ -1,452 +0,0 @@
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, t, id, il, n = select(3, strfind(l, "|cff(%x+)|H(%l+):(%-?%d+)([^|]+)|h%[(.-)%]|h|r"))
-- return n, c, id .. il, id, t
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

View File

@ -1,16 +0,0 @@
## Interface: 50400
## 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

View File

@ -1,12 +0,0 @@
<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>

View File

@ -1,4 +0,0 @@
<?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>

View File

@ -1,36 +0,0 @@
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"

View File

@ -1,20 +1,83 @@
local MBC = "MyBagsCore-1.0"
local MBC_MINOR = "2014.02.11.3"
if not LibStub then error(MBC .. " requires LibStub.") end
local MBC = "MyBagsCore-1.1"
local MBC_MINOR = "2016.09.08.1"
-- Lua APIs
local error, assert, pairs, unpack = error, assert, pairs, unpack
local strfind, strlen, strsub, strlower, strgmatch, strupper = string.find, string.len, string.sub, string.lower, string.gmatch, string.upper
local strtrim, format, floor = strtrim, format, floor
local tinsert, tremove = table.insert, table.remove
local tostring, tonumber, select = tostring, tonumber, select
-- WoW APIs
local _G = _G
local NewItemsIsNewItem = C_NewItems.IsNewItem
local BackpackTokenFrame_IsShown = BackpackTokenFrame_IsShown
local BankButtonIDToInvSlotID = BankButtonIDToInvSlotID
local BattlePetToolTip_Show = BattlePetToolTip_Show
local ChatEdit_InsertLink = ChatEdit_InsertLink
local ContainerIDToInventoryID = ContainerIDToInventoryID
local CooldownFrame_Set = CooldownFrame_Set
local CreateFrame = CreateFrame
local CursorUpdate = CursorUpdate
local DressUpItemLink = DressUpItemLink
local GetBackpackCurrencyInfo = GetBackpackCurrencyInfo
local GetBankSlotCost = GetBankSlotCost
local GetContainerItemCooldown = GetContainerItemCooldown
local GetContainerItemInfo = GetContainerItemInfo
local GetContainerItemLink = GetContainerItemLink
local GetContainerNumSlots = GetContainerNumSlots
local GetInventoryItemTexture = GetInventoryItemTexture
local GetInventorySlotInfo = GetInventorySlotInfo
local GetItemIcon = GetItemIcon
local GetItemInfo = GetItemInfo
local GetItemQualityColor = GetItemQualityColor
local GetMoney = GetMoney
local GetNumBankSlots = GetNumBankSlots
local GetRealmName = GetRealmName
local IsAddOnLoaded = IsAddOnLoaded
local IsBattlePayItem = IsBattlePayItem
local IsControlKeyDown, IsShiftKeyDown = IsControlKeyDown, IsShiftKeyDown
local IsInventoryItemLocked = IsInventoryItemLocked
local IsInventoryItemProfessionBag = IsInventoryItemProfessionBag
local MoneyFrame_Update = MoneyFrame_Update
local PickupBagFromSlot = PickupBagFromSlot
local PlaySound = PlaySound
local PutItemInBackpack = PutItemInBackpack
local PutItemInBag = PutItemInBag
local SetItemButtonCount = SetItemButtonCount
local SetItemButtonDesaturated = SetItemButtonDesaturated
local SetItemButtonNormalTextureVertexColor = SetItemButtonNormalTextureVertexColor
local SetItemButtonTexture = SetItemButtonTexture
local SetItemButtonTextureVertexColor = SetItemButtonTextureVertexColor
local SetMoneyFrameColor = SetMoneyFrameColor
local SetTooltipMoney = SetTooltipMoney
local ShowInspectCursor = ShowInspectCursor
local SortBags = SortBags
local StaticPopup_Show = StaticPopup_Show
local UnitName = UnitName
--Global variables that we don't cache, list them here for the mikk's Find Globals script
-- GLOBALS: StaticPopupDialogs, UIParent, UISpecialFrames, UIDropDownMenu_SetSelectedValue, ContainerFrameItemButton_OnLoad
-- GLOBALS: BankFrameItemButtonGeneric_OnClick, ContainerFrameItemButton_OnClick, ContainerFrameItemButton_OnEnter
if not LibStub then
error(MBC .. " requires LibStub.")
end
local MyBagsCore = LibStub:NewLibrary(MBC, MBC_MINOR)
if not MyBagsCore then return end
if not MyBagsCore then
return
end
MyBagsCore.embeds = MyBagsCore.embeds or {} -- table containing objects MyBagsCore is embedded in.
local AC = LibStub("AceConsole-3.0");
assert(AC, MBC .. " requires AceConsole-3.0");
local AC = LibStub("AceConsole-3.0")
assert(AC, MBC .. " requires AceConsole-3.0")
local MYBAGS_BOTTOMOFFSET = 20
local MYBAGS_COLWIDTH = 40
local MYBAGS_ROWHEIGHT = 40
local MYBAGS_MAXBAGSLOTS = 28
local MIN_SCALE_VAL = "0.2"
local MAX_SCALE_VAL = "2.0"
@ -27,16 +90,13 @@ local MYBAGS_HERBCOLOR = { 0.0, 0.6, 0.0 }
local MYBAGS_GEMCOLOR = { 0.0, 0.6, 0.6 }
local MYBAGS_MININGCOLOR = { 0.0, 0.0, 0.6 }
local ACEG_MAP_ONOFF = {[0]="|cffff5050Off|r",[1]="|cff00ff00On|r"}
local ACEG_MAP_ONOFF = {
[0] = "|cffff5050Off|r",
[1] = "|cff00ff00On|r"
}
local L = LibStub("AceLocale-3.0"):GetLocale("MyBags")
local pcall, error, pairs, unpack = pcall, error, pairs, unpack
local strfind, strlen, strsub, strlower, strgmatch, strupper = string.find, string.len, string.sub, string.lower, string.gmatch, string.upper
local strtrim = strtrim
local tinsert, tremove = table.insert, table.remove
local tostring, tonumber, select = tostring, tonumber, select
local mb_options = {
type = "group",
args = {
@ -64,9 +124,10 @@ local function ColorConvertHexToDigit(h)
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
return ((tonum(strsub(h, 1, 1)) or r[strsub(h, 1, 1)] or 0) * 16 + (tonum(strsub(h, 2, 2)) or r[strsub(h, 2, 2)] or 0)) / 255,
((tonum(strsub(h, 3, 3)) or r[strsub(h, 3, 3)] or 0) * 16 + (tonum(strsub(h, 4, 4)) or r[strsub(h, 4, 4)] or 0)) / 255,
((tonum(strsub(h, 5, 5)) or r[strsub(h, 5, 5)] or 0) * 16 + (tonum(strsub(h, 6, 6)) or r[strsub(h, 6, 6)] or 0)) / 255
end
local function GetItemInfoFromLink(l)
@ -83,10 +144,11 @@ local function GetBattlePetInfoFromLink(l)
return
end
local c, id, lvl, num, hp, pw, sp, u, n
local id, lvl, rar, hp, pw, sp, n
if (strfind(l, "Hbattlepet")) then
-- "|cff0070dd|Hbattlepet:1178:1:3:152:13:10:0x0000000000000000|h[Sunreaver Micro-Sentry]|h|r"
c, id, lvl, rar, hp, pw, sp, u, n = select(3, strfind(l, "|cff(%x+)|Hbattlepet:(%-?%d+):(%d+):(%d+):(%d+):(%d+):(%d+):([^|]+)|h%[(.-)%]|h|r"))
local u
id, lvl, rar, hp, pw, sp, u, n = select(4, strfind(l, "|cff(%x+)|Hbattlepet:(%-?%d+):(%d+):(%d+):(%d+):(%d+):(%d+):([^|]+)|h%[(.-)%]|h|r"))
end
return tonum(id), tonum(lvl), tonum(rar), tonum(hp), tonum(pw), tonum(sp), n
@ -151,7 +213,6 @@ local function ParseWords(str, pat)
end
local list = {}
local word
for word in strgmatch(str, pat or "%S+") do
tinsert(list, word)
@ -186,7 +247,7 @@ function MyBagsCore:OnEmbedInitialize(addon)
addon.SetOpt = function(var,val)
local prof = addon.db:GetCurrentProfile()
addon.db.profiles[prof][var] = val;
addon.db.profiles[prof][var] = val
end
addon.TogOpt = function(var)
@ -214,9 +275,11 @@ function MyBagsCore:OnEmbedInitialize(addon)
if val == true then
val = 1
end
if (map) then
val = map[val or 0] or val
end
AC:Printf(format(L["ACE_CMD_RESULT"], addon.name, text .. " " .. L["ACEG_TEXT_NOW_SET_TO"] .. " " .. format(L["ACEG_DISPLAY_OPTION"], val or L["ACE_CMD_REPORT_NO_VAL"])))
end
@ -232,7 +295,6 @@ function MyBagsCore:OnEmbedInitialize(addon)
addon.frame = _G[addon.frameName]
addon.frame.self = addon
local inOptions = false
local key, value
for key, value in pairs(INTERFACEOPTIONS_ADDONCATEGORIES) do
if value.name == "MyBags" then
inOptions = true
@ -247,16 +309,14 @@ function MyBagsCore:OnEmbedInitialize(addon)
LibStub("AceConfig-3.0"):RegisterOptionsTable(addon.name, addon.options)
LibStub("AceConfigDialog-3.0"):AddToBlizOptions(addon.name, addon.name, "MyBags")
local charName = strtrim(UnitName("player"));
local realmName = strtrim(GetRealmName());
-- self.atBank = false
local charName = strtrim(UnitName("player"))
local realmName = strtrim(GetRealmName())
addon.Player = charName .. L["CHARACTER_DELIMITOR"] .. realmName
end
-- OnEnable
function MyBagsCore:OnEmbedEnable(addon)
addon:RegisterEvents();
addon:HookFunctions();
addon:HookFunctions()
if addon.GetOpt("Scale") then
addon.frame:SetScale(addon.GetOpt("Scale"))
end
@ -288,10 +348,18 @@ function MyBagsCore:RegisterEvents(obj)
self = obj
end
self:RegisterEvent("BAG_UPDATE");
self:RegisterEvent("BAG_UPDATE")
self:RegisterEvent("BAG_UPDATE_COOLDOWN", "LayoutFrameOnEvent")
-- self:RegisterEvent("UNIT_INVENTORY_CHANGED", "UNIT_INVENTORY_CHANGED");
self:RegisterEvent("ITEM_LOCK_CHANGED", "LayoutFrameOnEvent");
-- self:RegisterEvent("UNIT_INVENTORY_CHANGED", "UNIT_INVENTORY_CHANGED")
self:RegisterEvent("ITEM_LOCK_CHANGED", "LayoutFrameOnEvent")
end
function MyBagsCore:UnregisterEvents(obj)
if (obj) then
self = obj
end
self:UnregisterAllEvents()
end
function MyBagsCore:HookFunctions(obj)
@ -329,7 +397,6 @@ function MyBagsCore:CloseBag(bag)
end
function MyBagsCore:SetUISpecialFrames()
local k, v
if self.GetOpt("NoEsc") then
for k, v in pairs(UISpecialFrames) do
if v == (self.frameName) then
@ -357,6 +424,7 @@ function MyBagsCore:SetLockTexture()
if not self.GetOpt("Lock") then
texture = texture .. "Un"
end
texture = texture .. "Locked-Up"
button:SetTexture(texture)
if self.GetOpt("Lock") and self.GetOpt("Graphics") == "none" then
@ -368,12 +436,10 @@ end
function MyBagsCore:CanSaveItems()
local live = self:IsLive()
self.isLive = false
if self:GetInfoFunc() ~= self.GetInfoNone then
self.isLive = live
if self:GetInfoFunc() ~= self.GetInfoNone then
return true
else
self.isLive = live
return false
end
end
@ -398,8 +464,8 @@ function MyBagsCore:GetCurrentPlayer()
return self.Player
end
local charName = strtrim(UnitName("player"));
local realmName = strtrim(GetRealmName());
local charName = strtrim(UnitName("player"))
local realmName = strtrim(GetRealmName())
return charName .. L["CHARACTER_DELIMITOR"] .. realmName
end
@ -424,12 +490,13 @@ function MyBagsCore:TooltipSetOwner(owner, anchor)
end
function MyBagsCore:Open()
self:RegisterEvents()
if not self.frame:IsVisible() then
self.frame:Show()
end
local charName = strtrim(UnitName("player"));
local realmName = strtrim(GetRealmName());
local charName = strtrim(UnitName("player"))
local realmName = strtrim(GetRealmName())
self.Player = charName .. L["CHARACTER_DELIMITOR"] .. realmName
if self.Player then
@ -446,6 +513,8 @@ function MyBagsCore:Close()
if self.frame:IsVisible() then
self.frame:Hide()
end
self:UnregisterEvents()
end
function MyBagsCore:Toggle()
@ -484,7 +553,7 @@ function MyBagsCore:BagIDToInvSlotID(bag, isBank)
end
if isBank then
return BankButtonIDToInvSlotID(bag, 1)
return BankButtonIDToInvSlotID(bag - 4, 1)
end
return ContainerIDToInventoryID(bag)
@ -503,6 +572,7 @@ function MyBagsCore:IncludeBag(bag)
if self.db.profiles[prof][bs] and self.db.profiles[prof][bs]["Exclude"] then
return false
end
return true
end
end
@ -528,10 +598,8 @@ function MyBagsCore:GetCash()
local player, realm = self:SplitString(self:GetCurrentPlayer(), L["CHARACTER_DELIMITOR"])
local char_key = DS:GetCharacter(player, realm)
return DS:GetMoney(char_key)
elseif IsAddOnLoaded("MyBagsCache") then
local charID = self:GetCurrentPlayer()
return MyBagsCache:GetCash(charID)
end
return nil
end
@ -554,9 +622,11 @@ function MyBagsCore:SplitString(s, p, n)
tinsert(l, s)
break
end
if (n) then
n = n - 1
end
if (n and (n == 0)) then
tinsert(l, s)
break
@ -596,26 +666,23 @@ function MyBagsCore:GetInfo(bag, slot)
end
function MyBagsCore:GetInfoLive(bag, slot)
local charName = strtrim(UnitName("player"));
local realmName = strtrim(GetRealmName());
local charName = strtrim(UnitName("player"))
local realmName = strtrim(GetRealmName())
self.Player = charName .. L["CHARACTER_DELIMITOR"] .. realmName
local texture, count, ID, locked, quality, readable, name, i_type, _
if slot ~= nil then
-- it's an item
local texture, count, locked, _ , readable = GetContainerItemInfo(bag, slot)
texture, count, locked, _, readable = GetContainerItemInfo(bag, slot)
local itemLink = GetContainerItemLink(bag, slot)
local name, quality, _, ID, i_type
if itemLink then
name, quality, _, ID, i_type = GetItemInfoFromLink(itemLink)
end
count = tonum(count)
return texture, count, ID, locked, quality, readable, name or nil, i_type
else
-- it's a bag
local count = GetContainerNumSlots(bag)
i_type = "bag"
count = GetContainerNumSlots(bag)
local itemLink
local inventoryID = self:BagIDToInvSlotID(bag)
local texture, itemLink, locked, readable
local name, quality, _, ID
if inventoryID then
texture = GetInventoryItemTexture("player", inventoryID)
itemLink = GetInventoryItemLink("player", inventoryID)
@ -626,23 +693,22 @@ function MyBagsCore:GetInfoLive(bag, slot)
readable = IsSpecialtyBagFromLink(itemLink)
elseif (bag == -1) then
texture = "Interface\\Buttons\\Button-Backpack-Up"
count = 28;
count = 28
elseif (bag == 0) then
texture = "Interface\\Buttons\\Button-Backpack-Up"
count = 16
end
end
count = tonum(count)
return texture, count, ID, locked, quality, readable, name or nil, "bag"
end
return texture, count, ID, locked, quality, readable, name or nil, i_type
end
function MyBagsCore:GetInfoDataStore(bag, slot)
local DS = DataStore
local player, realm = self:SplitString(self:GetCurrentPlayer(), L["CHARACTER_DELIMITOR"])
local char_key = DS:GetCharacter(player, realm)
local readable
local quality
local texture, count, ID, quality, readable, name, i_type, _
if self.isEquipment then
-- texture, count, id, locked, quality, _, name = GetInfo(item)
@ -659,18 +725,18 @@ function MyBagsCore:GetInfoDataStore(bag, slot)
if bag == -1 then
bag = 100
end
local container = DS:GetContainer(char_key, bag)
if not slot then
local texture, ID, count, _, _ = DS:GetContainerInfo(char_key, bag)
local name
i_type = "bag"
texture, ID, count, _, _ = DS:GetContainerInfo(char_key, bag)
if ID then
name = GetItemInfo(ID)
readable = IsSpecialtyBagFromID(ID)
end
return texture, count, ID, nil, quality, readable, name
else
local ID, slotLink, count = DS:GetSlotInfo(container, slot)
local name, itemLink, texture, quality, i_type
local slotLink, itemLink
ID, slotLink, count = DS:GetSlotInfo(container, slot)
if ID then
name, itemLink = GetItemInfo(ID)
texture = GetItemIcon(ID)
@ -678,28 +744,15 @@ function MyBagsCore:GetInfoDataStore(bag, slot)
quality, i_type = select(3, strfind(itemLink, "|cff(%x+)|H(%l+):.*|h|r"))
end
end
if slotLink then
ID = slotLink
end
return texture, count, ID, nil, quality, readable, name, i_type
end
end
end
function MyBagsCore:GetInfoMyBagsCache(bag,slot)
local charID = self:GetCurrentPlayer()
local texture, count, ID, locked, quality, readable, name, i_type
if self.isEquipment then
texture, count, ID, quality, name, i_type = MyBagsCache:GetInfo("equipment", bag, charID)
else
texture, count, ID, quality, name, i_type = MyBagsCache:GetInfo(bag, slot, charID)
if not slot and ID then
readable = IsSpecialtyBagFromID(ID)
end
end
count = tonum(count)
return texture, count, ID, nil, quality, readable, name, i_type
return texture, count, ID, nil, quality or nil, readable, name, i_type
end
end
function MyBagsCore:GetInfoNone(bag, slot)
@ -708,13 +761,12 @@ end
function MyBagsCore:GetSlotCount()
local slots, used, displaySlots = 0, 0, 0
local i
local bagIndex
if self.isBank then
if self:CanSaveItems() or self.isLive then
slots = 28
displaySlots = 28
end
for i = 1, slots do
if (self:GetInfo(BANK_CONTAINER, i)) then
used = used + 1
@ -747,9 +799,9 @@ end
--ITEMBUTTONS--
function MyBagsCore:ItemButton_OnLoad(widget)
_G[widget:GetName().."NormalTexture"]:SetTexture("Interface\\AddOns\\MyBags\\Skin\\Button");
_G[widget:GetName() .. "NormalTexture"]:SetTexture("Interface\\AddOns\\MyBags\\Skin\\Button")
ContainerFrameItemButton_OnLoad(widget)
widget.UpdateTooltip = widget.ItemButton_OnEnter;
widget.UpdateTooltip = widget.ItemButton_OnEnter
end
function MyBagsCore:ItemButton_OnLeave(widget)
@ -758,6 +810,7 @@ function MyBagsCore:ItemButton_OnLeave(widget)
if bagButton then
bagButton:UnlockHighlight()
end
CursorUpdate(widget)
end
@ -779,10 +832,10 @@ function MyBagsCore:ItemButton_OnModifiedClick(widget, button)
if self.isLive then
-- if self.isBank and widget:GetParent():GetID() == BANK_CONTAINER then
-- BankFrameItemButtonGeneric_OnModifiedClick(widget, button)
-- StackSplitFrame:SetFrameStrata("TOOLTIP");
-- StackSplitFrame:SetFrameStrata("TOOLTIP")
-- else
-- ContainerFrameItemButton_OnModifiedClick(widget, button)
-- StackSplitFrame:SetFrameStrata("TOOLTIP");
-- StackSplitFrame:SetFrameStrata("TOOLTIP")
-- end
else
if (button == "LeftButton") then
@ -802,7 +855,7 @@ function MyBagsCore:ItemButton_OnModifiedClick(widget, button)
ChatEdit_InsertLink(hyperLink)
end
StackSplitFrame:Hide();
StackSplitFrame:Hide()
end
end
end
@ -821,7 +874,8 @@ function MyBagsCore:ItemButton_OnEnter(widget)
if widget:GetParent() == MyBankFrameBank then
GameTooltip:SetInventoryItem("player", BankButtonIDToInvSlotID(widget:GetID()))
else
local hasCooldown, repairCost, speciesID, level, breedQuality, maxHealth, power, speed, name = GameTooltip:SetBagItem(widget:GetParent():GetID(), widget:GetID())
local speciesID = select(3, GameTooltip:SetBagItem(widget:GetParent():GetID(), widget:GetID()))
-- local hasCooldown, repairCost, speciesID, level, breedQuality, maxHealth, power, speed, name = GameTooltip:SetBagItem(widget:GetParent():GetID(), widget:GetID())
if (speciesID and speciesID > 0) then
local link = GetContainerItemLink(widget:GetParent():GetID(), widget:GetID())
local id, lvl, rar, hp, pw, sp, n = GetBattlePetInfoFromLink(link)
@ -830,6 +884,7 @@ function MyBagsCore:ItemButton_OnEnter(widget)
if (BattlePetTooltip) then
BattlePetTooltip:Hide()
end
ContainerFrameItemButton_OnEnter(widget)
end
end
@ -838,7 +893,9 @@ function MyBagsCore:ItemButton_OnEnter(widget)
local i_type = select(8, self:GetInfo(widget:GetParent():GetID(), widget:GetID() - 1000))
if ID and i_type ~= "battlepet" then
local hyperlink = self:GetHyperlink(ID)
if hyperlink then GameTooltip:SetHyperlink(hyperlink) end
if hyperlink then
GameTooltip:SetHyperlink(hyperlink)
end
end
end
@ -862,16 +919,27 @@ end
--BAGBUTTONS--
function MyBagsCore:BagButton_OnEnter(widget)
local bagFrame = widget:GetParent()
local bagID = bagFrame:GetID()
local setTooltip = true
self:TooltipSetOwner(widget)
if self.isLive then
local invSlot = self:BagIDToInvSlotID(bagFrame:GetID())
if (bagID == 0) then
GameTooltip:SetText(BACKPACK_TOOLTIP, 1.0, 1.0, 1.0)
else
--
end
local invSlot = self:BagIDToInvSlotID(bagID)
if not invSlot or (not GameTooltip:SetInventoryItem("player", invSlot)) then
setTooltip = false
end
if (bagID == 0 or not IsInventoryItemProfessionBag("player", ContainerIDToInventoryID(bagID))) then
GameTooltip:AddLine(CLICK_BAG_SETTINGS)
end
else
local ID = select(3, self:GetInfo(widget:GetParent():GetID()))
if bagFrame:GetID() == 0 then
local ID = select(3, self:GetInfo(bagID))
if bagID == 0 then
GameTooltip:SetText(BACKPACK_TOOLTIP, 1.0,1.0,1.0)
elseif ID then
local hyperlink = self:GetHyperlink(ID)
@ -884,9 +952,8 @@ function MyBagsCore:BagButton_OnEnter(widget)
end
if not setTooltip then
local keyBinding
if self.isBank then
if self.isLive and not self:IsBagSlotUsable(bagFrame:GetID()) then
if self.isLive and not self:IsBagSlotUsable(bagID) then
GameTooltip:SetText(BANK_BAG_PURCHASE)
if MyBank.atBank then
local cost = GetBankSlotCost()
@ -897,27 +964,24 @@ function MyBagsCore:BagButton_OnEnter(widget)
else
SetMoneyFrameColor("GameTooltipMoneyFrame", 1.0, 0.1, 0.1)
end
GameTooltip:Show()
end
keyBinding = GetBindingKey("TOGGLEBAG" .. (4 - widget:GetID()))
else
GameTooltip:SetText(BANK_BAG)
end
else
if bagFrame:GetID() == 0 then
-- SetScript("OnEnter", MainMenuBarBackpackButton:GetScript("OnEnter"))
GameTooltip:SetText(BACKPACK_TOOLTIP, 1.0,1.0,1.0)
keyBinding = GetBindingKey("TOGGLEBACKPACK")
else
if bagID ~= 0 then
GameTooltip:SetText(EQUIP_CONTAINER)
else
-- SetScript("OnEnter", MainMenuBarBackpackButton:GetScript("OnEnter"))
-- GameTooltip:SetText(BACKPACK_TOOLTIP, 1.0,1.0,1.0)
end
end
end
if self.GetOpt("HlItems") then
-- Highlight
local i
for i = 1, self.GetOpt("MAXBAGSLOTS") do
local button = _G[bagFrame:GetName() .. "Item" .. i]
if button then
@ -925,12 +989,13 @@ function MyBagsCore:BagButton_OnEnter(widget)
end
end
end
GameTooltip:Show()
end
function MyBagsCore:BagButton_OnLeave(widget)
SetMoneyFrameColor("GameTooltipMoneyFrame", 1.0, 1.0, 1.0);
SetMoneyFrameColor("GameTooltipMoneyFrame", 1.0, 1.0, 1.0)
GameTooltip:Hide()
local i
for i = 1, self.GetOpt("MAXBAGSLOTS") do
local button = _G[widget:GetParent():GetName() .. "Item" .. i]
if button then
@ -954,6 +1019,7 @@ function MyBagsCore:BagButton_OnClick(widget, button, ignoreShift)
if not StaticPopupDialogs["PURCHASE_BANKBAG"] then
return
end
StaticPopup_Show("PURCHASE_BANKBAG")
end
@ -975,8 +1041,10 @@ function MyBagsCore:BagButton_OnClick(widget, button, ignoreShift)
if not self.db.profiles[prof][bg] then
self.db.profiles[prof][bg] = {}
end
self.db.profiles[prof][bg]["Exclude"] = true
end
self.hooks.CloseBag(bgnum)
self:LayoutFrame()
end
@ -1006,6 +1074,7 @@ function MyBagsCore:BagButton_OnReceiveDrag(widget)
else
hadItem = PutItemInBag(invID)
end
if not hadItem then
if not self:IncludeBag(bagFrame:GetID()) then
self.hooks.ToggleBag(bagFrame:GetID())
@ -1020,6 +1089,7 @@ function MyBagsCore:LayoutOptions()
local cash = _G[self.frameName .. "MoneyFrame"]
local slots = _G[self.frameName .. "Slots"]
local buttons = _G[self.frameName .. "Buttons"]
local sortButton = _G[self.frameName .. "SortButton"]
local search = _G[self.frameName .. "SearchBox"]
if search then
@ -1051,39 +1121,41 @@ function MyBagsCore:LayoutOptions()
cash:Hide()
end
if self.GetOpt("Token") and ManageBackpackTokenFrame then
local token = _G[self.frameName .. "TokenFrame"]
if self.GetOpt("Token") and ManageBackpackTokenFrame then
if (BackpackTokenFrame_IsShown()) then
token:SetParent(self.frameName)
token:SetPoint("RIGHT", cash, "LEFT", -10, 0)
local i
for i = 1, MAX_WATCHED_TOKENS do
local name, count, icon, currencyID = GetBackpackCurrencyInfo(i);
local name, count, icon, currencyID = GetBackpackCurrencyInfo(i)
-- Update watched tokens
local watchButton = _G[self.frameName .. "TokenFrameToken"..i];
local watchButton = _G[self.frameName .. "TokenFrameToken" .. i]
if (name) then
watchButton.icon:SetTexture(icon);
watchButton.icon:SetTexture(icon)
if (count <= 99999) then
watchButton.count:SetText(count);
watchButton.count:SetText(count)
else
watchButton.count:SetText("*");
watchButton.count:SetText("*")
end
watchButton.currencyID = currencyID;
watchButton:Show();
BackpackTokenFrame.shouldShow = 1;
BackpackTokenFrame.numWatchedTokens = i;
watchButton.currencyID = currencyID
watchButton:Show()
BackpackTokenFrame.shouldShow = 1
BackpackTokenFrame.numWatchedTokens = i
else
watchButton:Hide();
watchButton:Hide()
if (i == 1) then
BackpackTokenFrame.shouldShow = nil;
BackpackTokenFrame.shouldShow = nil
end
end
end
token:Show()
else
token:Hide()
end
else
token:Hide()
end
if self.GetOpt("Buttons") then
@ -1101,6 +1173,7 @@ function MyBagsCore:LayoutOptions()
else
playerSelectFrame:Hide()
end
playerSelectFrame:ClearAllPoints()
if self.GetOpt("Graphics") == "art" then
@ -1149,6 +1222,7 @@ function MyBagsCore:LayoutOptions()
else
slots:Hide()
end
if self.GetOpt("Reverse") then
self.reverseOrder = true
else
@ -1159,14 +1233,44 @@ function MyBagsCore:LayoutOptions()
if self.GetOpt("AIOI") then
self.aioiOrder = true
local columns = self.GetOpt("Columns")
if not (self.isEquipment) and self.GetOpt("Bag") == "before" then displaySlots = displaySlots + self.totalBags end
if not (self.isEquipment) and self.GetOpt("Bag") == "before" then
displaySlots = displaySlots + self.totalBags
end
columns = tonum(columns)
if self.isEquipment then displaySlots = 20 end
if self.isEquipment then
displaySlots = 20
end
self.curCol = columns - (mod(displaySlots, columns))
if self.curCol == columns then self.curCol = 0 end
if self.curCol == columns then
self.curCol = 0
end
else
self.aioiOrder = false
end
if self.isLive and self.GetOpt("BagSort") then
-- sortButton:ClearAllPoints()
sortButton:SetPoint("TOPRIGHT", search, "TOPLEFT", -20, 1)
sortButton:SetScript("OnEnter", nil)
sortButton:SetScript("OnLeave", nil)
sortButton:SetScript("OnClick", function()
self:SortBags();
end)
--[[
if search:IsShown() then
sortButton:SetPoint("TOPRIGHT", search, "TOPLEFT", -8, 0)
elseif playerSelectFrame:IsShown() then
sortButton:SetPoint("TOPRIGHT", playerSelectFrame, "TOPLEFT", -8, 0)
else
sortButton:SetPoint("TOPRIGHT", self.frameName, "TOPRIGHT", -8, -32)
end
]]
sortButton:Show()
else
sortButton:Hide()
end
end
function MyBagsCore:UpdateTitle()
@ -1187,7 +1291,7 @@ function MyBagsCore:UpdateTitle()
titleString = L["MYBAGS_TITLE0"]
end
titleString = titleString .. _G[strupper(self.frameName) .. "_TITLE"]
titleString = titleString .. L[strupper(self.frameName) .. "_TITLE"]
local title = _G[self.frameName .. "Name"]
local player, realm = self:SplitString(self:GetCurrentPlayer(), L["CHARACTER_DELIMITOR"])
title:SetText(format(titleString, player, realm))
@ -1275,7 +1379,6 @@ function MyBagsCore:LayoutBagFrame(bagFrame)
searchText = strlower(strtrim(searchText))
end
local slot
local itemBase = bagFrameName .. "Item"
local bagButton = _G[bagFrameName .. "Bag"]
local slotColor = ((self.GetOpt("SlotColor")) or MYBAGS_SLOTCOLOR)
@ -1292,7 +1395,7 @@ function MyBagsCore:LayoutBagFrame(bagFrame)
bagFrame.size = tonum(count)
if bagButton and bagFrame:GetID() ~= BANK_CONTAINER then
if not texture then
local bag_id, texture = GetInventorySlotInfo("Bag0Slot")
texture = select(2, GetInventorySlotInfo("Bag0Slot"))
end
if not self.isLive or (self.isLive and self:IsBagSlotUsable(bagFrame:GetID())) then
@ -1343,11 +1446,17 @@ function MyBagsCore:LayoutBagFrame(bagFrame)
bagFrame.size = 0
else
for slot = 1, bagFrame.size do
local itemButton = _G[itemBase .. slot] or CreateFrame("Button", itemBase .. slot, bagFrame, "MyBagsItemButtonTemplate")
if (self:IsLive()) then
itemButton:SetID(slot);
local itemButton
if (_G[itemBase .. slot]) then
itemButton = _G[itemBase .. slot]
else
itemButton:SetID(slot + 1000);
itemButton = CreateFrame("Button", itemBase .. slot, bagFrame, "MyBagsItemButtonTemplate")
end
if (self:IsLive()) then
itemButton:SetID(slot)
else
itemButton:SetID(slot + 1000)
end
if self.curCol >= self.GetOpt("Columns") then
@ -1355,8 +1464,42 @@ function MyBagsCore:LayoutBagFrame(bagFrame)
self.curRow = self.curRow + 1
end
local newItemTexture = _G[itemBase .. slot .. "NewItemTexture"]
local newItemTexture = _G[itemBase .. slot].NewItemTexture
local flash = _G[itemBase .. slot].flashAnim
local newItemAnim = _G[itemBase .. slot].newitemglowAnim
local isNewItem = NewItemsIsNewItem(bagFrame:GetID(), itemButton:GetID())
local isBattlePayItem = IsBattlePayItem(bagFrame:GetID(), itemButton:GetID())
local battlepayItemTexture = _G[itemBase .. slot].BattlepayItemTexture
battlepayItemTexture:Hide()
if (isNewItem) then
if (isBattlePayItem) then
newItemTexture:Hide()
battlepayItemTexture:Show()
else
if (quality and NEW_ITEM_ATLAS_BY_QUALITY[quality]) then
newItemTexture:SetAtlas(NEW_ITEM_ATLAS_BY_QUALITY[quality])
else
newItemTexture:SetAtlas("bags-glow-white")
end
battlepayItemTexture:Hide()
newItemTexture:Show()
end
if (not flash:IsPlaying() and not newItemAnim:IsPlaying()) then
flash:Play()
newItemAnim:Play()
end
else
battlepayItemTexture:Hide()
newItemTexture:Hide()
if (flash:IsPlaying() or newItemAnim:IsPlaying()) then
flash:Stop()
newItemAnim:Stop()
end
end
itemButton:Show()
itemButton:ClearAllPoints()
itemButton:SetPoint("TOPLEFT", self.frame:GetName(), "TOPLEFT", self:GetXY(self.curRow, self.curCol))
@ -1380,7 +1523,7 @@ function MyBagsCore:LayoutBagFrame(bagFrame)
if self.isLive then
local start, duration, enable = GetContainerItemCooldown(bagFrame:GetID(), slot)
local cooldown = _G[itemButton:GetName() .. "Cooldown"]
CooldownFrame_SetTimer(cooldown, start, duration, enable)
CooldownFrame_Set(cooldown, start, duration, enable)
if duration > 0 and enable == 0 then
SetItemButtonTextureVertexColor(itemButton, 0.4, 0.4, 0.4)
end
@ -1437,7 +1580,7 @@ function MyBagsCore:LayoutFrame()
self.isLive = self:IsLive()
local bagBase = self.frameName .. "Bag"
local bagIndex, bagFrame, bag
local bagFrame
self.curRow, self.curCol = 0,0
self:LayoutOptions()
if self.isEquipment then
@ -1487,10 +1630,17 @@ function MyBagsCore:LayoutFrameOnEvent(event, unit)
return
end
if event == "BAG_UPDATE_COOLDOWN" then
if self.isLive then
self:LayoutFrame()
end
end
end
function MyBagsCore:SortBags()
PlaySound("UI_BagSorting_01")
SortBags()
end
function MyBagsCore:LockButton_OnClick()
self.TogOpt("Lock")
@ -1499,7 +1649,6 @@ end
function MyBagsCore:SetColumns(cols)
cols = floor(tonum(cols))
self.SetOpt("Columns", cols)
self:LayoutFrame()
end
@ -1652,6 +1801,11 @@ function MyBagsCore:SetStrata(strata)
end
end
function MyBagsCore:SetBagSort()
self.TogMsg("BagSort", "Bag sorting")
self:LayoutFrame()
end
function MyBagsCore:ResetSettings()
self.db:ResetProfile()
local prof = self.db:GetCurrentProfile()
@ -1678,11 +1832,7 @@ function MyBagsCore:ResetAnchor()
end
function MyBagsCore:SetAnchor(point)
if point == "topleft" then
elseif point == "topright" then
elseif point == "bottomleft" then
elseif point == "bottomright" then
else
if not (point == "topleft" or point == "topright" or point == "bottomleft" or point == "bottomright") then
self.Error("Invalid Entry for Anchor")
return
end
@ -1693,7 +1843,8 @@ function MyBagsCore:SetAnchor(point)
local top1 = anchorframe:GetTop()
local left1 = anchorframe:GetLeft()
if not top or not left or not left1 or not top1 then
self.Error("Frame must be open to set anchor") return
self.Error("Frame must be open to set anchor")
return
end
self.frame:ClearAllPoints()
@ -1716,7 +1867,7 @@ function MyBagsCore:SetAnchor(point)
self.SetOpt("Anchor", point)
self.Result("Anchor", point)
self.anchorPoint = strupper(point)
return TRUE
return true
end
function MyBagsCore:SetCompanion()
@ -1756,13 +1907,13 @@ function MyBagsCore:BagSearch_OnTextChanged()
local search = _G[self.frameName .. "SearchBox"]
local text = search:GetText()
if (text == SEARCH) then
text = "";
text = ""
end
if (text ~= "") then
search.clearButton:Show();
search.clearButton:Show()
else
search.clearButton:Hide();
search.clearButton:Hide()
end
self:LayoutFrame()
@ -1775,14 +1926,18 @@ function MyBagsCore:BagSearch_OnEditFocusGained()
search.searchIcon:SetVertexColor(1.0, 1.0, 1.0)
local text = search:GetText()
if (text == SEARCH) then
text = "";
text = ""
end
search.clearButton:Show();
search.clearButton:Show()
search:SetText(text)
self:LayoutFrame()
end
function MyBagsCore:GetCoreVersion()
return MBC .. " version " .. MBC_MINOR
end
local mixins = {
"ToggleBag",
"OpenBag",
@ -1808,7 +1963,6 @@ local mixins = {
"GetInfo",
"GetInfoLive",
"GetInfoDataStore",
"GetInfoMyBagsCache",
"GetInfoNone",
"GetSlotCount",
"ItemButton_OnLoad",
@ -1830,6 +1984,7 @@ local mixins = {
"LayoutBagFrame",
"LayoutFrame",
"LayoutFrameOnEvent",
"SortBags",
"LockButton_OnClick",
"SetColumns",
"SetReplace",
@ -1851,6 +2006,7 @@ local mixins = {
"SetCount",
"SetScale",
"SetStrata",
"SetBagSort",
"ResetSettings",
"ResetAnchor",
"SetAnchor",
@ -1861,10 +2017,10 @@ local mixins = {
"BagSearch_OnEditFocusGained",
"RegisterEvents",
"UnregisterEvents",
"GetCoreVersion",
}
function MyBagsCore:Embed(target)
local k, v
for k, v in pairs(mixins) do
target[v] = self[v]
end

View File

@ -2,7 +2,7 @@
xsi:schemaLocation="http://www.blizzard.com/wow/ui/FrameXML/UI.xsd">
<Script file="MyBags.lua"/>
<!-- Templates -->
<Button name="MyBagsItemButtonTemplate" inherits="ContainerFrameItemButtonTemplate" virtual="true">
<Button name="MyBagsItemButtonTemplate" inherits="ContainerFrameItemButtonTemplate" virtual="true" hidden="true">
<Frames>
<Cooldown name="$parentCooldown" inherits="CooldownFrameTemplate"/>
</Frames>
@ -366,6 +366,22 @@
<Frame name="$parentBag4" inherits="MyBagsContainerTemplate" id="4"/>
<Frame name="$parentButtons" inherits="MyBagsButtonBarTemplate"/>
<Frame name="$parentCharSelect" inherits="MyBagsCharSelectTemplate"/>
<Button name="$parentSortButton">
<Size x="28" y="26"/>
<NormalTexture atlas="bags-button-autosort-up"/>
<PushedTexture atlas="bags-button-autosort-down"/>
<HighlightTexture file="Interface\Buttons\ButtonHilight-Square" alphaMode="ADD">
<Size x="24" y="23"/>
<Anchors>
<Anchor point="CENTER" x="0" y="0"/>
</Anchors>
</HighlightTexture>
<Scripts>
<OnEnter/>
<OnLeave/>
<OnClick/>
</Scripts>
</Button>
<Frame name="$parentTokenFrame">
<Size>
<AbsDimension x="183" y="32"/>

View File

@ -1,4 +0,0 @@
<?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>

View File

@ -1,34 +0,0 @@
-- 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
}
]]

View File

@ -2,6 +2,7 @@ local MYBANK_DEFAULT_OPTIONS = {
["Columns"] = 14,
["Replace"] = true,
["Bag"] = "bar",
["BagSort"] = true,
["Graphics"] = "art",
["Count"] = "free",
["HlItems"] = true,
@ -34,14 +35,32 @@ local MYBANK_DEFAULT_OPTIONS = {
["_RIGHTOFFSET"] = 3,
}
MyBank = LibStub("AceAddon-3.0"):NewAddon("MyBank", "MyBagsCore-1.0", "AceHook-3.0", "AceEvent-3.0", "AceConsole-3.0")
MyBank = LibStub("AceAddon-3.0"):NewAddon("MyBank", "MyBagsCore-1.1", "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 MB_Core = LibStub("MyBagsCore-1.1")
local L = LibStub("AceLocale-3.0"):GetLocale("MyBags")
-- Lua APIs
local pairs = pairs
local strtrim = strtrim
-- WoW APIs
local _G = _G
local CloseBackpack = CloseBackpack
local IsBagOpen = IsBagOpen
local MoneyFrame_Update = MoneyFrame_Update
local OpenBackpack = OpenBackpack
local PlaySound = PlaySound
local SetPortraitTexture = SetPortraitTexture
local SortBankBags = SortBankBags
local ToggleBackpack = ToggleBackpack
--Global variables that we don't cache, list them here for the mikk's Find Globals script
-- GLOBALS:
function MyBank:OnInitialize()
self.name = "MyBank"
self.frameName = "MyBankFrame"
@ -55,12 +74,13 @@ function MyBank:OnInitialize()
self.anchorParent = "UIParent"
self.anchorOffsetX = 5
self.anchorOffsetY = 100
self.db = LibStub("AceDB-3.0"):New("MyBankDB");
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 = {
@ -136,6 +156,17 @@ function MyBank:OnInitialize()
MyBank:SetBagDisplay(val)
end,
},
bagsort = {
type = "toggle",
name = "BagSort",
desc = "Toggle bag sort button",
get = function(info)
return MyBank.IsSet("BagSort")
end,
set = function(info, val)
MyBank:SetBagSort()
end,
},
back = {
type = "select",
name = "Background",
@ -389,7 +420,7 @@ function MyBank:OnInitialize()
end
function MyBank:OnEnable()
-- MyBagsCore:Enable(self);
-- MyBagsCore:Enable(self)
MyBankFrameBank.maxIndex = 28
MyBankFrameBank:SetID(BANK_CONTAINER)
MyBankFrameBag0:SetID(5)
@ -399,11 +430,14 @@ function MyBank:OnEnable()
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
self:RegisterEvent("BANKFRAME_OPENED")
MyBankFramePortrait:SetTexture("Interface\\Addons\\MyBags\\Skin\\MyBankPortrait")
StaticPopupDialogs["PURCHASE_BANKBAG"] = {
preferredIndex = STATICPOPUPS_NUMDIALOGS,
@ -428,9 +462,10 @@ function MyBank:OnEnable()
end
function MyBank:MB_ChatCommand(input)
if not input or input:trim() == "" then
if not input or strtrim(input) == "" then
MB_Dialog:Open(self.name)
else
input = strtrim(input)
MB_Cmd.HandleCommand(MyBank, "mybank", self.name, input)
end
end
@ -444,7 +479,10 @@ end
function MyBank:LoadDropDown()
local dropDown = _G[self.frameName .. "CharSelectDropDown"]
local dropDownButton = _G[self.frameName .. "CharSelectDropDownButton"]
if not dropDown then return end
if not dropDown then
return
end
local last_this = _G["this"]
_G["this"] = dropDownButton
UIDropDownMenu_Initialize(dropDown, self.UserDropDown_Initialize)
@ -455,13 +493,14 @@ end
function MyBank:UserDropDown_Initialize()
local this = self or _G.this
local chars, char_num, i
local chars, char_num
chars = MyBank:GetSortedCharList(MyBank.GetOpt("Sort"))
char_num = getn(chars)
char_num = #chars
if (char_num == 0) then
MyBank.GetOpt("Player")
-- MyBank.GetOpt("Player")
return
end
local frame = this:GetParent():GetParent()
local selectedValue = UIDropDownMenu_GetSelectedValue(this)
@ -473,7 +512,10 @@ function MyBank:UserDropDown_Initialize()
["owner"] = frame.self,
["checked"] = nil,
}
if selectedValue == info.value then info.checked = 1 end
if selectedValue == info.value then
info.checked = 1
end
UIDropDownMenu_AddButton(info)
end
end
@ -489,10 +531,14 @@ 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")
self:RegisterEvent("BANKFRAME_CLOSED")
end
function MyBank:UnregisterEvents()
MB_Core:UnregisterEvents(self)
self:RegisterEvent("BANKFRAME_OPENED")
end
function MyBank:HookFunctions()
@ -507,17 +553,20 @@ function MyBank:ToggleAllBags(forceopen)
else
ToggleBackpack()
end
local action, i
local action
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)
@ -526,7 +575,6 @@ function MyBank:ToggleAllBags(forceopen)
end
function MyBank:CloseAllBags()
local i
MyInventory:Close()
CloseBackpack() -- just in case backpack is not contolled by MyInventory
for i = 1, 4, 1 do
@ -534,6 +582,7 @@ function MyBank:CloseAllBags()
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)
@ -548,6 +597,7 @@ function MyBank:BAG_UPDATE(event, bag)
end
function MyBank:BANKFRAME_OPENED()
self:RegisterEvents()
MyBank.atBank = true
SetPortraitTexture(MyBankFramePortrait, "npc")
if self.Freeze == "always" or (self.Freeze == "sticky" and self.frame:IsVisible()) then
@ -555,6 +605,7 @@ function MyBank:BANKFRAME_OPENED()
else
self.holdOpen = false
end
if self.GetOpt("Replace") then
self:Open()
else
@ -571,26 +622,30 @@ function MyBank:BANKFRAME_CLOSED()
end -- calling self:close() would trigger the bank closing twice
else
self.holdOpen = false
if self.isLive then self:LayoutFrame() end
if self.isLive then
self:LayoutFrame()
end
end
self:UnregisterEvents()
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)
local result = {}
if IsAddOnLoaded("DataStore_Containers") then
local realmname
local realmlist = {}
local realmcount = 0
if not realm then
@ -602,10 +657,8 @@ function MyBank:GetSortedCharList(sorttype, realm)
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])
@ -615,9 +668,10 @@ function MyBank:GetSortedCharList(sorttype, realm)
end
end
end
local swapped
local q, w
local x_time, y_time;
local x_time, y_time
local charName, realmName
repeat
swapped = 0
@ -630,12 +684,14 @@ function MyBank:GetSortedCharList(sorttype, realm)
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
@ -643,51 +699,10 @@ function MyBank:GetSortedCharList(sorttype, realm)
end
end
until swapped == 0
end
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")
@ -702,3 +717,8 @@ function MyBank:SetReplace()
BankFrame:RegisterEvent("BANKFRAME_CLOSED")
end
end
function MyBank:SortBags()
PlaySound("UI_BagSorting_01")
SortBankBags()
end

View File

@ -1,7 +1,6 @@
<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>

View File

@ -1,4 +1,3 @@
local MYBAGS_MAXEQUIPSLOTS = 19
local MYBAGS_SLOTCOLOR = { 0.5, 0.5, 0.5 }
local MYEQUIPMENT_SLOT = {}
@ -46,22 +45,72 @@ local MYEQUIPMENT_DEFAULT_OPTIONS = {
["_RIGHTOFFSET"] = 3,
}
MyEquipment = LibStub("AceAddon-3.0"):NewAddon("MyEquipment", "AceConsole-3.0", "AceHook-3.0", "AceEvent-3.0", "MyBagsCore-1.0")
MyEquipment = LibStub("AceAddon-3.0"):NewAddon("MyEquipment", "AceConsole-3.0", "AceHook-3.0", "AceEvent-3.0", "MyBagsCore-1.1")
local ME_Dialog = LibStub("AceConfigDialog-3.0")
local ME_Cmd = LibStub("AceConfigCmd-3.0")
-- Lua APIs
local pairs = pairs
local strlen, strsub, strfind, strtrim = string.len, string.sub, string.find, strtrim
local select = select
local tonumber = tonumber
-- WoW APIs
local _G = _G
local ChatEdit_InsertLink = ChatEdit_InsertLink
local CursorCanGoInSlot = CursorCanGoInSlot
local CursorUpdate = CursorUpdate
local DressUpItemLink = DressUpItemLink
local GetInventoryItemCooldown = GetInventoryItemCooldown
local GetInventoryItemCount = GetInventoryItemCount
local GetInventoryItemLink = GetInventoryItemLink
local GetInventoryItemTexture = GetInventoryItemTexture
local GetInventorySlotInfo = GetInventorySlotInfo
local InRepairMode = InRepairMode
local IsControlKeyDown = IsControlKeyDown
local IsInventoryItemLocked = IsInventoryItemLocked
local IsShiftKeyDown = IsShiftKeyDown
local PaperDollItemSlotButton_OnClick = PaperDollItemSlotButton_OnClick
local PaperDollItemSlotButton_OnEvent = PaperDollItemSlotButton_OnEvent
local PaperDollItemSlotButton_OnModifiedClick = PaperDollItemSlotButton_OnModifiedClick
local SetItemButtonCount = SetItemButtonCount
local SetItemButtonDesaturated = SetItemButtonDesaturated
local SetItemButtonTexture = SetItemButtonTexture
local SetItemButtonTextureVertexColor = SetItemButtonTextureVertexColor
local SetTooltipMoney = SetTooltipMoney
local ShowInspectCursor = ShowInspectCursor
local UnitHasRelicSlot = UnitHasRelicSlot
--Global variables that we don't cache, list them here for the mikk's Find Globals script
-- GLOBALS:
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
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 ((tonum(strsub(h, 1, 1)) or r[strsub(h, 1, 1)] or 0) * 16 + (tonum(strsub(h, 2, 2)) or r[strsub(h, 2, 2)] or 0)) / 255,
((tonum(strsub(h, 3, 3)) or r[strsub(h, 3, 3)] or 0) * 16 + (tonum(strsub(h, 4, 4)) or r[strsub(h, 4, 4)] or 0)) / 255,
((tonum(strsub(h, 5, 5)) or r[strsub(h, 5, 5)] or 0) * 16 + (tonum(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
if (not l) then
return
end
local c, t, id, il, n = select(3, strfind(l, "|cff(%x+)|H(%l+):(%-?%d+)([^|]+)|h%[(.-)%]|h|r"))
return n, c, id .. il, id, t
end
local function tonum(val)
@ -312,7 +361,6 @@ 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
@ -333,7 +381,10 @@ end
function MyEquipment:LoadDropDown()
local dropDown = _G[self.frameName .. "CharSelectDropDown"]
local dropDownButton = _G[self.frameName .. "CharSelectDropDownButton"]
if not dropDown then return end
if not dropDown then
return
end
local last_this = _G["this"]
_G["this"] = dropDownButton
UIDropDownMenu_Initialize(dropDown, self.UserDropDown_Initialize)
@ -347,15 +398,15 @@ function MyEquipment:UserDropDown_Initialize()
local this = self or _G.this
local chars, charnum
chars = MyEquipment:GetSortedCharList(MyEquipment.GetOpt("Sort"))
charnum = getn(chars)
charnum = #chars
if (charnum == 0) then
self.GetOpt("Player")
-- 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],
@ -364,7 +415,10 @@ function MyEquipment:UserDropDown_Initialize()
["owner"] = frame.self,
["checked"] = nil,
}
if selectedValue == info.value then info.checked = 1 end
if selectedValue == info.value then
info.checked = 1
end
UIDropDownMenu_AddButton(info)
end
end
@ -384,11 +438,10 @@ end
function MyEquipment:GetRelic(charID)
if self.isLive then
return UnitHasRelicSlot("player")
elseif IsAddOnLoaded("MyBagsCache") then
return MyBagsCache:GetRelic(charID)
end
else
return nil
end
end
function MyEquipment:GetInfoFunc()
if self.isLive then
@ -397,15 +450,13 @@ function MyEquipment:GetInfoFunc()
elseif IsAddOnLoaded("DataStore_Inventory") then
return self.GetInfoDataStore
]]
elseif IsAddOnLoaded("MyBagsCache") then
return self.GetInfoMyBagsCache
end
else
return self.GetInfoNone
end
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)
@ -415,7 +466,7 @@ function MyEquipment:GetEquipInfoLive(itemIndex)
ID = select(4, GetItemInfoFromLink(itemLink))
end
end
local hasRelic = UnitHasRelicSlot("player")
local locked = IsInventoryItemLocked(itemIndex)
return texture, count, ID, locked, quality, readable, nil
end
@ -423,7 +474,7 @@ end
function MyEquipment:MyEquipmentItemSlotButton_OnLoad(widget)
widget:RegisterForDrag("LeftButton")
_G[widget:GetName() .. "NormalTexture"]:SetTexture("Interface\\AddOns\\MyBags\\Skin\\Button")
widget.UpdateTooltip = widget.MyEquipmentItemSlotButton_OnEnter;
widget.UpdateTooltip = widget.MyEquipmentItemSlotButton_OnEnter
end
function MyEquipment:MyEquipmentItemSlotButton_OnEnter(widget)
@ -433,9 +484,13 @@ function MyEquipment:MyEquipmentItemSlotButton_OnEnter(widget)
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
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)
@ -449,11 +504,19 @@ function MyEquipment:MyEquipmentItemSlotButton_OnEnter(widget)
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
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 widget.hasRelic then
text = TEXT(_G["RELICSLOT"])
end
if name then -- it's a bleeding ammo slot
text = name
GameTooltip:SetText(text, ColorConvertHexToDigit(quality))
@ -487,7 +550,10 @@ function MyEquipment:MyEquipmentItemSlotButton_OnModifiedClick(widget, button)
elseif (IsShiftKeyDown()) then
local ID = select(3, self:GetInfo(widget:GetID()))
local hyperLink
if ID then hyperLink = self:GetHyperlink(ID) end
if ID then
hyperLink = self:GetHyperlink(ID)
end
if hyperLink then
ChatEdit_InsertLink(hyperLink)
end
@ -512,6 +578,7 @@ function MyEquipment:MyEquipmentItemSlotButton_OnEvent(widget, event)
else
widget:UnlockHighlight()
end
return
end
end
@ -525,7 +592,7 @@ end
function MyEquipment:LayoutEquipmentFrame(self)
local itemBase = "MyEquipmentSlotsItem"
local texture, count, locked, quality, ammo, key, value, id
local texture, count, locked, quality, id
local slotColor = ((self.GetOpt("SlotColor")) or MYBAGS_SLOTCOLOR)
local charID = self:GetCurrentPlayer()
local hasRelic = self:GetRelic(charID)
@ -534,6 +601,7 @@ function MyEquipment:LayoutEquipmentFrame(self)
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]
@ -541,6 +609,7 @@ function MyEquipment:LayoutEquipmentFrame(self)
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))
@ -549,24 +618,30 @@ function MyEquipment:LayoutEquipmentFrame(self)
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)
CooldownFrame_Set(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
else
itemButton:UnlockHighlight()
end
if quality and self.GetOpt("Border") then
SetItemButtonNormalTextureVertexColor(itemButton, ColorConvertHexToDigit(quality))
else
@ -576,7 +651,7 @@ function MyEquipment:LayoutEquipmentFrame(self)
end
function MyEquipment:ME_ChatCommand(input)
if not input or input:trim() == "" then
if not input or strtrim(input) == "" then
ME_Dialog:Open(self.name)
else
ME_Cmd.HandleCommand(MyEquipment, "myequipment", self.name, input)
@ -584,6 +659,7 @@ function MyEquipment:ME_ChatCommand(input)
end
function MyEquipment:GetSortedCharList(sorttype, realm)
local result = {}
--[[
if IsAddOnLoaded("DataStore_Inventory") then
local realmname
@ -598,7 +674,6 @@ function MyEquipment:GetSortedCharList(sorttype, realm)
realmcount = 1
realmlist[1] = realm
end
local result = {}
local idx = 0
local i
local charname, charkey
@ -613,7 +688,7 @@ function MyEquipment:GetSortedCharList(sorttype, realm)
end
local swapped
local q, w
local x_time, y_time;
local x_time, y_time
local charName, realmName
repeat
swapped = 0
@ -639,49 +714,7 @@ function MyEquipment:GetSortedCharList(sorttype, realm)
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

View File

@ -1,7 +1,6 @@
<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 -->

View File

@ -1,29 +0,0 @@
-- 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
}
]]

View File

@ -2,6 +2,7 @@ local MYINVENTORY_DEFAULT_OPTIONS = {
["Columns"] = 12,
["Replace"] = true,
["Bag"] = "bar",
["BagSort"] = true,
["Graphics"] = "art",
["Count"] = "free",
["HlItems"] = true,
@ -37,10 +38,10 @@ local MYINVENTORY_DEFAULT_OPTIONS = {
["_RIGHTOFFSET"] = 3,
}
MyInventory = LibStub("AceAddon-3.0"):NewAddon("MyInventory", "AceConsole-3.0", "AceHook-3.0", "AceEvent-3.0", "MyBagsCore-1.0")
MyInventory = LibStub("AceAddon-3.0"):NewAddon("MyInventory", "AceConsole-3.0", "AceHook-3.0", "AceEvent-3.0", "MyBagsCore-1.1")
local MI_Dialog = LibStub("AceConfigDialog-3.0")
local MI_Cmd = LibStub("AceConfigCmd-3.0")
local MB_Core = LibStub("MyBagsCore-1.0")
local MB_Core = LibStub("MyBagsCore-1.1")
local L = LibStub("AceLocale-3.0"):GetLocale("MyBags")
@ -55,6 +56,7 @@ function MyInventory:OnInitialize()
self.anchorOffsetX = -5
self.anchorOffsetY = 100
self.isBank = false
self.version = MB_Core:GetCoreVersion()
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
@ -136,6 +138,17 @@ function MyInventory:OnInitialize()
MyInventory:SetBagDisplay(val)
end
},
bagsort = {
type = "toggle",
name = "BagSort",
desc = "Toggle bag sort button",
get = function(info)
return MyInventory.IsSet("BagSort")
end,
set = function(info, val)
MyInventory:SetBagSort()
end,
},
back = {
type = "select",
name = "Background",
@ -443,7 +456,6 @@ function MyInventory:UserDropDown_Initialize()
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 = {
@ -531,9 +543,7 @@ function MyInventory:GetInfoFunc()
if IsAddOnLoaded("DataStore_Containers") then
return self.GetInfoDataStore
end
if IsAddOnLoaded("MyBagsCache") then
return self.GetInfoMyBagsCache
end
return self.GetInfoNone
end
@ -557,7 +567,6 @@ end
function MyInventory:GetSortedCharList(sorttype, realm)
if IsAddOnLoaded("DataStore_Containers") then
local realmname
local realmlist = {}
local realmcount = 0
if not realm then
@ -610,46 +619,4 @@ function MyInventory:GetSortedCharList(sorttype, realm)
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

View File

@ -1,7 +1,6 @@
<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>

View File

@ -1,36 +0,0 @@
-- 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,
}
]]