vanilla-wow-addons – Blame information for rev 1

Subversion Repositories:
Rev:
Rev Author Line No. Line
1 office 1 CT_RABoss_ScheduledActions = { };
2 CT_RABoss_Events = { };
3 CT_RABoss_Mods = { };
4 CT_RABoss_Save = { };
5 CT_RABoss_DropDown = { };
6 local hasLoadedVars;
7  
8 CT_RABoss_Locations = {
9 { CT_RABOSS_LOCATIONS_MOLTENCORE, 0 }, { CT_RABOSS_LOCATIONS_BLACKWINGSLAIR, 0 }, { CT_RABOSS_LOCATIONS_ONYXIASLAIR, 0 }, { CT_RABOSS_LOCATIONS_ZULGURUB, 0 }, { CT_RABOSS_LOCATIONS_OUTDOOR, 0 }, { CT_RABOSS_LOCATIONS_OTHER, 0 }
10 };
11  
12 -- Function to schedule a function
13 function CT_RABoss_Schedule(name, timeUntil, optParam)
14 tinsert(CT_RABoss_ScheduledActions, { name, GetTime()+timeUntil, optParam });
15 end
16  
17 -- Function to unschedule all functions where the first index is "name"
18 function CT_RABoss_UnSchedule(name, optParam)
19 for k, v in CT_RABoss_ScheduledActions do
20 if ( v[1] == name and ( not optParam or v[3] == optParam ) ) then
21 tremove(CT_RABoss_ScheduledActions, k);
22 end
23 end
24 end
25  
26 -- Function to process scheduled actions
27 function CT_RABoss_OnUpdate(elapsed)
28 this.elapsed = this.elapsed + elapsed;
29 if ( this.elapsed > 0.1 ) then
30 for k, v in CT_RABoss_ScheduledActions do
31 if ( GetTime() >= v[2] ) then
32 tremove(CT_RABoss_ScheduledActions, k);
33 getglobal(v[1])(v[3]);
34 end
35 end
36 this.elapsed = this.elapsed - 0.1;
37 end
38 end
39  
40 -- Handles all the events
41 function CT_RABoss_OnEvent(event)
42 if ( event == "VARIABLES_LOADED" ) then
43 hasLoadedVars = 1;
44 -- Add new mods that aren't saved yet
45 for k, v in CT_RABoss_Save do
46 if ( CT_RABoss_Mods[k] ) then
47 for key, val in v do
48 CT_RABoss_Mods[k][key] = val;
49 end
50 else
51 CT_RABoss_Save[k] = nil;
52 end
53 end
54 elseif ( event == "PLAYER_ENTERING_WORLD" ) then
55 CT_RABoss_Schedule("CT_RABoss_ScanModZones", 5);
56 end
57  
58 for k, v in CT_RABoss_Events do
59 if ( v[event] ) then
60 v[event](event);
61 end
62 end
63 end
64  
65 -- Function to disable/enable mods based on zone
66 function CT_RABoss_ScanModZones()
67 local zone = GetRealZoneText();
68 for k, v in CT_RABoss_Mods do
69 if ( v["location"] ) then
70 if ( v["location"] == CT_RABOSS_LOCATIONS_BLACKWINGSLAIR ) then
71 CT_RABoss_Mods[k].enabled = ( zone == CT_RABOSS_MINIMAPLOC_BLACKWINGSLAIR );
72 elseif ( v["location"] == CT_RABOSS_LOCATIONS_ONYXIASLAIR ) then
73 CT_RABoss_Mods[k].enabled = ( zone == CT_RABOSS_MINIMAPLOC_ONYXIASLAIR );
74 elseif ( v["location"] == CT_RABOSS_LOCATIONS_MOLTENCORE ) then
75 CT_RABoss_Mods[k].enabled = ( zone == CT_RABOSS_MINIMAPLOC_MOLTENCORE );
76 elseif ( v["location"] == CT_RABOSS_LOCATIONS_ZULGURUB ) then
77 CT_RABoss_Mods[k].enabled = ( zone == CT_RABOSS_MINIMAPLOC_ZULGURUB );
78 elseif ( v["location"] == CT_RABOSS_LOCATIONS_OUTDOOR ) then
79 local x, y = GetPlayerMapPosition("player");
80 CT_RABoss_Mods[k].enabled = ( x ~= 0 or y ~= 0 );
81 else
82 CT_RABoss_Mods[k].enabled = true;
83 end
84 end
85 end
86 end
87 -- Add event
88 function CT_RABoss_AddEvent(modName, event, func)
89 if ( not CT_RABoss_Events[modName] ) then
90 CT_RABoss_Events[modName] = { };
91 end
92 CT_RABoss_Events[modName][event] = func;
93 CT_RABossModsFrame:RegisterEvent(event);
94 end
95  
96 -- Add mod
97 function CT_RABoss_AddMod(modName, modDescript, modStatus, modLocation)
98 if ( not modLocation ) then
99 modLocation = "Other";
100 end
101  
102 local found;
103 for k, v in CT_RABoss_Locations do
104 if ( v[1] == modLocation ) then
105 found = 1;
106 break;
107 end
108 end
109 if ( not found ) then
110 tinsert(CT_RABoss_Locations, { modLocation, 0 });
111 end
112 if ( not CT_RABoss_Save[modName] ) then
113 CT_RABoss_Save[modName] = { ["status"] = modStatus };
114 end
115 CT_RABoss_Mods[modName] = { ["status"] = modStatus, ["descript"] = modDescript, ["location"] = modLocation };
116 end
117  
118 -- Enable/Disable mod
119 function CT_RABoss_EnableMod()
120 CT_RABoss_Mods[this.value]["status"] = not CT_RABoss_Mods[this.value]["status"];
121 if ( not CT_RABoss_Save[this.value] ) then
122 CT_RABoss_Save[this.value] = {
123 ["status"] = CT_RABoss_Mods[this.value]["status"]
124 };
125 else
126 CT_RABoss_Save[this.value]["status"] = not CT_RABoss_Save[this.value]["status"];
127 end
128 CT_RAMenuBoss_Update();
129 end
130  
131 -- Get mod info
132 function CT_RABoss_ModInfo(modName, modVar)
133 if ( CT_RABoss_Mods[modName] and CT_RABoss_Mods[modName][modVar] ) then
134 if ( type(CT_RABoss_Mods[modName][modVar]) or CT_RABoss_Mods[modName][modVar] ~= 0 ) then
135 return 1;
136 end
137 end
138 end
139  
140 -- Set mod info
141 function CT_RABoss_SetInfo()
142 CT_RABoss_SetVar(this.value[1], this.value[2], not CT_RABoss_Mods[this.value[1]][this.value[2]]);
143 end
144  
145 function CT_RABoss_SetVar(modName, modVar, modValue)
146 CT_RABoss_Mods[modName][modVar] = modValue;
147 if ( not CT_RABoss_Save[modName] ) then
148 CT_RABoss_Save[modName] = { };
149 end
150 CT_RABoss_Save[modName][modVar] = modValue;
151 if ( CT_RAMenuBoss_Update ) then
152 CT_RAMenuBoss_Update();
153 end
154 end
155  
156 -- Add dropdown buttons
157 function CT_RABoss_AddDropDownButton(modName, btnDesc, btnVar, btnParams, btnSetFunc)
158 if ( not CT_RABoss_DropDown[modName] ) then
159 CT_RABoss_DropDown[modName] = { };
160 end
161 tinsert( CT_RABoss_DropDown[modName], { btnDesc, btnVar, btnParams, btnSetFunc } );
162 end
163  
164 -- Announce function
165 function CT_RABoss_Announce(msg, fullRaid)
166 if ( fullRaid and CT_RA_Level >= 1 ) then
167 CT_RA_AddMessage("MS " .. msg);
168 SendChatMessage(msg, "RAID");
169 end
170 CT_RA_WarningFrame:AddMessage(msg, 1, 1, 1, 1, UIERRORS_HOLD_TIME);
171 end
172  
173 function CT_RABoss_OnLoad()
174 this.elapsed = 0;
175 this:RegisterEvent("VARIABLES_LOADED");
176 this:RegisterEvent("PLAYER_ENTERING_WORLD");
177 end