Mercurial > wow > inventory
comparison Core.lua @ 46:87d68ccf0a8f
The premade group update processor should now properly add items when they were added to a premade group.
Items can now be indicated as removed in premade groups by setting the version number to a negative value of the latest version.
Removed Enchanted Spellthread from the Cataclysm enchants premade group.
author | Zerotorescue |
---|---|
date | Sun, 12 Dec 2010 17:18:19 +0100 |
parents | abc824800387 |
children | 9607b3251655 |
comparison
equal
deleted
inserted
replaced
45:0d1f8282a43e | 46:87d68ccf0a8f |
---|---|
152 end | 152 end |
153 | 153 |
154 return; | 154 return; |
155 end | 155 end |
156 | 156 |
157 local function AddToGroup(groupName, itemId) | |
158 if InGroup(itemId) then | |
159 return false; | |
160 end | |
161 | |
162 if not addon.db.global.groups[groupName].items then | |
163 addon.db.global.groups[groupName].items = {}; | |
164 end | |
165 | |
166 -- Set this item | |
167 addon.db.global.groups[groupName].items[itemId] = true; | |
168 | |
169 if AceConfigRegistry then | |
170 -- Now rebuild the list | |
171 AceConfigRegistry:NotifyChange("InventoriumOptions"); | |
172 end | |
173 | |
174 return true; | |
175 end | |
176 | |
177 local function RemoveFromGroup(groupName, itemId) | |
178 if InGroup(itemId) ~= groupName then | |
179 return false; | |
180 end | |
181 | |
182 -- Unset this item | |
183 addon.db.global.groups[groupName].items[itemId] = nil; | |
184 | |
185 return true; | |
186 end | |
187 | |
157 function addon:PremadeGroupsCheck(updateGroupName, updateKey, accept) | 188 function addon:PremadeGroupsCheck(updateGroupName, updateKey, accept) |
158 -- Compare the current premade groups with those used, notify about changes | 189 -- Compare the current premade groups with those used, notify about changes |
159 if addon.defaultGroups then | 190 if addon.defaultGroups then |
160 for key, groupInfo in pairs(addon.defaultGroups) do | 191 for premadeGroupName, groupInfo in pairs(addon.defaultGroups) do |
161 -- Go through all default groups | 192 -- Go through all default groups |
162 | 193 |
163 for groupName, values in pairs(addon.db.global.groups) do | 194 for groupName, values in pairs(addon.db.global.groups) do |
164 -- Go through all groups to find those with this premade group | 195 -- Go through all groups to find those with this premade group |
165 | 196 |
166 if values.premadeGroups and values.premadeGroups[key] and values.premadeGroups[key] < groupInfo.version then | 197 if values.premadeGroups and values.premadeGroups[premadeGroupName] and values.premadeGroups[premadeGroupName] < groupInfo.version then |
167 -- Outdated group | 198 -- Outdated group |
168 | 199 |
169 if updateGroupName and updateKey then | 200 if updateGroupName and updateKey then |
170 -- This function was called after pressing yes or no in a confirm box | 201 -- This function was called after pressing yes or no in a confirm box |
171 | 202 |
173 -- Yes was clicked | 204 -- Yes was clicked |
174 | 205 |
175 for itemId, version in pairs(groupInfo.items) do | 206 for itemId, version in pairs(groupInfo.items) do |
176 -- Go through all items in this premade group | 207 -- Go through all items in this premade group |
177 | 208 |
178 if version > values.premadeGroups[key] then | 209 if version > values.premadeGroups[premadeGroupName] then |
179 -- This item was added in a more recent version than this group: Add item | 210 -- This item was added in a more recent version than this group: Add item |
180 | 211 |
181 if InGroup(itemId) then | 212 if InGroup(itemId) then |
182 print(("Skipping %s (#%d) as it is already in the group |cfffed000%s|r."):format(select(2, GetItemInfo(itemId)) or "Unknown", itemId, InGroup(itemId))); | 213 print(("Skipping %s (#%d) as it is already in the group |cfffed000%s|r."):format(select(2, GetItemInfo(itemId)) or "Unknown", itemId, InGroup(itemId))); |
183 elseif AddToGroup(groupName, itemId) then | 214 elseif AddToGroup(groupName, itemId) then |
184 print(("Added %s (#%d) found in the premade group |cfffed000%s|r to the group |cfffed000%s|r."):format(select(2, GetItemInfo(itemId)) or "Unknown", itemId, InGroup(itemId))); | 215 print(("|cff00ff00Added|r %s (#%d) found in the premade group |cfffed000%s|r to the group |cfffed000%s|r."):format(select(2, GetItemInfo(itemId)) or "Unknown", itemId, premadeGroupName, InGroup(itemId))); |
216 end | |
217 elseif ( version * -1 ) > values.premadeGroups[premadeGroupName] then | |
218 if InGroup(itemId) == groupName then | |
219 print(("|cffff0000Removed|r %s (#%d) from the group |cfffed000%s|r as it was removed from the premade group |cfffed000%s|r."):format(select(2, GetItemInfo(itemId)) or "Unknown", itemId, InGroup(itemId), premadeGroupName)); | |
220 RemoveFromGroup(groupName, itemId); | |
221 else | |
222 print(("Skipping the removal of %s (#%d) as it isn't in this group."):format(select(2, GetItemInfo(itemId)) or "Unknown", itemId, InGroup(itemId))); | |
185 end | 223 end |
186 end | 224 end |
187 end | 225 end |
188 | 226 |
189 -- Remember the new version | 227 -- Remember the new version |
190 values.premadeGroups[key] = groupInfo.version; | 228 values.premadeGroups[premadeGroupName] = groupInfo.version; |
191 else | 229 else |
192 -- No was clicked | 230 -- No was clicked |
193 | 231 |
194 -- Let user know what was not added | 232 -- Let user know what was not added |
195 for itemId, version in pairs(groupInfo.items) do | 233 for itemId, version in pairs(groupInfo.items) do |
196 -- Go through all items in this premade group | 234 -- Go through all items in this premade group |
197 | 235 |
198 if version > values.premadeGroups[key] then | 236 if version > values.premadeGroups[premadeGroupName] then |
199 -- This item was added in a more recent version than this group: don't add (since we clicked no), but announce it | 237 -- This item was added in a more recent version than this group: don't add (since we clicked no), but announce it |
200 | 238 |
201 print(("Skipping %s (#%d) found in the premade group |cfffed000%s|r."):format(select(2, GetItemInfo(itemId)) or "Unknown", itemId, InGroup(itemId))); | 239 print(("Skipping %s (#%d) found in the premade group |cfffed000%s|r."):format(select(2, GetItemInfo(itemId)) or "Unknown", itemId, InGroup(itemId))); |
202 end | 240 end |
203 end | 241 end |
204 | 242 |
205 -- Remember the new version | 243 -- Remember the new version |
206 values.premadeGroups[key] = groupInfo.version; | 244 values.premadeGroups[premadeGroupName] = groupInfo.version; |
207 end | 245 end |
208 else | 246 else |
209 StaticPopupDialogs["InventoriumConfirmUpdatePremadeGroup"] = { | 247 StaticPopupDialogs["InventoriumConfirmUpdatePremadeGroup"] = { |
210 text = "The premade group |cfffed000%s|r used in the group |cfffed000%s|r has been changed. Do you wish to copy these changes?", | 248 text = "The premade group |cfffed000%s|r used in the group |cfffed000%s|r has been changed. Do you wish to copy these changes?", |
211 button1 = YES, | 249 button1 = YES, |
212 button2 = NO, | 250 button2 = NO, |
213 OnAccept = function(self) | 251 OnAccept = function(self) |
214 addon:PremadeGroupsCheck(groupName, key, true); | 252 addon:PremadeGroupsCheck(groupName, premadeGroupName, true); |
215 end, | 253 end, |
216 OnCancel = function(self, _, reason) | 254 OnCancel = function(self, _, reason) |
217 if reason == "clicked" then | 255 if reason == "clicked" then |
218 addon:PremadeGroupsCheck(groupName, key, false); | 256 addon:PremadeGroupsCheck(groupName, premadeGroupName, false); |
219 end | 257 end |
220 end, | 258 end, |
221 timeout = 0, | 259 timeout = 0, |
222 whileDead = 1, | 260 whileDead = 1, |
223 hideOnEscape = 1, | 261 hideOnEscape = 1, |
224 }; | 262 }; |
225 StaticPopup_Show("InventoriumConfirmUpdatePremadeGroup", key, groupName); | 263 StaticPopup_Show("InventoriumConfirmUpdatePremadeGroup", premadeGroupName, groupName); |
226 | 264 |
227 return; | 265 return; |
228 end | 266 end |
229 end | 267 end |
230 end | 268 end |
967 end | 1005 end |
968 | 1006 |
969 return true; | 1007 return true; |
970 end | 1008 end |
971 | 1009 |
972 local function AddToGroup(groupName, itemId) | |
973 if InGroup(itemId) then | |
974 return false; | |
975 end | |
976 | |
977 if not addon.db.global.groups[groupName].items then | |
978 addon.db.global.groups[groupName].items = {}; | |
979 end | |
980 | |
981 -- Set this item | |
982 addon.db.global.groups[groupName].items[itemId] = true; | |
983 | |
984 -- Now rebuild the list | |
985 AceConfigRegistry:NotifyChange("InventoriumOptions"); | |
986 | |
987 return true; | |
988 end | |
989 | |
990 local tblAddItemTemplate = { | 1010 local tblAddItemTemplate = { |
991 order = 0, | 1011 order = 0, |
992 type = "input", | 1012 type = "input", |
993 name = function(info) | 1013 name = function(info) |
994 local itemName, _, itemRarity = GetItemInfo(info[#info]); | 1014 local itemName, _, itemRarity = GetItemInfo(info[#info]); |
1026 -- This is NOT a real "set", we pass the widget reference to this function which contains similar, but not the same, info. | 1046 -- This is NOT a real "set", we pass the widget reference to this function which contains similar, but not the same, info. |
1027 | 1047 |
1028 if itemId then | 1048 if itemId then |
1029 local groupName = groupIdToName[groupId]; | 1049 local groupName = groupIdToName[groupId]; |
1030 | 1050 |
1031 -- Unset this item | 1051 RemoveFromGroup(groupName, itemId); |
1032 addon.db.global.groups[groupName].items[itemId] = nil; | 1052 |
1033 | 1053 -- Now rebuild the list |
1034 -- Now rebuild the list | 1054 AceConfigRegistry:NotifyChange("InventoriumOptions"); |
1035 AceConfigRegistry:NotifyChange("InventoriumOptions"); | |
1036 end | 1055 end |
1037 end, | 1056 end, |
1038 width = "double", | 1057 width = "double", |
1039 dialogControl = "ConfigItemLinkButton", | 1058 dialogControl = "ConfigItemLinkButton", |
1040 }; | 1059 }; |
1768 if not addon.db.global.groups[groupName].premadeGroups then | 1787 if not addon.db.global.groups[groupName].premadeGroups then |
1769 addon.db.global.groups[groupName].premadeGroups = {}; | 1788 addon.db.global.groups[groupName].premadeGroups = {}; |
1770 end | 1789 end |
1771 addon.db.global.groups[groupName].premadeGroups[value] = addon.defaultGroups[value].version; | 1790 addon.db.global.groups[groupName].premadeGroups[value] = addon.defaultGroups[value].version; |
1772 | 1791 |
1773 for itemId, _ in pairs(addon.defaultGroups[value].items) do | 1792 for itemId, version in pairs(addon.defaultGroups[value].items) do |
1774 itemId = itemId and tonumber(itemId); | 1793 if version > 0 then |
1775 | 1794 itemId = itemId and tonumber(itemId); |
1776 if not itemId then | 1795 |
1777 print(("\"|cfffed000%s|r\" is not a number."):format(value)); | 1796 if not itemId then |
1778 elseif InGroup(itemId) then | 1797 print(("\"|cfffed000%s|r\" is not a number."):format(value)); |
1779 print(("Skipping |cfffed000%s|r (#%d) as it is already in the group |cfffed000%s|r."):format(select(2, GetItemInfo(itemId)) or "Unknown", itemId, InGroup(itemId))); | 1798 elseif InGroup(itemId) then |
1780 else | 1799 print(("|cffff0000Skipping|r |cfffed000%s|r (#%d) as it is already in the group |cfffed000%s|r."):format(select(2, GetItemInfo(itemId)) or "Unknown", itemId, InGroup(itemId))); |
1781 AddToGroup(groupName, itemId); | 1800 else |
1801 AddToGroup(groupName, itemId); | |
1802 print(("|cff00ff00Added|r |cfffed000%s|r (#%d) to the group |cfffed000%s|r."):format(select(2, GetItemInfo(itemId)) or "Unknown", itemId, groupName)); | |
1803 end | |
1782 end | 1804 end |
1783 end | 1805 end |
1784 end, | 1806 end, |
1785 get = false, | 1807 get = false, |
1786 }, | 1808 }, |
1906 for itemId, test in pairs(ref) do | 1928 for itemId, test in pairs(ref) do |
1907 if test then | 1929 if test then |
1908 local itemName = GetItemInfo(itemId); | 1930 local itemName = GetItemInfo(itemId); |
1909 | 1931 |
1910 if itemName:lower():find(value) then | 1932 if itemName:lower():find(value) then |
1911 -- Unset this item | 1933 RemoveFromGroup(groupName, itemId); |
1912 addon.db.global.groups[groupName].items[itemId] = nil; | 1934 print(("|cffff0000Removed|r %s (#%d)."):format(select(2, GetItemInfo(itemId)) or "Unknown", itemId)); |
1913 end | 1935 end |
1914 end | 1936 end |
1915 end | 1937 end |
1938 | |
1939 -- Now rebuild the list | |
1940 AceConfigRegistry:NotifyChange("InventoriumOptions"); | |
1916 end, | 1941 end, |
1917 get = false, | 1942 get = false, |
1918 }, | 1943 }, |
1919 premadeGroups = { | 1944 premadeGroups = { |
1920 order = 30, | 1945 order = 30, |