vanilla-wow-addons – Blame information for rev 1

Subversion Repositories:
Rev:
Rev Author Line No. Line
1 office 1 -- Storage of Quest levels...
2 -- All credits go to Elkano for his addon Quest Level
3  
4  
5 -- ---------------------- --
6 -- hooking game functions --
7 -- ---------------------- --
8 local QuestLevel_original_GetTitleText = GetTitleText;
9  
10 -- GossipFrame
11 -- local QuestLevel_original_GossipFrameUpdate = GossipFrameUpdate;
12 local QuestLevel_original_GetGossipAvailableQuests = GetGossipAvailableQuests;
13 local QuestLevel_original_GetGossipActiveQuests = GetGossipActiveQuests;
14  
15 -- QuestFrame
16 -- local QuestLevel_original_QuestFrameGreetingPanel_OnShow = QuestFrameGreetingPanel_OnShow;
17 local QuestLevel_original_GetActiveTitle = GetActiveTitle;
18 local QuestLevel_original_GetAvailableTitle = GetAvailableTitle;
19  
20  
21 -- -------------- --
22 -- storage system --
23 -- -------------- --
24  
25 QuestLevel_StorageKeys = { };
26 QuestLevel_StorageKeys["levelmin"] = "<";
27 QuestLevel_StorageKeys["levelmax"] = ">";
28 QuestLevel_StorageKeys["elite"] = "@";
29  
30 function QuestLevel_StorageSet(storage, key, value)
31 if (not QuestLevel_StorageKeys[key]) then
32 return storage;
33 end
34 if (storage == nil) then
35 storage = "";
36 end
37 local storagearray = {};
38 for storagekey, storagevalue in QuestLevel_StorageKeys do
39 s1, s2, storagearray[storagekey] = string.find(storage, storagevalue.."(.-)¤");
40 end
41 storagearray[key] = value;
42 local newstorage = "";
43 for storagekey, storagevalue in storagearray do
44 newstorage = newstorage..QuestLevel_StorageKeys[storagekey]..storagevalue.."¤";
45 end
46 return newstorage;
47 end
48  
49 function QuestLevel_StorageGet(storage, key)
50 if (not QuestLevel_StorageKeys[key]) then
51 return nil;
52 end
53 if (storage == nil) then
54 storage = "";
55 end
56 s1, s2, value = string.find(storage, QuestLevel_StorageKeys[key].."(.-)¤");
57 if ( value ) then
58 return value;
59 else
60 return nil;
61 end
62 end
63  
64  
65 -- -------------- --
66 -- main functions --
67 -- -------------- --
68  
69 local function QuestLevel_VariablesLoaded()
70 if( not QuestLevel_Quest2Level ) then
71 QuestLevel_Quest2Level = { };
72 end
73  
74 -- convert to now storage -- beta2
75 for quest, data in QuestLevel_Quest2Level do
76 if ( type(data) == "table" or string.find(data, QuestLevel_StorageKeys["levelmin"]) == nil ) then
77 if ( type(data) == "table" ) then
78 local queststorage = "";
79 queststorage = QuestLevel_StorageSet(queststorage, "levelmin", data["min"]);
80 queststorage = QuestLevel_StorageSet(queststorage, "levelmax", data["max"]);
81 QuestLevel_Quest2Level[quest] = queststorage;
82 else
83 local queststorage = "";
84 queststorage = QuestLevel_StorageSet(queststorage, "levelmin", data);
85 QuestLevel_Quest2Level[quest] = queststorage;
86 end
87 else
88 break; -- data is validstorage -> table had been converted before
89 end
90 end
91  
92 -- convert to now storage -- beta3
93 for quest, data in QuestLevel_Quest2Level do
94 local levelmin = QuestLevel_StorageGet(data, "levelmin");
95 local levelmax = QuestLevel_StorageGet(data, "levelmax");
96 if ( levelmax == nil ) then
97 break; -- data is validstorage -> table had been converted before
98 end
99 if ( tonumber(levelmin) >= tonumber(levelmax) ) then
100 data = QuestLevel_StorageSet(data, "levelmax", nil);
101 QuestLevel_Quest2Level[quest] = data;
102 end
103 end
104 end
105  
106 function QuestLevel_OnLoad()
107 this:RegisterEvent("VARIABLES_LOADED");
108  
109 if( DEFAULT_CHAT_FRAME ) then
110 DEFAULT_CHAT_FRAME:AddMessage("Elkano's QuestLevel AddOn v2.0 loaded");
111 end
112 end
113  
114 function QuestLevel_OnEvent()
115 if( event == "VARIABLES_LOADED" ) then
116 QuestLevel_VariablesLoaded();
117 end
118 end
119  
120 local function QuestLevel_AddLevelFromTable(questname)
121 if ( QuestLevel_Quest2Level[questname] ) then
122 local levelmin = tonumber(QuestLevel_StorageGet(QuestLevel_Quest2Level[questname], "levelmin"));
123 local levelmax = QuestLevel_StorageGet(QuestLevel_Quest2Level[questname], "levelmax");
124 if ( levelmax == nil ) then
125 levelmax = levelmin;
126 else
127 levelmax = tonumber(levelmax);
128 end
129 local leveltag = "";
130 if ( levelmin < levelmax ) then
131 leveltag = leveltag..levelmin.."-"..levelmax;
132 else
133 leveltag = leveltag..levelmin;
134 end
135 if (QuestLevel_StorageGet(QuestLevel_Quest2Level[questname], "elite") ~= nil) then
136 leveltag = leveltag.."+";
137 end
138 return "["..leveltag.."] "..questname;
139 end
140 return "[?] "..questname;
141 end
142  
143 function GetTitleText()
144 if ( QuestlogOptions[EQL3_Player].ShowQuestLevels == 1 and QuestlogOptions[EQL3_Player].OnlyLevelsInLog == 0 ) then
145 local titletext = QuestLevel_original_GetTitleText();
146 -- if( DEFAULT_CHAT_FRAME ) then
147 -- DEFAULT_CHAT_FRAME:AddMessage("[QuestLevel] DEBUG: GetTitleText -> "..titletext);
148 -- end
149 return QuestLevel_AddLevelFromTable(titletext);
150 else
151 -- still stor the quests..
152 local titletext = QuestLevel_original_GetTitleText();
153 QuestLevel_AddLevelFromTable(titletext);
154  
155 return QuestLevel_original_GetTitleText();
156 end
157 end
158  
159 local function QuestLevel_table2args(intable)
160 if ( intable.n == 0 ) then
161 return;
162 elseif ( intable.n == 1 ) then
163 return intable[1];
164 else
165 return table.remove(intable, 1), QuestLevel_table2args(intable);
166 end
167 end
168  
169 local function QuestLevel_addLevelGossip(...)
170 if ( arg.n == 0) then
171 return
172 end
173 for i=1, arg.n, 2 do
174 -- if( DEFAULT_CHAT_FRAME ) then
175 -- DEFAULT_CHAT_FRAME:AddMessage("[QuestLevel] DEBUG: arg["..i.."] -> "..arg[i]);
176 -- end
177 arg[i] = QuestLevel_AddLevelFromTable(arg[i]);
178 end
179 return QuestLevel_table2args(arg);
180 end
181  
182 -- function GossipFrameUpdate()
183 -- if( DEFAULT_CHAT_FRAME ) then
184 -- DEFAULT_CHAT_FRAME:AddMessage("[QuestLevel] DEBUG: |cffffff00GossipFrameUpdate|r called");
185 -- end
186 -- return QuestLevel_original_GossipFrameUpdate();
187 -- end
188  
189 function GetGossipAvailableQuests()
190 -- if( DEFAULT_CHAT_FRAME ) then
191 -- DEFAULT_CHAT_FRAME:AddMessage("[QuestLevel] DEBUG: |cffffff00GetGossipAvailableQuests|r called");
192 -- end
193 if ( QuestlogOptions[EQL3_Player].ShowQuestLevels == 1 and QuestlogOptions[EQL3_Player].OnlyLevelsInLog == 0 ) then
194 return QuestLevel_addLevelGossip(QuestLevel_original_GetGossipAvailableQuests());
195 else
196 return QuestLevel_original_GetGossipAvailableQuests();
197 end
198 end
199  
200 function GetGossipActiveQuests()
201 -- if( DEFAULT_CHAT_FRAME ) then
202 -- DEFAULT_CHAT_FRAME:AddMessage("[QuestLevel] DEBUG: |cffffff00GetGossipActiveQuests|r called");
203 -- end
204 if ( QuestlogOptions[EQL3_Player].ShowQuestLevels == 1 and QuestlogOptions[EQL3_Player].OnlyLevelsInLog == 0 ) then
205 return QuestLevel_addLevelGossip(QuestLevel_original_GetGossipActiveQuests());
206 else
207 return QuestLevel_original_GetGossipActiveQuests();
208 end
209 end
210  
211 -- function QuestFrameGreetingPanel_OnShow()
212 -- if( DEFAULT_CHAT_FRAME ) then
213 -- DEFAULT_CHAT_FRAME:AddMessage("[QuestLevel] DEBUG: |cffffff00QuestFrameGreetingPanel_OnShow|r called");
214 -- end
215 -- return QuestLevel_original_QuestFrameGreetingPanel_OnShow();
216 -- end
217  
218 function GetActiveTitle(i)
219 -- if( DEFAULT_CHAT_FRAME ) then
220 -- DEFAULT_CHAT_FRAME:AddMessage("[QuestLevel] DEBUG: |cffffff00GetActiveTitle("..i..")|r called");
221 -- end
222 if ( QuestlogOptions[EQL3_Player].ShowQuestLevels == 1 and QuestlogOptions[EQL3_Player].OnlyLevelsInLog == 0 ) then
223 return QuestLevel_AddLevelFromTable(QuestLevel_original_GetActiveTitle(i));
224 else
225 return QuestLevel_original_GetActiveTitle(i);
226 end
227 end
228  
229 function GetAvailableTitle(i)
230 -- if( DEFAULT_CHAT_FRAME ) then
231 -- DEFAULT_CHAT_FRAME:AddMessage("[QuestLevel] DEBUG: |cffffff00GetAvailableTitle("..i..")|r called");
232 -- end
233 if ( QuestlogOptions[EQL3_Player].ShowQuestLevels == 1 and QuestlogOptions[EQL3_Player].OnlyLevelsInLog == 0 ) then
234 return QuestLevel_AddLevelFromTable(QuestLevel_original_GetAvailableTitle(i));
235 else
236 return QuestLevel_original_GetAvailableTitle(i);
237 end
238 end