vanilla-wow-addons – Blame information for rev 1

Subversion Repositories:
Rev:
Rev Author Line No. Line
1 office 1 --[[
2 Clean Minimap
3 By joev (joev@jarhedz.com)
4  
5 This mod provides total control over your minimap including moving it where you want,
6 hiding the Titlebar (and [X] button), the + and - zoom buttons and the Daytime/Clock button on the
7 Minimap and adding the three other compass points.
8  
9 Westpointer functionality (Compass coordinates) is from "EastWest" by Silwyn
10  
11 $Id: CleanMinimap.lua 75 2005-08-30 06:30:20Z joev $
12 --]]
13  
14 local CMM_VERSION = "2.7";
15  
16 local CMM_INFO = CMMSTRINGS.appName.." "..
17 CMM_VERSION.." "..
18 CMMSTRINGS.by.." "..
19 CMMSTRINGS.author.name;
20  
21 local CMM_DEBUG = 0;
22  
23 BINDING_HEADER_CLEANMINIMAP = CMMSTRINGS.bindings.title;
24 BINDING_NAME_CLEANMINIMAPTOGGLE = CMMSTRINGS.bindings.toggleOnOff;
25 BINDING_NAME_CLEANMINIMAPOPTIONS = CMMSTRINGS.bindings.toggleOptions;
26 BINDING_NAME_CLEANMINIMAPINCREASEOPACITY = CMMSTRINGS.bindings.increaseOpacity;
27 BINDING_NAME_CLEANMINIMAPDECREASEOPACITY = CMMSTRINGS.bindings.decreaseOpacity;
28 BINDING_NAME_CLEANMINIMAPTOGGLESIZE = CMMSTRINGS.bindings.toggleSize;
29  
30  
31 local DEFAULT_SIZE= 192;
32  
33 local RED = "|cffff0000";
34 local GREEN = "|cff00ff00";
35 local BLUE = "|cff0000ff";
36 local MAGENTA = "|cffff00ff";
37 local YELLOW = "|cffffff00";
38 local CYAN = "|cff00ffff";
39 local WHITE = "|cffffffff";
40  
41 -- Print Debug info
42 local function Print_Debug(s)
43 if (CMM_DEBUG == 1) then
44 DEFAULT_CHAT_FRAME:AddMessage(s, 1, 1, 0)
45 end
46 end
47  
48 -- Print to chat
49 local function Print_Chat(s)
50 DEFAULT_CHAT_FRAME:AddMessage(s)
51 end
52  
53 function Print_Chat_Table(t)
54 for key,value in t do
55 Print_Chat(value)
56 end
57 end
58  
59  
60 -- SavedVariables
61 CleanMinimapConfig = {};
62 CleanMinimapConfig.perCharSettings=true;
63  
64 -- Global for unitname
65 CleanMinimap_player = nil;
66  
67  
68 -- Set up namespace.
69 local CleanMinimap = {};
70  
71 CleanMinimap.player = nil;
72 CleanMinimap.variablesLoaded = false;
73 CleanMinimap.configLoaded = false;
74 CleanMinimap.reset = false;
75 CleanMinimap.sizing = false;
76 CleanMinimap.state = 2;
77 CleanMinimap.iconsPosition = {};
78 CleanMinimap.iconsPosition["MinimapZoomIn"] = 209;
79 CleanMinimap.iconsPosition["MinimapZoomOut"] = 235;
80 CleanMinimap.iconsPosition["MiniMapMailFrame"] = 168;
81 CleanMinimap.iconsPosition["MiniMapTrackingFrame"] = 37;
82 CleanMinimap.iconsPosition["MiniMapBattlefieldFrame"] = 302;
83 CleanMinimap.iconsPosition["MiniMapMeetingStoneFrame"] = 189;
84  
85 local CleanMinimap_OriginalOnClick;
86  
87 -- Show slash command usage
88 function CleanMinimap.ShowUsage()
89 Print_Chat(CMM_INFO);
90 Print_Chat_Table(CMMSTRINGS.usage);
91 end
92  
93 function CleanMinimap.ShowAuthor()
94 Print_Chat(CMMSTRINGS.appName.." v"..CMM_VERSION.." - "..CMMSTRINGS.authorInfo);
95 Print_Chat(CMMSTRINGS.author.name.." ("..CMMSTRINGS.author.email..")");
96 Print_Chat(CMMSTRINGS.playsAs);
97 Print_Chat_Table(CMMSTRINGS.author.aliases);
98 end
99  
100 function CleanMinimap.ShowCredits()
101 Print_Chat(CMMSTRINGS.appName.." v"..CMM_VERSION.." - "..CMMSTRINGS.creditsInfo.."\n\n");
102  
103 for key,value in CMMSTRINGS.credits do
104 Print_Chat(CYAN..value.task);
105 if (value.alias == "") then
106 Print_Chat(YELLOW..value.name.."\n\n");
107 else
108 Print_Chat(YELLOW..value.name..CMMSTRINGS.aka..value.alias.."\n\n");
109 end
110 end
111 end
112  
113  
114 -- Setup config information
115 function CleanMinimap.ConfigInit()
116 if (not CleanMinimap.configLoaded) then
117 if (not CleanMinimapConfig[CleanMinimap.player]) then
118 CleanMinimapConfig[CleanMinimap.player] = {};
119 CleanMinimapConfig[CleanMinimap.player].on = true;
120 CleanMinimapConfig[CleanMinimap.player].alpha = 1.0;
121 CleanMinimapConfig[CleanMinimap.player].left = nil;
122 CleanMinimapConfig[CleanMinimap.player].bottom = nil;
123 CleanMinimapConfig[CleanMinimap.player].scale = nil;
124 CleanMinimapConfig[CleanMinimap.player].origtop = nil;
125 CleanMinimapConfig[CleanMinimap.player].origright = nil;
126 CleanMinimapConfig[CleanMinimap.player].origleft = nil;
127 CleanMinimapConfig[CleanMinimap.player].origbottom = nil;
128 CleanMinimapConfig[CleanMinimap.player].origscale = nil;
129 CleanMinimapConfig[CleanMinimap.player].clock = false;
130 CleanMinimapConfig[CleanMinimap.player].title = false;
131 CleanMinimapConfig[CleanMinimap.player].zoom = false;
132 CleanMinimapConfig[CleanMinimap.player].nsew = false;
133 CleanMinimapConfig[CleanMinimap.player].showButton = true;
134 CleanMinimapConfig[CleanMinimap.player].buttonPos = 90;
135 CleanMinimapConfig[CleanMinimap.player].smallScale = 0.50;
136 CleanMinimapConfig[CleanMinimap.player].largeScale = 2.0;
137 CleanMinimapConfig[CleanMinimap.player].modifierKey = "SHIFT";
138 CleanMinimapConfig[CleanMinimap.player].iconsPosition = {};
139 CleanMinimapConfig[CleanMinimap.player].iconsPosition["MinimapZoomIn"] = CleanMinimap.iconsPosition["MinimapZoomIn"];
140 CleanMinimapConfig[CleanMinimap.player].iconsPosition["MinimapZoomOut"] = CleanMinimap.iconsPosition["MinimapZoomOut"];
141 CleanMinimapConfig[CleanMinimap.player].iconsPosition["MiniMapMailFrame"] = CleanMinimap.iconsPosition["MiniMapMailFrame"];
142 CleanMinimapConfig[CleanMinimap.player].iconsPosition["MiniMapTrackingFrame"] = CleanMinimap.iconsPosition["MiniMapTrackingFrame"];
143 CleanMinimapConfig[CleanMinimap.player].iconsPosition["MiniMapBattlefieldFrame"] = CleanMinimap.iconsPosition["MiniMapBattlefieldFrame"];
144 CleanMinimapConfig[CleanMinimap.player].iconsPosition["MiniMapMeetingStoneFrame"] = CleanMinimap.iconsPosition["MiniMapMeetingStoneFrame"];
145 CleanMinimapConfig[CleanMinimap.player].version = tonumber(CMM_VERSION);
146 else
147 if (not CleanMinimapConfig[CleanMinimap.player].version) then
148 CleanMinimapConfig[CleanMinimap.player].version = 1;
149 end
150 if (CleanMinimapConfig[CleanMinimap.player].version < tonumber(CMM_VERSION)) then
151 -- From here on, we only need to add new things per version here.
152 CleanMinimapConfig[CleanMinimap.player].version = tonumber(CMM_VERSION);
153 end
154 end
155 CleanMinimap.configLoaded = true;
156 Print_Debug("Finished Config Loading");
157  
158 CleanMinimap.SetOn(CleanMinimapConfig[CleanMinimap.player].on);
159 end
160 end
161  
162 function CleanMinimap.Setup()
163 if (CleanMinimap.player ~= nil and CleanMinimap.IsOn() and not CleanMinimap.reset) then
164 Print_Debug("Setting CMM start position");
165 CleanMinimap.SetClock(CleanMinimapConfig[CleanMinimap.player].clock,CleanMinimapConfig[CleanMinimap.player].alpha);
166 CleanMinimap.SetTitle(CleanMinimapConfig[CleanMinimap.player].title,CleanMinimapConfig[CleanMinimap.player].alpha);
167 CleanMinimap.SetZoom(CleanMinimapConfig[CleanMinimap.player].zoom);
168 CleanMinimap.SetNsew(CleanMinimapConfig[CleanMinimap.player].nsew);
169 CleanMinimap.SetPosition(CleanMinimapConfig[CleanMinimap.player].top,CleanMinimapConfig[CleanMinimap.player].right);
170 CleanMinimap.SetMapScale(CleanMinimapConfig[CleanMinimap.player].scale);
171 if (CleanMinimapConfig[CleanMinimap.player].showButton) then
172 CleanMinimapButton_UpdatePosition();
173 else
174 CleanMinimapButtonFrame:Hide();
175 end
176 CleanMinimap.InitIconPositions(true);
177 else
178 Print_Debug("Setting CMM default position");
179 CleanMinimap.SetClock(true,1.0);
180 CleanMinimap.SetTitle(true,1.0);
181 CleanMinimap.SetZoom(true);
182 CleanMinimap.SetNsew(false);
183 CleanMinimap.SetPosition(CleanMinimapConfig[CleanMinimap.player].origtop,CleanMinimapConfig[CleanMinimap.player].origright);
184 CleanMinimap.SetMapScale(CleanMinimapConfig[CleanMinimap.player].origscale);
185 CleanMinimap.InitIconPositions(false);
186 end
187 end
188  
189 function CleanMinimap.InitIconPositions(manage)
190 if (manage) then
191 CleanMinimap.UpdateIconPosition("MinimapZoomIn",CleanMinimapConfig[CleanMinimap.player].iconsPosition["MinimapZoomIn"]);
192 CleanMinimap.UpdateIconPosition("MinimapZoomOut",CleanMinimapConfig[CleanMinimap.player].iconsPosition["MinimapZoomOut"]);
193 CleanMinimap.UpdateIconPosition("MiniMapMailFrame",CleanMinimapConfig[CleanMinimap.player].iconsPosition["MiniMapMailFrame"]);
194 CleanMinimap.UpdateIconPosition("MiniMapTrackingFrame",CleanMinimapConfig[CleanMinimap.player].iconsPosition["MiniMapTrackingFrame"]);
195 CleanMinimap.UpdateIconPosition("MiniMapBattlefieldFrame",CleanMinimapConfig[CleanMinimap.player].iconsPosition["MiniMapBattlefieldFrame"]);
196 CleanMinimap.UpdateIconPosition("MiniMapMeetingStoneFrame",CleanMinimapConfig[CleanMinimap.player].iconsPosition["MiniMapMeetingStoneFrame"]);
197 else
198 CleanMinimap.UpdateIconPosition("MinimapZoomIn",CleanMinimap.iconsPosition["MinimapZoomIn"]);
199 CleanMinimap.UpdateIconPosition("MinimapZoomOut",CleanMinimap.iconsPosition["MinimapZoomOut"]);
200 CleanMinimap.UpdateIconPosition("MiniMapMailFrame",CleanMinimap.iconsPosition["MiniMapMailFrame"]);
201 CleanMinimap.UpdateIconPosition("MiniMapTrackingFrame",CleanMinimap.iconsPosition["MiniMapTrackingFrame"]);
202 CleanMinimap.UpdateIconPosition("MiniMapBattlefieldFrame",CleanMinimap.iconsPosition["MiniMapBattlefieldFrame"]);
203 CleanMinimap.UpdateIconPosition("MiniMapMeetingStoneFrame",CleanMinimap.iconsPosition["MiniMapMeetingStoneFrame"]);
204 end
205 end
206  
207  
208 function CleanMinimap.UpdateIconPosition(frameName, position)
209 getglobal(frameName):ClearAllPoints();
210 getglobal(frameName):SetPoint(
211 "TOPLEFT",
212 "Minimap",
213 "TOPLEFT",
214 52 - (80 * cos(position)),
215 (80 * sin(position)) - 52
216 );
217 end
218  
219 function CleanMinimap.doZoomIn()
220 if (Minimap:GetZoom() == 5) then
221 Minimap:SetZoom(5);
222 else
223 Minimap:SetZoom(Minimap:GetZoom() + 1);
224 end
225 end
226  
227 function CleanMinimap.doZoomOut()
228 if (Minimap:GetZoom() == 0) then
229 Minimap:SetZoom(0);
230 else
231 Minimap:SetZoom(Minimap:GetZoom() - 1);
232 end
233 end
234  
235 function CleanMinimap.doZoomAlphaIn()
236 CleanMinimap.SetAlpha((CleanMinimapConfig[CleanMinimap.player].alpha*100) - 5);
237 end
238  
239 function CleanMinimap.doZoomAlphaOut()
240 CleanMinimap.SetAlpha((CleanMinimapConfig[CleanMinimap.player].alpha*100) + 5);
241 end
242  
243 function CleanMinimap.IsOn()
244 if (CleanMinimap.reset) then
245 return true; -- Always return true on a reset.
246 elseif (MinimapCluster:IsVisible()) then
247 if (CleanMinimap.player) then
248 return CleanMinimapConfig[CleanMinimap.player].on;
249 else
250 return false;
251 end
252 else
253 return false;
254 end
255 end
256  
257 function CleanMinimap.SetOn(val)
258 CleanMinimapConfig[CleanMinimap.player].on = val;
259 if (not val) then
260 CleanMinimap.reset = true;
261 end;
262 CleanMinimap.Setup();
263 CleanMinimap.reset = false;
264 end
265  
266 function CleanMinimap.SetPosition(top,right)
267 if (CleanMinimap.IsOn()) then
268 if (not CleanMinimap.reset) then
269 CleanMinimapConfig[CleanMinimap.player].top = top;
270 CleanMinimapConfig[CleanMinimap.player].right= right;
271 end
272 if (top ~= nil and right ~= nil) then
273 Print_Debug("Setting top="..CleanMinimapConfig[CleanMinimap.player].top..",right="..CleanMinimapConfig[CleanMinimap.player].right);
274 MinimapCluster:ClearAllPoints();
275 MinimapCluster:SetPoint("TOPRIGHT", "UIParent", "TOPRIGHT",right,top);
276 end
277 end
278 end
279  
280 function CleanMinimap.SetMapScale(scale)
281 if (CleanMinimap.IsOn()) then
282 if (not CleanMinimap.reset) then
283 CleanMinimapConfig[CleanMinimap.player].scale = scale;
284 end
285  
286 if (scale ~= nil) then
287 Print_Debug("Setting scale to: "..scale);
288 MinimapCluster:SetScale(scale);
289 end
290 end
291 end
292  
293 function CleanMinimap.SetScale(scale)
294 -- sets the scale without saving it
295 if (CleanMinimap.IsOn()) then
296 if (scale ~= nil) then
297 Print_Debug("Setting scale to: "..scale);
298 MinimapCluster:SetScale(scale*CleanMinimapConfig[CleanMinimap.player].scale);
299 Minimap:SetScale(scale*CleanMinimapConfig[CleanMinimap.player].scale);
300 end
301 end
302 end
303  
304 function CleanMinimap.SetClock(val,alpha)
305 if (CleanMinimap.IsOn()) then
306 if (alpha == nil) then
307 alpha = CleanMinimapConfig[CleanMinimap.player].alpha;
308 end
309 if (not CleanMinimap.reset) then
310 CleanMinimapConfig[CleanMinimap.player].clock = val;
311 end;
312 if (val) then
313 GameTimeFrame:Show();
314 -- This needs alpha to be set because it's anchored to the cluster, not the minimap itself.
315 GameTimeFrame:SetAlpha(alpha);
316 else
317 GameTimeFrame:Hide();
318 end
319 end
320 end
321  
322 function CleanMinimap.ToggleClock()
323 if (CleanMinimapConfig[CleanMinimap.player].clock) then
324 CleanMinimap.SetClock(false,nil);
325 else
326 CleanMinimap.SetClock(true,nil);
327 end
328  
329 end
330  
331 function CleanMinimap.SetTitle(val,alpha)
332 if (CleanMinimap.IsOn()) then
333 if (alpha == nil) then
334 alpha = CleanMinimapConfig[CleanMinimap.player].alpha;
335 end
336 if (not CleanMinimap.reset) then
337 CleanMinimapConfig[CleanMinimap.player].title = val;
338 end
339 if (val) then
340 MinimapCluster:SetAlpha(alpha);
341 MinimapToggleButton:Enable();
342 MinimapZoneTextButton:Enable();
343 GameTimeFrame:SetAlpha(alpha);
344 Minimap:SetAlpha(alpha);
345 else
346 MinimapCluster:SetAlpha(0.0);
347 MinimapToggleButton:Disable();
348 MinimapZoneTextButton:Disable();
349 GameTimeFrame:SetAlpha(alpha);
350 Minimap:SetAlpha(alpha);
351 end
352 end
353 end
354  
355 function CleanMinimap.ToggleTitle()
356 if (CleanMinimapConfig[CleanMinimap.player].title) then
357 CleanMinimap.SetTitle(false,nil);
358 else
359 CleanMinimap.SetTitle(true,nil);
360 end
361 end
362  
363 function CleanMinimap.SetZoom(val)
364 if (CleanMinimap.IsOn()) then
365 if (not CleanMinimap.reset) then
366 CleanMinimapConfig[CleanMinimap.player].zoom = val;
367 end
368 if (val) then
369 MinimapZoomIn:Show();
370 MinimapZoomOut:Show();
371 else
372 MinimapZoomIn:Hide();
373 MinimapZoomOut:Hide();
374 end
375 end
376 end
377  
378 function CleanMinimap.ToggleZoom()
379 if (CleanMinimapConfig[CleanMinimap.player].zoom) then
380 CleanMinimap.SetZoom(false);
381 else
382 CleanMinimap.SetZoom(true);
383 end
384 end
385  
386 function CleanMinimap.SetNsew(val)
387 if (CleanMinimap.IsOn()) then
388 if (not CleanMinimap.reset) then
389 CleanMinimapConfig[CleanMinimap.player].nsew = val
390 end
391 if (val) then
392 WestPointer:Show();
393 else
394 WestPointer:Hide();
395 end
396 end
397 end
398  
399 function CleanMinimap.ToggleNsew()
400 if (CleanMinimapConfig[CleanMinimap.player].nsew) then
401 CleanMinimap.SetNsew(false);
402 else
403 CleanMinimap.SetNsew(true);
404 end
405 end
406  
407 function CleanMinimap.SetAlpha(val, silent)
408 if (CleanMinimap.IsOn()) then
409 if (val ~= nil) then
410 if (val < 1) then
411 val = 1;
412 end
413 if (val > 100) then
414 val = 100;
415 end
416 CleanMinimapConfig[CleanMinimap.player].alpha = val/100;
417 Minimap:SetAlpha(val/100);
418 --CleanMinimap.Setup();
419 end
420 end
421 end
422  
423 function CleanMinimap.SetLargeSize(val, silent)
424 if (CleanMinimap.IsOn()) then
425 if (val ~= nil) then
426 if (val < 100) then
427 val = 100;
428 end
429 if (val > 300) then
430 val = 300;
431 end
432 CleanMinimapConfig[CleanMinimap.player].largeScale = val/100;
433 end
434 end
435 end
436  
437 function CleanMinimap.SetSmallSize(val, silent)
438 if (CleanMinimap.IsOn()) then
439 if (val ~= nil) then
440 if (val < 50) then
441 val = 50;
442 end
443 if (val > 100) then
444 val = 100;
445 end
446 CleanMinimapConfig[CleanMinimap.player].smallScale = val/100;
447 end
448 end
449 end
450  
451 function CleanMinimap.ResetAll()
452 Print_Debug("Resetting");
453 Print_Debug(CleanMinimap.player);
454 Print_Debug(CleanMinimapConfig[CleanMinimap.player].origscale);
455 CleanMinimap.SetMapScale(CleanMinimapConfig[CleanMinimap.player].origscale);
456 CleanMinimap.SetPosition(CleanMinimapConfig[CleanMinimap.player].origtop, CleanMinimapConfig[CleanMinimap.player].origright);
457 end
458  
459 function CleanMinimap.ModifierKeyIsDown()
460 local retval = false;
461 if ((IsShiftKeyDown() and CleanMinimapConfig[CleanMinimap.player].modifierKey == "SHIFT") or
462 (IsControlKeyDown() and CleanMinimapConfig[CleanMinimap.player].modifierKey == "CTRL") or
463 (IsAltKeyDown() and CleanMinimapConfig[CleanMinimap.player].modifierKey == "ALT")) then
464 retval = true;
465 end
466 return retval;
467 end
468  
469 --[[ Event handlers
470 These functions are global and are called by the UI
471 --]]
472  
473 function CleanMinimap_OnLoad()
474  
475 this:RegisterEvent("VARIABLES_LOADED");
476 this:RegisterEvent("PLAYER_ENTERING_WORLD");
477  
478 -- Slash Commands
479 SlashCmdList["CMM"] = CleanMinimap_Slash;
480 SLASH_CMM1 = "/cleanminimap";
481 SLASH_CMM2 = "/cmm";
482  
483 end
484  
485  
486 function CleanMinimap_OnEvent()
487 if (event == "VARIABLES_LOADED") then
488 -- Hook the Minimap_OnClick function
489 CleanMinimap_OriginalOnClick = Minimap_OnClick;
490 Minimap_OnClick = CleanMinimap_OnClick;
491  
492 -- Init Config
493 CleanMinimap.variablesLoaded = true;
494 Print_Debug("Variables Loaded");
495 if (CleanMinimap.player) then
496 CleanMinimap.ConfigInit();
497 end
498 -- Add myAddOns support
499 if myAddOnsList then
500 myAddOnsList.CleanMinimap = {name = "Clean Minimap", description = CMMSTRINGS.myAddonsDescription, version = CMM_VERSION, category = MYADDONS_CATEGORY_MAP, frame = "CleanMinimap", optionsframe = "CleanMinimapOptionsFrame"};
501 end
502 if ButtonHole then
503 ButtonHole.application.RegisterMod({id="CLEANMINIMAP", name="Clean Minimap", tooltip=CMMSTRINGS.myAddonsDescription, buttonFrame="CleanMinimapButtonFrame", updateFunction="CleanMinimapButton_UpdatePosition"});
504 end
505 elseif( event == "PLAYER_ENTERING_WORLD" and not CleanMinimap.player) then
506 local name = UnitName("player");
507 if (CleanMinimapConfig.perCharSettings == nil) then
508 CleanMinimapConfig.perCharSettings = false;
509 end
510 if (CleanMinimapConfig.perCharSettings) then
511 Print_Debug("Setting name to default");
512 name = "default";
513 end
514 if( name and name ~= UNKNOWNOBJECT ) then
515 CleanMinimap.player = name;
516 CleanMinimap_player = name;
517 Print_Debug("Unit Name: player = "..CleanMinimap.player);
518 if (CleanMinimap.variablesLoaded) then
519 CleanMinimap.ConfigInit();
520 end
521 end
522 end
523 end
524  
525 function CleanMinimap_OnMouseWheel(value)
526 if (CleanMinimap.IsOn()) then
527 if (IsShiftKeyDown()) then
528 if ( value > 0 ) then CleanMinimap.doZoomAlphaIn()
529 elseif ( value < 0 ) then CleanMinimap.doZoomAlphaOut()
530 end
531 else
532 if ( value > 0 ) then CleanMinimap.doZoomIn()
533 elseif ( value < 0 ) then CleanMinimap.doZoomOut()
534 end
535 end
536 end
537 end
538  
539 function CleanMinimap_StartMoving()
540 if (CleanMinimap.IsOn()) then
541 if (CleanMinimapConfig[CleanMinimap.player].origright == nil) then
542 -- This is the first move therefore record where we started from.
543 local right = MinimapCluster:GetRight() - UIParent:GetRight();
544 local top = MinimapCluster:GetTop() - UIParent:GetTop();
545 if (right > 0 ) then
546 right = 0;
547 end
548 if (top > 0 ) then
549 top = 0;
550 end
551  
552 CleanMinimapConfig[CleanMinimap.player].origright = right;
553  
554 CleanMinimapConfig[CleanMinimap.player].origtop = top;
555 CleanMinimapConfig[CleanMinimap.player].origscale = MinimapCluster:GetScale();
556  
557 end
558 MinimapCluster:SetMovable(true);
559 MinimapCluster:SetResizable(true);
560 CleanMinimapMover_Attach(CleanMinimapMoverFrame,MinimapCluster);
561 end
562 end
563  
564 function CleanMinimap_StopMoving()
565 if (CleanMinimap.IsOn()) then
566 MinimapCluster:SetMovable(false);
567 MinimapCluster:SetResizable(false);
568 local right = MinimapCluster:GetRight() - UIParent:GetRight();
569 local top = MinimapCluster:GetTop() - UIParent:GetTop();
570 Print_Debug("top ="..top..", right="..right);
571 if (right > 0 ) then
572 right = 0;
573 end
574 if (top > 0 ) then
575 top = 0;
576 end
577  
578 CleanMinimap.SetPosition(top,right);
579 CleanMinimap.SetMapScale(MinimapCluster:GetScale());
580 end
581 end
582  
583 function CleanMinimap_OnClick(button)
584 if (CleanMinimap.ModifierKeyIsDown()) then
585 CleanMinimap_StartMoving();
586 else
587 CleanMinimap_OriginalOnClick(button);
588 end
589 end
590 ----------------------------------------------------------------------------------------------------------------------------------
591 --[[ External functions
592 These functions are global and can be called by other mods
593 --]]
594  
595 function CleanMinimap_GetAlpha()
596 if (CleanMinimap.IsOn()) then
597 return CleanMinimapConfig[CleanMinimap.player].alpha;
598 else
599 return MinimapCluster:GetAlpha();
600 end
601 end
602  
603 function CleanMinimap_GetClock()
604 if (CleanMinimap.IsOn()) then
605 return CleanMinimapConfig[CleanMinimap.player].clock;
606 else
607 return GameTimeFrame:IsVisible();
608 end
609 end
610  
611 function CleanMinimap_GetZoom()
612 if (CleanMinimap.IsOn()) then
613 return CleanMinimapConfig[CleanMinimap.player].zoom;
614 else
615 return MinimapZoomIn:IsVisible();
616 end
617 end
618  
619 function CleanMinimap_GetTitle()
620 if (CleanMinimap.IsOn()) then
621 return CleanMinimapConfig[CleanMinimap.player].title;
622 else
623 return MinimapCluster:IsVisible();
624 end
625 end
626  
627 function CleanMinimap_GetNsew()
628 if (CleanMinimap.IsOn()) then
629 return CleanMinimapConfig[CleanMinimap.player].nsew;
630 else
631 return WestPointer:IsVisible();
632 end
633 end
634  
635 function CleanMinimap_IsOn()
636 return CleanMinimap.IsOn();
637 end
638  
639 function CleanMinimap_Toggle()
640 if (CleanMinimap.IsOn()) then
641 CleanMinimap.SetOn(false);
642 else
643 CleanMinimap.SetOn(true);
644 end
645 end
646  
647 function CleanMinimap_ToggleClock()
648 CleanMinimap.ToggleClock();
649 end
650  
651 function CleanMinimap_ToggleZoom()
652 CleanMinimap.ToggleZoom();
653 end
654 function CleanMinimap_ToggleNsew()
655 CleanMinimap.ToggleNsew();
656 end
657 function CleanMinimap_ToggleTitle()
658 CleanMinimap.ToggleTitle();
659 end
660  
661 -- Handle slash commands
662 function CleanMinimap_Slash(msg)
663 if msg == nil or msg == "" then
664 msg = "help";
665 end
666 msg = strlower(msg);
667 local args = {n=0}
668 local function helper(word) table.insert(args, word) end
669 string.gsub(msg, "[_\.%w]+", helper);
670 if args[1] == 'on' then
671 CleanMinimap.SetOn(true);
672 elseif args[1] == 'off' then
673 CleanMinimap.SetOn(false);
674 elseif args[1] == 'reset' then
675 CleanMinimap.ResetAll();
676 elseif args[1] == 'author' then
677 CleanMinimap.ShowAuthor();
678 elseif args[1] == 'credits' then
679 CleanMinimap.ShowCredits();
680 elseif args[1] == 'config' then
681 CleanMinimapOptions_Toggle();
682 else
683 CleanMinimap.ShowUsage();
684 end
685 end
686  
687 function CleanMinimap_IncreaseOpacity()
688 CleanMinimap.SetAlpha(CleanMinimapConfig[CleanMinimap.player].alpha*100 + 10)
689 end
690  
691 function CleanMinimap_DecreaseOpacity()
692 CleanMinimap.SetAlpha(CleanMinimapConfig[CleanMinimap.player].alpha*100 - 10)
693 end
694  
695 function CleanMinimap_SilentSetAlpha(val)
696 if (val ~= nil) then
697 CleanMinimap.SetAlpha(val,true);
698 end
699 end
700 function CleanMinimap_SilentSetLargeSize(val)
701 if (val ~= nil) then
702 CleanMinimap.SetLargeSize(val,true);
703 end
704 end
705 function CleanMinimap_SilentSetSmallSize(val)
706 if (val ~= nil) then
707 CleanMinimap.SetSmallSize(val,true);
708 end
709 end
710  
711 function CleanMinimap_ToggleSize()
712  
713 CleanMinimap.state = CleanMinimap.state + 1;
714 if (CleanMinimap.state > 3) then
715 CleanMinimap.state = 1;
716 end
717 Print_Debug("Map state = "..CleanMinimap.state);
718  
719 if (CleanMinimap.state == 1) then
720 CleanMinimap.SetScale(CleanMinimapConfig[CleanMinimap.player].smallScale);
721 elseif (CleanMinimap.state == 3) then
722 CleanMinimap.SetScale(CleanMinimapConfig[CleanMinimap.player].largeScale);
723 else
724 Print_Debug("Map state set to default");
725 CleanMinimap.SetScale(1);
726 end
727 -- reset position
728 CleanMinimap.SetPosition(CleanMinimapConfig[CleanMinimap.player].top,CleanMinimapConfig[CleanMinimap.player].right);
729 end
730  
731 function CleanMinimap_SetModifier(keyname)
732 CleanMinimapConfig[CleanMinimap.player].modifierKey = keyname;
733 end
734  
735 function CleanMinimap_SetOneConfig(toggle)
736 if (toggle) then
737 CleanMinimapConfig.perCharSettings = true;
738 CleanMinimap.player = "default";
739 CleanMinimap_player = "default";
740 else
741 CleanMinimapConfig.perCharSettings = false;
742 CleanMinimap.player = UnitName("player");
743 CleanMinimap_player = UnitName("player");
744 end
745 CleanMinimap.configLoaded = false;
746 CleanMinimap.ConfigInit();
747 if (CleanMinimapOptionsFrame:IsVisible()) then
748 CleanMinimapOptions_Refresh();
749 end
750 if (CleanMinimapButtonFrame:IsVisible()) then
751 CleanMinimapButton_UpdatePosition();
752 end
753 end
754  
755 function CleanMinimap_SetIconPosition(frameName, position)
756 CleanMinimapConfig[CleanMinimap.player].iconsPosition[frameName] = position;
757 CleanMinimap.UpdateIconPosition(frameName, position);
758 end