vanilla-wow-addons – Blame information for rev 1
?pathlinks?
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 |