├── .gitattributes ├── .gitignore ├── Bindings.xml ├── HealingAssignments.lua ├── Media ├── Icon.tga └── IconMouseOver.tga ├── Modules ├── Database.lua ├── Posting.lua └── Sync.lua └── VanillaHealingAssignments.toc /.gitattributes: -------------------------------------------------------------------------------- 1 | # Auto detect text files and perform LF normalization 2 | * text=auto 3 | 4 | # Custom for Visual Studio 5 | *.cs diff=csharp 6 | 7 | # Standard to msysgit 8 | *.doc diff=astextplain 9 | *.DOC diff=astextplain 10 | *.docx diff=astextplain 11 | *.DOCX diff=astextplain 12 | *.dot diff=astextplain 13 | *.DOT diff=astextplain 14 | *.pdf diff=astextplain 15 | *.PDF diff=astextplain 16 | *.rtf diff=astextplain 17 | *.RTF diff=astextplain 18 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Windows image file caches 2 | Thumbs.db 3 | ehthumbs.db 4 | 5 | # Folder config file 6 | Desktop.ini 7 | 8 | # Recycle Bin used on file shares 9 | $RECYCLE.BIN/ 10 | 11 | # Windows Installer files 12 | *.cab 13 | *.msi 14 | *.msm 15 | *.msp 16 | 17 | # Windows shortcuts 18 | *.lnk 19 | 20 | # ========================= 21 | # Operating System Files 22 | # ========================= 23 | 24 | # OSX 25 | # ========================= 26 | 27 | .DS_Store 28 | .AppleDouble 29 | .LSOverride 30 | 31 | # Thumbnails 32 | ._* 33 | 34 | # Files that might appear on external disk 35 | .Spotlight-V100 36 | .Trashes 37 | 38 | # Directories potentially created on remote AFP share 39 | .AppleDB 40 | .AppleDesktop 41 | Network Trash Folder 42 | Temporary Items 43 | .apdisk 44 | -------------------------------------------------------------------------------- /Bindings.xml: -------------------------------------------------------------------------------- 1 | 2 | HealingAsssignments:PostAssignments() 3 | 4 | 5 | if HealingAsssignments.Mainframe:IsVisible() then HealingAsssignments.Mainframe:Hide() 6 | else HealingAsssignments.Mainframe:Show() end 7 | 8 | 9 | if HealingAsssignments.Mainframe.ColoredPostingsCheckbox:GetChecked() == nil then HealingAsssignments.Mainframe.ColoredPostingsCheckbox:SetChecked(1); DEFAULT_CHAT_FRAME:AddMessage("|cFF00FF00VHA|r: colored postings enabled",1,1,1) 10 | else HealingAsssignments.Mainframe.ColoredPostingsCheckbox:SetChecked(nil) DEFAULT_CHAT_FRAME:AddMessage("|cFF00FF00VHA|r: colored postings disabled",1,1,1) end 11 | 12 | 13 | if HealingAsssignments.Minimap:IsVisible() then HealingAsssignments.Minimap:Hide() 14 | else HealingAsssignments.Minimap:Show() end 15 | 16 | 17 | HealingAsssignments.Syncframe:TriggerSync() 18 | 19 | 20 | if HealingAsssignments.Mainframe.DeathWarningCheckbox:GetChecked() == nil then HealingAsssignments.Mainframe.DeathWarningCheckbox:SetChecked(1); DEFAULT_CHAT_FRAME:AddMessage("|cFF00FF00VHA|r: Death Warnings enabled",1,1,1) 21 | else HealingAsssignments.Mainframe.DeathWarningCheckbox:SetChecked(nil) DEFAULT_CHAT_FRAME:AddMessage("|cFF00FF00VHA|r: Death Warnings disabled",1,1,1) end 22 | if HealingAsssignments.Mainframe.DeathWarningCheckbox:GetChecked() == nil then HealingAssignmentsTemplates.Options.Deathwarnings = nil 23 | elseif HealingAsssignments.Mainframe.DeathWarningCheckbox:GetChecked() == 1 then HealingAssignmentsTemplates.Options.Deathwarnings = 1 end 24 | 25 | -------------------------------------------------------------------------------- /HealingAssignments.lua: -------------------------------------------------------------------------------- 1 | HealingAsssignments = CreateFrame("Frame"); -- Event Frame 2 | HealingAsssignments.Minimap = CreateFrame("Frame",nil,Minimap) -- Minimap Frame 3 | HealingAsssignments.Mainframe = CreateFrame("Frame","VHAMainFrame",UIParent) -- Main Display Frame 4 | HealingAsssignments.Syncframe = CreateFrame("Frame",nil,HealingAsssignments.Mainframe) 5 | 6 | tinsert(UISpecialFrames, "VHAMainFrame") 7 | 8 | VHA_VERSION = "2.1.7" 9 | HealingAsssignments:RegisterEvent("ADDON_LOADED") 10 | HealingAsssignments:RegisterEvent("RAID_ROSTER_UPDATE") 11 | HealingAsssignments:RegisterEvent("CHAT_MSG_WHISPER") 12 | HealingAsssignments:RegisterEvent("CHAT_MSG_COMBAT_FRIENDLY_DEATH") 13 | HealingAsssignments:RegisterEvent("CHAT_MSG_ADDON") 14 | 15 | function HealingAsssignments:OnUpdate() 16 | if HealingAsssignments.Mainframe.Foreground.Profile[1].Template[16].Assigments.Content.SlowPostCheckbox:GetChecked() == 1 then 17 | if HealingAsssignments.LastAddonMessageTime + (HealingAssignmentsTemplates.Options.Delay/1000) <= GetTime() -- if time is more then last time 18 | then 19 | if HealingAsssignments:TableLength(HealingAsssignments.MessageBuffer) > 0 -- if buffer not empty 20 | then -- remove entry and post 21 | local data = table.remove(HealingAsssignments.MessageBuffer, 1); 22 | local messageID = data["messageID"]; 23 | local message = data["message"]; 24 | local channel = data["channel"]; 25 | local extra = data["extra"]; 26 | HealingAsssignments.LastAddonMessageTime = GetTime(); 27 | SendChatMessage(messageID, message, extra, channel); 28 | end; 29 | end 30 | end 31 | end 32 | 33 | 34 | function HealingAsssignments:OnEvent() 35 | if event == "CHAT_MSG_ADDON" then 36 | if HealingAsssignments.Mainframe.SyncCheckbox:GetChecked() == 1 and string.sub(arg1, 1, 3) == "VHA" and arg4 ~= UnitName("player") then 37 | local TemplateNum = tonumber(string.sub(arg1, 5,6)) 38 | local TemplateName = string.sub(arg1, 8) 39 | local NameArray = VHAstrsplit(arg2,"#") 40 | HealingAsssignments.Syncframe:Receive(arg4,TemplateNum,TemplateName,NameArray) 41 | elseif HealingAsssignments.Mainframe.SyncCheckbox:GetChecked() == 1 and arg1 == "VHTrigger" and arg2 == "trigger" then HealingAsssignments.Syncframe:Send() 42 | end 43 | 44 | elseif event == "RAID_ROSTER_UPDATE" then 45 | HealingAsssignments:SetNumberOfHealers() 46 | HealingAsssignments:UpdateRaidDataBase() 47 | 48 | elseif event == "CHAT_MSG_COMBAT_FRIENDLY_DEATH" and HealingAsssignments.Mainframe.DeathWarningCheckbox:GetChecked() == 1 then 49 | HealingAsssignments:PostDeathWarning(string.sub(arg1, 1, -7)) -- Name dies. 50 | 51 | elseif event == "CHAT_MSG_WHISPER" then 52 | if arg1 == "!repost" or arg1 == "repost" then 53 | HealingAsssignments:RepostAssignments(arg2) 54 | end 55 | if arg1 == "!heal" or arg1 == "heal" then 56 | HealingAsssignments:AnswerAssignments(arg2) 57 | end 58 | 59 | elseif event == "ADDON_LOADED" and arg1 == "VanillaHealingAssignments" then -- replace Name here 60 | HealingAsssignments.Mainframe:ConfigureFrame() -- configure Main-Frame 61 | HealingAsssignments.MessageBuffer = {} 62 | HealingAsssignments.LastAddonMessageTime = 0; 63 | if VhaFu then HealingAsssignments.Minimap:Hide() end 64 | 65 | end 66 | end 67 | 68 | HealingAsssignments:SetScript("OnEvent", HealingAsssignments.OnEvent) 69 | HealingAsssignments:SetScript("OnUpdate", HealingAsssignments.OnUpdate) 70 | 71 | 72 | -- from healCommm-1.0 addon / lua 5.1 workaround 73 | function VHAstrsplit(pString, pPattern) 74 | local Table = {} 75 | local fpat = "(.-)" .. pPattern 76 | local last_end = 1 77 | local s, e, cap = strfind(pString, fpat, 1) 78 | while s do 79 | if s ~= 1 or cap ~= "" then 80 | table.insert(Table,cap) 81 | end 82 | last_end = e+1 83 | s, e, cap = strfind(pString, fpat, last_end) 84 | end 85 | if last_end <= strlen(pString) then 86 | cap = strfind(pString, last_end) 87 | table.insert(Table, cap) 88 | end 89 | return Table 90 | end 91 | 92 | function HealingAsssignments:SetNumberOfHealers() 93 | local NumHealers = 0; 94 | local Class = "" 95 | for i=1,GetNumRaidMembers() do 96 | _,Class = UnitClass("raid"..i) 97 | if Class == "PRIEST" or Class == "DRUID" or Class == "SHAMAN" or Class == "PALADIN" then NumHealers = NumHealers +1 end 98 | end 99 | HealingAsssignments.Mainframe.BottomLeftFontString:SetText("Number of Healers: "..NumHealers) 100 | end 101 | 102 | -- Initial Configure and Creation after Login 103 | function HealingAsssignments.Mainframe:ConfigureFrame() 104 | -- set initial settings 105 | HealingAsssignments.Mainframe.Options = {} 106 | function HealingAsssignments.Mainframe.Options:StartMoving() 107 | this:StartMoving() 108 | end 109 | 110 | function HealingAsssignments.Mainframe.Options:StopMovingOrSizing() 111 | this:StopMovingOrSizing() 112 | end 113 | 114 | self:SetFrameStrata("BACKGROUND") 115 | self:SetWidth(768) -- Set these to whatever height/width is needed 116 | self:SetHeight(446) -- for your Texture 117 | self:SetPoint("CENTER",0,0) 118 | self:SetMovable(1) 119 | self:EnableMouse(1) 120 | self:RegisterForDrag("LeftButton") 121 | self:SetScript("OnDragStart", HealingAsssignments.Mainframe.Options.StartMoving) 122 | self:SetScript("OnDragStop", HealingAsssignments.Mainframe.Options.StopMovingOrSizing) 123 | 124 | -- create static elements -- 125 | ---------------------------- 126 | 127 | -- create Frames 128 | if HealingAssignmentsTemplates == nil then HealingAssignmentsTemplates = {} end 129 | if HealingAssignmentsTemplates.Options == nil then HealingAssignmentsTemplates.Options = {} 130 | HealingAssignmentsTemplates.Options.WhisperRepost = 1 131 | HealingAssignmentsTemplates.Options.WhisperHeal = 1 132 | end 133 | if HealingAssignmentsTemplates.Options.Delay == nil then HealingAssignmentsTemplates.Options.Delay = 500 end 134 | if HealingAssignmentsTemplates.Options.MinimapX == nil then HealingAssignmentsTemplates.Options.MinimapX = 0 end -- initial x position 135 | if HealingAssignmentsTemplates.Options.MinimapY == nil then HealingAssignmentsTemplates.Options.MinimapY = 0 end -- initial y position 136 | if not HealingAssignmentsTemplates.Profile then HealingAssignmentsTemplates.Profile = {} end 137 | for i=1,11 do 138 | if HealingAssignmentsTemplates.Profile[i] == nil then HealingAssignmentsTemplates.Profile[i] = {} end 139 | if HealingAssignmentsTemplates.Profile[i].Template == nil then HealingAssignmentsTemplates.Profile[i].Template = {} end 140 | if HealingAssignmentsTemplates.Profile[i].Template.TankHealer == nil then HealingAssignmentsTemplates.Profile[i].Template.TankHealer = {} end 141 | if HealingAssignmentsTemplates.Profile[i].Template.Name == nil then HealingAssignmentsTemplates.Profile[i].Template.Name = {} end 142 | if not HealingAssignmentsTemplates.Profile[i].Name then HealingAssignmentsTemplates.Profile[i].Name = " " end 143 | end 144 | HealingAssignmentsTemplates.Profile[1].Name = UnitName("player") 145 | 146 | 147 | 148 | local OptionsFrameNum = 16; -- options frame 149 | self.ActiveFrame = {} -- no active Frame at start // clear it 150 | self.ActiveFrame = nil 151 | self.ActiveFrameBuffer = nil 152 | self.ActiveProfile = 1 153 | --HealingAsssignments.Mainframe.ActiveProfile 154 | self.DropDownCounter = {}; self.DropDownCounter = 0 -- init counter for making bug-free dropdowns 155 | 156 | self.Foreground = {} -- Foreground Frame 157 | self.Foreground.Profile = {} 158 | for i=1, 11 do 159 | self.Foreground.Profile[i] = {} 160 | self.Foreground.Profile[i].Template = {} 161 | end 162 | 163 | self.Background = {} -- Background Frame 164 | self.Background.Topleft = CreateFrame("Frame",nil,self) -- Topleft Background Frame 165 | self.Background.Topright = CreateFrame("Frame",nil,self) -- Topright Background Frame 166 | self.Background.Topmid = CreateFrame("Frame",nil,self) -- Topleft Background Frame 167 | self.Background.Bottommid = CreateFrame("Frame",nil,self) -- Topright Background Frame 168 | self.Background.Bottomleft = CreateFrame("Frame",nil,self) -- Bottomleft Background Frame 169 | self.Background.Bottomright = CreateFrame("Frame",nil,self) -- Bottomright Background Frame 170 | self.Background.Icon = CreateFrame("Frame",nil,self) -- Icon Background Frame 171 | self.Background.TemplateBackground = CreateFrame("Frame",nil,self) -- template class background 172 | self.Background.TemplateBackground2 = CreateFrame("Frame",nil,self) -- template class background 173 | self.Background.TemplateOption = CreateFrame("Frame",nil,self) -- Template PopUp Frame 174 | self.Background.TemplateDeleteOption = CreateFrame("Frame",nil,self) -- Template PopUp Frame 175 | 176 | 177 | -- Bottomright Background Frame 178 | local backdrop = {bgFile = "Interface\\AddOns\\VanillaHealingAssignments\\Media\\Icon"} -- path to the background texture 179 | local backdropMouseOver = {bgFile = "Interface\\AddOns\\VanillaHealingAssignments\\Media\\IconMouseOver"} -- path to the background texture 180 | self.Background.Icon:SetFrameStrata("LOW") 181 | self.Background.Icon:SetWidth(64) -- Set these to whatever height/width is needed 182 | self.Background.Icon:SetHeight(64) -- for your Texture 183 | self.Background.Icon:SetBackdrop(backdrop) 184 | self.Background.Icon:SetPoint("TOPLEFT", self, "TOPLEFT", 6, -2) 185 | 186 | self.Background.Icon.Button = CreateFrame("Button",nil,self) -- click button on icon 187 | self.Background.Icon.Button:SetWidth(64) 188 | self.Background.Icon.Button:SetHeight(64) 189 | self.Background.Icon.Button:SetPoint("TOPLEFT", self, "TOPLEFT", 6, -2) 190 | self.Background.Icon.Button:SetScript("OnEnter",function() 191 | PlaySound("igMainMenuOptionCheckBoxOn"); HealingAsssignments.Mainframe.Background.Icon:SetBackdrop(backdropMouseOver) 192 | GameTooltip:SetOwner(HealingAsssignments.Mainframe, "ANCHOR_TOPLEFT"); 193 | GameTooltip:SetText("Click to Post Healing Assignments", 1, 1, 1, 1, 1); 194 | GameTooltip:Show() 195 | end) 196 | self.Background.Icon.Button:SetScript("OnLeave",function() HealingAsssignments.Mainframe.Background.Icon:SetBackdrop(backdrop); GameTooltip:Hide() end) 197 | self.Background.Icon.Button:SetScript("OnClick",function() PlaySound("igMainMenuOptionCheckBoxOn"); HealingAsssignments:PostAssignments() end) 198 | 199 | -- Topleft Background Frame 200 | local backdrop = {bgFile = "Interface\\auctionframe\\ui-auctionframe-browse-topleft"} -- path to the background texture 201 | self.Background.Topleft:SetFrameStrata("BACKGROUND") 202 | self.Background.Topleft:SetWidth(256) -- Set these to whatever height/width is needed 203 | self.Background.Topleft:SetHeight(256) -- for your Texture 204 | self.Background.Topleft:SetBackdrop(backdrop) 205 | self.Background.Topleft:SetPoint("TOPLEFT", self, "TOPLEFT", 0, 0) 206 | 207 | -- Topmid Background Frame 208 | local backdrop = {bgFile = "Interface\\auctionframe\\ui-auctionframe-browse-top"} -- path to the background texture 209 | self.Background.Topmid:SetFrameStrata("BACKGROUND") 210 | self.Background.Topmid:SetWidth(256) -- Set these to whatever height/width is needed 211 | self.Background.Topmid:SetHeight(256) -- for your Texture 212 | self.Background.Topmid:SetBackdrop(backdrop) 213 | self.Background.Topmid:SetPoint("TOPLEFT", self, "TOPLEFT", 256, 0) 214 | 215 | -- Topright Background Frame 216 | local backdrop = {bgFile = "Interface\\auctionframe\\ui-auctionframe-browse-topright"} -- path to the background texture 217 | self.Background.Topright:SetFrameStrata("BACKGROUND") 218 | self.Background.Topright:SetWidth(256) -- Set these to whatever height/width is needed 219 | self.Background.Topright:SetHeight(256) -- for your Texture 220 | self.Background.Topright:SetBackdrop(backdrop) 221 | self.Background.Topright:SetPoint("TOPLEFT", self, "TOPLEFT", 512, 0) 222 | 223 | -- Bottomleft Background Frame 224 | local backdrop = {bgFile = "Interface\\auctionframe\\ui-auctionframe-browse-botleft"} -- path to the background texture 225 | self.Background.Bottomleft:SetFrameStrata("BACKGROUND") 226 | self.Background.Bottomleft:SetWidth(256) -- Set these to whatever height/width is needed 227 | self.Background.Bottomleft:SetHeight(256) -- for your Texture 228 | self.Background.Bottomleft:SetBackdrop(backdrop) 229 | self.Background.Bottomleft:SetPoint("TOPLEFT", self, "TOPLEFT", 0, -256) 230 | 231 | -- Bottommid Background Frame 232 | local backdrop = {bgFile = "Interface\\auctionframe\\ui-auctionframe-browse-bot"} -- path to the background texture 233 | self.Background.Bottommid:SetFrameStrata("BACKGROUND") 234 | self.Background.Bottommid:SetWidth(256) -- Set these to whatever height/width is needed 235 | self.Background.Bottommid:SetHeight(256) -- for your Texture 236 | self.Background.Bottommid:SetBackdrop(backdrop) 237 | self.Background.Bottommid:SetPoint("TOPLEFT", self, "TOPLEFT", 256, -256) 238 | 239 | -- Bottomright Background Frame 240 | local backdrop = {bgFile = "Interface\\auctionframe\\ui-auctionframe-browse-botright"} -- path to the background texture 241 | self.Background.Bottomright:SetFrameStrata("BACKGROUND") 242 | self.Background.Bottomright:SetWidth(256) -- Set these to whatever height/width is needed 243 | self.Background.Bottomright:SetHeight(256) -- for your Texture 244 | self.Background.Bottomright:SetBackdrop(backdrop) 245 | self.Background.Bottomright:SetPoint("TOPLEFT", self, "TOPLEFT", 512, -256) 246 | 247 | local roll = math.random(1,3) 248 | local backdropTemplate1 = {} 249 | local backdropTemplate2 = {} 250 | local _,Class = UnitClass("player") 251 | if Class == "DRUID" then 252 | backdropTemplate1[1] = {bgFile = "Interface\\TalentFrame\\DruidBalance-Topleft",insets = {left = 48,right = 48, top = 20, bottom = 0}} 253 | backdropTemplate2[1] = {bgFile = "Interface\\TalentFrame\\DruidBalance-Bottomleft",insets = {left = 48,right = 48, top = 0, bottom = 10}} 254 | backdropTemplate1[2] = {bgFile = "Interface\\TalentFrame\\DruidFeralCombat-Topleft",insets = {left = 48,right = 48, top = 20, bottom = 0}} 255 | backdropTemplate2[2] = {bgFile = "Interface\\TalentFrame\\DruidFeralCombat-Bottomleft",insets = {left = 48,right = 48, top = 0, bottom = 10}} 256 | backdropTemplate1[3] = {bgFile = "Interface\\TalentFrame\\DruidRestoration-Topleft",insets = {left = 48,right = 48, top = 20, bottom = 0}} 257 | backdropTemplate2[3] = {bgFile = "Interface\\TalentFrame\\DruidRestoration-Bottomleft",insets = {left = 48,right = 48, top = 0, bottom = 10}} 258 | elseif Class == "HUNTER" then 259 | backdropTemplate1[1] = {bgFile = "Interface\\TalentFrame\\HunterBeastMastery-Topleft",insets = {left = 48,right = 48, top = 20, bottom = 0}} 260 | backdropTemplate2[1] = {bgFile = "Interface\\TalentFrame\\HunterBeastMastery-Bottomleft",insets = {left = 48,right = 48, top = 0, bottom = 10}} 261 | backdropTemplate1[2] = {bgFile = "Interface\\TalentFrame\\HunterMarksmanship-Topleft",insets = {left = 48,right = 48, top = 20, bottom = 0}} 262 | backdropTemplate2[2] = {bgFile = "Interface\\TalentFrame\\HunterMarksmanship-Bottomleft",insets = {left = 48,right = 48, top = 0, bottom = 10}} 263 | backdropTemplate1[3] = {bgFile = "Interface\\TalentFrame\\HunterSurvival-Topleft",insets = {left = 48,right = 48, top = 20, bottom = 0}} 264 | backdropTemplate2[3] = {bgFile = "Interface\\TalentFrame\\HunterSurvival-Bottomleft",insets = {left = 48,right = 48, top = 0, bottom = 10}} 265 | elseif Class == "MAGE" then 266 | backdropTemplate1[1] = {bgFile = "Interface\\TalentFrame\\MageArcane-Topleft",insets = {left = 48,right = 48, top = 20, bottom = 0}} 267 | backdropTemplate2[1] = {bgFile = "Interface\\TalentFrame\\MageArcane-Bottomleft",insets = {left = 48,right = 48, top = 0, bottom = 10}} 268 | backdropTemplate1[2] = {bgFile = "Interface\\TalentFrame\\MageFire-Topleft",insets = {left = 48,right = 48, top = 20, bottom = 0}} 269 | backdropTemplate2[2] = {bgFile = "Interface\\TalentFrame\\MageFire-Bottomleft",insets = {left = 48,right = 48, top = 0, bottom = 10}} 270 | backdropTemplate1[3] = {bgFile = "Interface\\TalentFrame\\MageFrost-Topleft",insets = {left = 48,right = 48, top = 20, bottom = 0}} 271 | backdropTemplate2[3] = {bgFile = "Interface\\TalentFrame\\MageFrost-Bottomleft",insets = {left = 48,right = 48, top = 0, bottom = 10}} 272 | elseif Class == "PALADIN" then 273 | backdropTemplate1[1] = {bgFile = "Interface\\TalentFrame\\PaladinCombat-Topleft",insets = {left = 48,right = 48, top = 20, bottom = 0}} 274 | backdropTemplate2[1] = {bgFile = "Interface\\TalentFrame\\PaladinCombat-Bottomleft",insets = {left = 48,right = 48, top = 0, bottom = 10}} 275 | backdropTemplate1[2] = {bgFile = "Interface\\TalentFrame\\PaladinHoly-Topleft",insets = {left = 48,right = 48, top = 20, bottom = 0}} 276 | backdropTemplate2[2] = {bgFile = "Interface\\TalentFrame\\PaladinHoly-Bottomleft",insets = {left = 48,right = 48, top = 0, bottom = 10}} 277 | backdropTemplate1[3] = {bgFile = "Interface\\TalentFrame\\PaladinProtection-Topleft",insets = {left = 48,right = 48, top = 20, bottom = 0}} 278 | backdropTemplate2[3] = {bgFile = "Interface\\TalentFrame\\PaladinProtection-Bottomleft",insets = {left = 48,right = 48, top = 0, bottom = 10}} 279 | elseif Class == "PRIEST" then 280 | backdropTemplate1[1] = {bgFile = "Interface\\TalentFrame\\PriestDiscipline-Topleft",insets = {left = 48,right = 48, top = 20, bottom = 0}} 281 | backdropTemplate2[1] = {bgFile = "Interface\\TalentFrame\\PriestDiscipline-Bottomleft",insets = {left = 48,right = 48, top = 0, bottom = 10}} 282 | backdropTemplate1[2] = {bgFile = "Interface\\TalentFrame\\PriestHoly-Topleft",insets = {left = 48,right = 48, top = 20, bottom = 0}} 283 | backdropTemplate2[2] = {bgFile = "Interface\\TalentFrame\\PriestHoly-Bottomleft",insets = {left = 48,right = 48, top = 0, bottom = 10}} 284 | backdropTemplate1[3] = {bgFile = "Interface\\TalentFrame\\PriestShadow-Topleft",insets = {left = 48,right = 48, top = 20, bottom = 0}} 285 | backdropTemplate2[3] = {bgFile = "Interface\\TalentFrame\\PriestShadow-Bottomleft",insets = {left = 48,right = 48, top = 0, bottom = 10}} 286 | elseif Class == "ROGUE" then 287 | backdropTemplate1[1] = {bgFile = "Interface\\TalentFrame\\RogueAssassination-Topleft",insets = {left = 48,right = 48, top = 20, bottom = 0}} 288 | backdropTemplate2[1] = {bgFile = "Interface\\TalentFrame\\RogueAssassination-Bottomleft",insets = {left = 48,right = 48, top = 0, bottom = 10}} 289 | backdropTemplate1[2] = {bgFile = "Interface\\TalentFrame\\RogueCombat-Topleft",insets = {left = 48,right = 48, top = 20, bottom = 0}} 290 | backdropTemplate2[2] = {bgFile = "Interface\\TalentFrame\\RogueCombat-Bottomleft",insets = {left = 48,right = 48, top = 0, bottom = 10}} 291 | backdropTemplate1[3] = {bgFile = "Interface\\TalentFrame\\RogueSubtlety-Topleft",insets = {left = 48,right = 48, top = 20, bottom = 0}} 292 | backdropTemplate2[3] = {bgFile = "Interface\\TalentFrame\\RogueSubtlety-Bottomleft",insets = {left = 48,right = 48, top = 0, bottom = 10}} 293 | elseif Class == "SHAMAN" then 294 | backdropTemplate1[1] = {bgFile = "Interface\\TalentFrame\\ShamanElementalCombat-Topleft",insets = {left = 48,right = 48, top = 20, bottom = 0}} 295 | backdropTemplate2[1] = {bgFile = "Interface\\TalentFrame\\ShamanElementalCombat-Bottomleft",insets = {left = 48,right = 48, top = 0, bottom = 10}} 296 | backdropTemplate1[2] = {bgFile = "Interface\\TalentFrame\\ShamanEnhancement-Topleft",insets = {left = 48,right = 48, top = 20, bottom = 0}} 297 | backdropTemplate2[2] = {bgFile = "Interface\\TalentFrame\\ShamanEnhancement-Bottomleft",insets = {left = 48,right = 48, top = 0, bottom = 10}} 298 | backdropTemplate1[3] = {bgFile = "Interface\\TalentFrame\\ShamanRestoration-Topleft",insets = {left = 48,right = 48, top = 20, bottom = 0}} 299 | backdropTemplate2[3] = {bgFile = "Interface\\TalentFrame\\ShamanRestoration-Bottomleft",insets = {left = 48,right = 48, top = 0, bottom = 10}} 300 | elseif Class == "WARLOCK" then 301 | backdropTemplate1[1] = {bgFile = "Interface\\TalentFrame\\WarlockCurses-Topleft",insets = {left = 48,right = 48, top = 20, bottom = 0}} 302 | backdropTemplate2[1] = {bgFile = "Interface\\TalentFrame\\WarlockCurses-Bottomleft",insets = {left = 48,right = 48, top = 0, bottom = 10}} 303 | backdropTemplate1[2] = {bgFile = "Interface\\TalentFrame\\WarlockDestruction-Topleft",insets = {left = 48,right = 48, top = 20, bottom = 0}} 304 | backdropTemplate2[2] = {bgFile = "Interface\\TalentFrame\\WarlockDestruction-Bottomleft",insets = {left = 48,right = 48, top = 0, bottom = 10}} 305 | backdropTemplate1[3] = {bgFile = "Interface\\TalentFrame\\WarlockSummoning-Topleft",insets = {left = 48,right = 48, top = 20, bottom = 0}} 306 | backdropTemplate2[3] = {bgFile = "Interface\\TalentFrame\\WarlockSummoning-Bottomleft",insets = {left = 48,right = 48, top = 0, bottom = 10}} 307 | elseif Class == "WARRIOR" then 308 | backdropTemplate1[1] = {bgFile = "Interface\\TalentFrame\\WarriorArms-Topleft",insets = {left = 48,right = 48, top = 20, bottom = 0}} 309 | backdropTemplate2[1] = {bgFile = "Interface\\TalentFrame\\WarriorArms-Bottomleft",insets = {left = 48,right = 48, top = 0, bottom = 10}} 310 | backdropTemplate1[2] = {bgFile = "Interface\\TalentFrame\\WarriorFury-Topleft",insets = {left = 48,right = 48, top = 20, bottom = 0}} 311 | backdropTemplate2[2] = {bgFile = "Interface\\TalentFrame\\WarriorFury-Bottomleft",insets = {left = 48,right = 48, top = 0, bottom = 10}} 312 | backdropTemplate1[3] = {bgFile = "Interface\\TalentFrame\\WarriorProtection-Topleft",insets = {left = 48,right = 48, top = 20, bottom = 0}} 313 | backdropTemplate2[3] = {bgFile = "Interface\\TalentFrame\\WarriorProtection-Bottomleft",insets = {left = 48,right = 48, top = 0, bottom = 10}} 314 | end 315 | 316 | 317 | -- create template background 318 | local backdrop = {bgFile = "Interface\\TalentFrame\\DruidBalance-Topleft",insets = {left = 48,right = 48, top = 20, bottom = 0}} 319 | self.Background.TemplateBackground:SetFrameStrata("LOW") 320 | self.Background.TemplateBackground:SetWidth(256) 321 | self.Background.TemplateBackground:SetHeight(256) 322 | self.Background.TemplateBackground:SetBackdrop(backdropTemplate1[roll]) 323 | self.Background.TemplateBackground:SetBackdropColor(1,1,1,0.8) 324 | self.Background.TemplateBackground:SetPoint("TOPLEFT", self, "TOPLEFT", -27, -83) 325 | 326 | local backdrop2 = {bgFile = "Interface\\TalentFrame\\DruidBalance-Bottomleft",insets = {left = 48,right = 48, top = 0, bottom = 10}} 327 | self.Background.TemplateBackground2:SetFrameStrata("LOW") 328 | self.Background.TemplateBackground2:SetWidth(256) 329 | self.Background.TemplateBackground2:SetHeight(128) 330 | self.Background.TemplateBackground2:SetBackdrop(backdropTemplate2[roll]) 331 | self.Background.TemplateBackground2:SetBackdropColor(1,1,1,0.8) 332 | self.Background.TemplateBackground2:SetPoint("TOPLEFT", self, "TOPLEFT", -27, -339) 333 | 334 | -- Template Template Create Popup Frame 335 | 336 | local backdrop = {bgFile = "Interface\\TutorialFrame\\TutorialFrameBackground", edgeFile="Interface\\DialogFrame\\UI-DialogBox-Border",tile = true, tileSize = 32, edgeSize = 16, insets = { left = 5, right = 5, top = 5, bottom = 5 }} -- path to the background texture 337 | self.Background.TemplateOption:SetFrameStrata("MEDIUM") 338 | self.Background.TemplateOption:SetWidth(200) -- Set these to whatever height/width is needed 339 | self.Background.TemplateOption:SetHeight(100) -- for your Texture 340 | self.Background.TemplateOption:SetBackdrop(backdrop) 341 | self.Background.TemplateOption:SetAlpha(1) 342 | self.Background.TemplateOption:SetPoint("TOPLEFT", self, "TOPLEFT", 185, -100) 343 | 344 | local TemplateOptionHeaderFontString = self.Background.TemplateOption:CreateFontString(nil, "OVERLAY") 345 | TemplateOptionHeaderFontString:SetPoint("TOPLEFT", self.Background.TemplateOption, "TOPLEFT", 0, -10) 346 | TemplateOptionHeaderFontString:SetFont("Fonts\\FRIZQT__.TTF", 9) 347 | TemplateOptionHeaderFontString:SetWidth(200) 348 | TemplateOptionHeaderFontString:SetJustifyH("CENTER") 349 | TemplateOptionHeaderFontString:SetText("Create Template Options") 350 | 351 | local TemplateOptionText1FontString = self.Background.TemplateOption:CreateFontString(nil, "OVERLAY") 352 | TemplateOptionText1FontString:SetPoint("TOPLEFT", self.Background.TemplateOption, "TOPLEFT", 10, -30) 353 | TemplateOptionText1FontString:SetFont("Fonts\\FRIZQT__.TTF", 9) 354 | TemplateOptionText1FontString:SetWidth(200) 355 | TemplateOptionText1FontString:SetJustifyH("LEFT") 356 | TemplateOptionText1FontString:SetText("Template Name:") 357 | 358 | 359 | self.Background.TemplateOption.Editbox = CreateFrame("EditBox", nil, self.Background.TemplateOption) 360 | local backdrop = {bgFile = "Interface\\TutorialFrame\\TutorialFrameBackground", edgeFile="Interface\\DialogFrame\\UI-DialogBox-Border",tile = true, tileSize = 32, edgeSize = 4, insets = { left = 0, right = 0, top = 0, bottom = 0 }} 361 | self.Background.TemplateOption.Editbox:SetFontObject("GameFontHighlight") 362 | self.Background.TemplateOption.Editbox:SetBackdrop(backdrop) 363 | self.Background.TemplateOption.Editbox:SetFrameStrata("MEDIUM") 364 | self.Background.TemplateOption.Editbox:SetPoint("TOPLEFT",10,-45) 365 | self.Background.TemplateOption.Editbox:SetWidth(175) 366 | self.Background.TemplateOption.Editbox:SetHeight(15) 367 | self.Background.TemplateOption.Editbox:SetMaxLetters(20) 368 | self.Background.TemplateOption.Editbox:SetAutoFocus(true) 369 | self.Background.TemplateOption.Editbox:SetText("") 370 | 371 | self.Background.TemplateOption.AddButton = CreateFrame("Button",nil,self.Background.TemplateOption,"UIPanelButtonTemplate") 372 | self.Background.TemplateOption.AddButton:SetPoint("TOPLEFT",40,-75) 373 | self.Background.TemplateOption.AddButton:SetFrameStrata("MEDIUM") 374 | self.Background.TemplateOption.AddButton:SetWidth(120) 375 | self.Background.TemplateOption.AddButton:SetHeight(18) 376 | self.Background.TemplateOption.AddButton:SetText("Create Template") 377 | self.Background.TemplateOption.AddButton:SetScript("OnClick", function () PlaySound("igMainMenuOptionCheckBoxOn"); HealingAsssignments.Mainframe:AddTemplate() self.Background.TemplateOption:Hide() end) 378 | 379 | self.Background.TemplateOption:Hide() 380 | 381 | -- Template Template Delete Popup Frame 382 | local backdrop = {bgFile = "Interface\\TutorialFrame\\TutorialFrameBackground", edgeFile="Interface\\DialogFrame\\UI-DialogBox-Border",tile = true, tileSize = 32, edgeSize = 16, insets = { left = 5, right = 5, top = 5, bottom = 5 }} -- path to the background texture 383 | self.Background.TemplateDeleteOption:SetFrameStrata("MEDIUM") 384 | self.Background.TemplateDeleteOption:SetWidth(200) -- Set these to whatever height/width is needed 385 | self.Background.TemplateDeleteOption:SetHeight(100) -- for your Texture 386 | self.Background.TemplateDeleteOption:SetBackdrop(backdrop) 387 | self.Background.TemplateDeleteOption: SetAlpha(1) 388 | self.Background.TemplateDeleteOption:SetPoint("TOPLEFT", self, "TOPLEFT", 185, -100) 389 | 390 | local TemplateDeleteOptionHeaderFontString = self.Background.TemplateDeleteOption:CreateFontString(nil, "OVERLAY") 391 | TemplateDeleteOptionHeaderFontString:SetPoint("TOPLEFT", self.Background.TemplateDeleteOption, "TOPLEFT", 0, -10) 392 | TemplateDeleteOptionHeaderFontString:SetFont("Fonts\\FRIZQT__.TTF", 9) 393 | TemplateDeleteOptionHeaderFontString:SetWidth(200) 394 | TemplateDeleteOptionHeaderFontString:SetJustifyH("CENTER") 395 | TemplateDeleteOptionHeaderFontString:SetText("Delete Template") 396 | 397 | local TemplateDeleteOptionText1FontString = self.Background.TemplateDeleteOption:CreateFontString(nil, "OVERLAY") 398 | TemplateDeleteOptionText1FontString:SetPoint("TOPLEFT", self.Background.TemplateDeleteOption, "TOPLEFT", 10, -30) 399 | TemplateDeleteOptionText1FontString:SetFont("Fonts\\FRIZQT__.TTF", 9) 400 | TemplateDeleteOptionText1FontString:SetWidth(200) 401 | TemplateDeleteOptionText1FontString:SetJustifyH("LEFT") 402 | TemplateDeleteOptionText1FontString:SetText("You want to delete this Templete?") 403 | 404 | self.TemplateDeleteOptionText2FontString = self.Background.TemplateDeleteOption:CreateFontString(nil, "OVERLAY") 405 | self.TemplateDeleteOptionText2FontString:SetPoint("TOPLEFT", self.Background.TemplateDeleteOption, "TOPLEFT", 70, -50) 406 | self.TemplateDeleteOptionText2FontString:SetFont("Fonts\\FRIZQT__.TTF", 11) 407 | self.TemplateDeleteOptionText2FontString:SetJustifyH("Center") 408 | 409 | self.Background.TemplateDeleteOption.DeleteButton = CreateFrame("Button",nil,self.Background.TemplateDeleteOption,"UIPanelButtonTemplate") 410 | self.Background.TemplateDeleteOption.DeleteButton:SetPoint("TOPLEFT",10,-75) 411 | self.Background.TemplateDeleteOption.DeleteButton:SetFrameStrata("MEDIUM") 412 | self.Background.TemplateDeleteOption.DeleteButton:SetWidth(80) 413 | self.Background.TemplateDeleteOption.DeleteButton:SetHeight(18) 414 | self.Background.TemplateDeleteOption.DeleteButton:SetText("Delete") 415 | self.Background.TemplateDeleteOption.DeleteButton:SetScript("OnClick", function() PlaySound("igMainMenuOptionCheckBoxOn") end) 416 | 417 | self.Background.TemplateDeleteOption.KeepButton = CreateFrame("Button",nil,self.Background.TemplateDeleteOption,"UIPanelButtonTemplate") 418 | self.Background.TemplateDeleteOption.KeepButton:SetPoint("TOPLEFT",110,-75) 419 | self.Background.TemplateDeleteOption.KeepButton:SetFrameStrata("MEDIUM") 420 | self.Background.TemplateDeleteOption.KeepButton:SetWidth(80) 421 | self.Background.TemplateDeleteOption.KeepButton:SetHeight(18) 422 | self.Background.TemplateDeleteOption.KeepButton:SetText("Keep") 423 | self.Background.TemplateDeleteOption.KeepButton:SetScript("OnClick", function() PlaySound("igMainMenuOptionCheckBoxOn") 424 | self.Background.TemplateDeleteOption:Hide() end) 425 | self.Background.TemplateDeleteOption:Hide() 426 | 427 | -- create Buttons -- 428 | -- Close Button 429 | self.CloseButton = CreateFrame("Button",nil,self,"UIPanelCloseButton") 430 | self.CloseButton:SetPoint("TOPLEFT",self:GetWidth()-29,-8) 431 | self.CloseButton:SetFrameStrata("LOW") 432 | 433 | -- Add Tank Button 434 | self.AddTankButton = CreateFrame("Button",nil,self,"UIPanelButtonTemplate") 435 | self.AddTankButton:SetPoint("TOPLEFT",521,-412) 436 | self.AddTankButton:SetFrameStrata("LOW") 437 | self.AddTankButton:SetWidth(79) 438 | self.AddTankButton:SetHeight(18) 439 | self.AddTankButton:SetText("Add Tank") 440 | self.AddTankButton:SetScript("OnClick", function() PlaySound("igMainMenuOptionCheckBoxOn"); HealingAsssignments.Mainframe:AddTankDropdown() end) 441 | self.AddTankButton:SetScript("OnEnter", function() 442 | GameTooltip:SetOwner(HealingAsssignments.Mainframe, "ANCHOR_TOPLEFT"); 443 | GameTooltip:SetText("Add a Tank Dropdown.", 1, 1, 1, 1, 1); 444 | GameTooltip:Show() 445 | end) 446 | self.AddTankButton:SetScript("OnLeave", function() GameTooltip:Hide() end) 447 | 448 | -- Add Healer Button 449 | self.AddHealerButton = CreateFrame("Button",nil,self,"UIPanelButtonTemplate") 450 | self.AddHealerButton:SetPoint("TOPLEFT",601,-412) 451 | self.AddHealerButton:SetFrameStrata("LOW") 452 | self.AddHealerButton:SetWidth(79) 453 | self.AddHealerButton:SetHeight(18) 454 | self.AddHealerButton:SetText("Add Healer") 455 | self.AddHealerButton:SetScript("OnClick", function() PlaySound("igMainMenuOptionCheckBoxOn"); HealingAsssignments.Mainframe:AddHealerDropdown() end) 456 | self.AddHealerButton:SetScript("OnEnter", function() 457 | GameTooltip:SetOwner(HealingAsssignments.Mainframe, "ANCHOR_TOPLEFT"); 458 | GameTooltip:SetText("Add a Healer Dropdown.", 1, 1, 1, 1, 1); 459 | GameTooltip:Show() 460 | end) 461 | self.AddHealerButton:SetScript("OnLeave", function() GameTooltip:Hide() end) 462 | 463 | -- Reset Button 464 | self.ResetButton = CreateFrame("Button",nil,self,"UIPanelButtonTemplate") 465 | self.ResetButton:SetPoint("TOPLEFT",681,-412) 466 | self.ResetButton:SetFrameStrata("LOW") 467 | self.ResetButton:SetWidth(79) 468 | self.ResetButton:SetHeight(18) 469 | self.ResetButton:SetText("Reset") 470 | self.ResetButton:SetScript("OnClick", function() PlaySound("igMainMenuOptionCheckBoxOn");HealingAsssignments.Mainframe:ResetDropdownText() end) 471 | self.ResetButton:SetScript("OnEnter", function() 472 | GameTooltip:SetOwner(HealingAsssignments.Mainframe, "ANCHOR_TOPLEFT"); 473 | GameTooltip:SetText("Reset the opened Assignments.", 1, 1, 1, 1, 1); 474 | GameTooltip:Show() 475 | end) 476 | self.ResetButton:SetScript("OnLeave", function() GameTooltip:Hide() end) 477 | 478 | -- AddTemplate Button 479 | self.AddTemplateButton = CreateFrame("Button",nil,self,"UIPanelButtonTemplate") 480 | self.AddTemplateButton:SetPoint("TOPLEFT",38,-78) 481 | self.AddTemplateButton:SetFrameStrata("LOW") 482 | self.AddTemplateButton:SetWidth(95) 483 | self.AddTemplateButton:SetHeight(22) 484 | self.AddTemplateButton:SetText("Add Template") 485 | self.AddTemplateButton:SetScript("OnClick", function() PlaySound("igMainMenuOptionCheckBoxOn"); HealingAsssignments.Mainframe:OpenTemplateOptions() end) 486 | self.AddTemplateButton:SetScript("OnEnter", function() 487 | GameTooltip:SetOwner(HealingAsssignments.Mainframe, "ANCHOR_TOPLEFT"); 488 | GameTooltip:SetText("Open Template Creation Window.", 1, 1, 1, 1, 1); 489 | GameTooltip:Show() 490 | end) 491 | self.AddTemplateButton:SetScript("OnLeave", function() GameTooltip:Hide() end) 492 | 493 | -- Open Options Button 494 | self.OpenOptionsButton = CreateFrame("Button",nil,self,"UIPanelButtonTemplate") 495 | self.OpenOptionsButton:SetPoint("TOPLEFT",680,-78) 496 | self.OpenOptionsButton:SetFrameStrata("LOW") 497 | self.OpenOptionsButton:SetWidth(79) 498 | self.OpenOptionsButton:SetHeight(18) 499 | self.OpenOptionsButton:SetText("Options") 500 | self.OpenOptionsButton:SetScript("OnClick", function() PlaySound("igMainMenuOptionCheckBoxOn"); 501 | if self.ActiveFrame ~= 16 then HealingAsssignments.Mainframe:SelectActiveTemplate(16,1) 502 | elseif self.ActiveFrame == 16 then HealingAsssignments.Mainframe:SelectActiveTemplate(HealingAsssignments.Mainframe.ActiveFrameBuffer) end 503 | end) 504 | self.OpenOptionsButton:SetScript("OnEnter", function() 505 | GameTooltip:SetOwner(HealingAsssignments.Mainframe, "ANCHOR_TOPLEFT"); 506 | GameTooltip:SetText("Open Options Frame.", 1, 1, 1, 1, 1); 507 | GameTooltip:Show() 508 | end) 509 | self.OpenOptionsButton:SetScript("OnLeave", function() GameTooltip:Hide() end) 510 | 511 | 512 | -- Open Sync Button 513 | self.SyncButton = CreateFrame("Button",nil,self,"UIPanelButtonTemplate") 514 | self.SyncButton:SetPoint("TOPLEFT",480,-48) 515 | self.SyncButton:SetWidth(60) 516 | self.SyncButton:SetHeight(18) 517 | self.SyncButton:SetText("Sync!") 518 | self.SyncButton:SetScript("OnClick", function() PlaySound("igMainMenuOptionCheckBoxOn"); 519 | HealingAsssignments.Syncframe:TriggerSync() 520 | end) 521 | self.SyncButton:SetScript("OnEnter", function() 522 | GameTooltip:SetOwner(HealingAsssignments.Mainframe, "ANCHOR_TOPLEFT"); 523 | GameTooltip:SetText("Sync your template with other addon-users in raid.", 1, 1, 1, 1, 1); 524 | GameTooltip:Show() 525 | end) 526 | self.SyncButton:SetScript("OnLeave", function() GameTooltip:Hide() end) 527 | 528 | -- create FontStrings 529 | -- Title String 530 | local TitleFontString = self.Background.Topleft:CreateFontString(nil, "OVERLAY") 531 | TitleFontString:SetPoint("TOPLEFT", self, "TOPLEFT", 290, -18) 532 | TitleFontString:SetFont("Fonts\\FRIZQT__.TTF", 14) 533 | TitleFontString:SetText("Vanilla Healing Assignments") 534 | 535 | -- Bottom String 536 | self.BottomLeftFontString = self.Background.Topleft:CreateFontString(nil, "OVERLAY") 537 | self.BottomLeftFontString:SetPoint("TOPLEFT", self, "TOPLEFT", 24, -416) 538 | self.BottomLeftFontString:SetFont("Fonts\\FRIZQT__.TTF", 11) 539 | self.BottomLeftFontString:SetText("Number of Healers: ") 540 | 541 | -- HealerChannel String 542 | local HealerChannelFontString = self.Background.Topleft:CreateFontString(nil, "OVERLAY") 543 | HealerChannelFontString:SetPoint("TOPLEFT", self, "TOPLEFT", 290, -80) 544 | HealerChannelFontString:SetFont("Fonts\\FRIZQT__.TTF", 11) 545 | HealerChannelFontString:SetWidth(150) 546 | HealerChannelFontString:SetJustifyH("RIGHT") 547 | HealerChannelFontString:SetText("Healer Channel: ") 548 | 549 | -- Colored Postings String 550 | local ColoredPostingsFontString = self.Background.Topleft:CreateFontString(nil, "OVERLAY") 551 | ColoredPostingsFontString:SetPoint("TOPLEFT", self, "TOPLEFT", 160, -80) 552 | ColoredPostingsFontString:SetFont("Fonts\\FRIZQT__.TTF", 11) 553 | ColoredPostingsFontString:SetWidth(100) 554 | ColoredPostingsFontString:SetJustifyH("RIGHT") 555 | ColoredPostingsFontString:SetText("Colored Postings: ") 556 | 557 | -- Sync Data String 558 | local SyncDataFontString = self.Background.Topleft:CreateFontString(nil, "OVERLAY") 559 | SyncDataFontString:SetPoint("TOPLEFT", self, "TOPLEFT", 290, -50) 560 | SyncDataFontString:SetFont("Fonts\\FRIZQT__.TTF", 11) 561 | SyncDataFontString:SetWidth(150) 562 | SyncDataFontString:SetJustifyH("RIGHT") 563 | SyncDataFontString:SetText("Sync Data: ") 564 | 565 | -- Death Warnings String 566 | local DeathWarningsFontString = self.Background.Topleft:CreateFontString(nil, "OVERLAY") 567 | DeathWarningsFontString:SetPoint("TOPLEFT", self, "TOPLEFT", 160, -50) 568 | DeathWarningsFontString:SetFont("Fonts\\FRIZQT__.TTF", 11) 569 | DeathWarningsFontString:SetWidth(100) 570 | DeathWarningsFontString:SetJustifyH("RIGHT") 571 | DeathWarningsFontString:SetText("Death Warnings: ") 572 | 573 | -- Selected Healer Channel String 574 | self.HealerChannelSelectedFontString = self.Background.Topleft:CreateFontString(nil, "OVERLAY") 575 | self.HealerChannelSelectedFontString:SetPoint("TOPLEFT", self, "TOPLEFT", 480, -80) 576 | self.HealerChannelSelectedFontString:SetFont("Fonts\\FRIZQT__.TTF", 11) 577 | self.HealerChannelSelectedFontString:SetWidth(200) 578 | self.HealerChannelSelectedFontString:SetJustifyH("LEFT") 579 | self.HealerChannelSelectedFontString:SetText("TEST") 580 | 581 | -- sync profiles string 582 | --self.SyncProfilesString = self.Background.Topleft:CreateFontString(nil, "OVERLAY") 583 | --self.SyncProfilesString:SetPoint("TOPLEFT", self, "TOPLEFT", 190, -416) 584 | --self.SyncProfilesString:SetFont("Fonts\\FRIZQT__.TTF", 11) 585 | --self.SyncProfilesString:SetText("Active Profile: "..UnitName("player")) 586 | 587 | -- create Checkboxes 588 | -- Death Warning Checkbox 589 | self.DeathWarningCheckbox = CreateFrame("CheckButton", nil, self, "UICheckButtonTemplate") 590 | self.DeathWarningCheckbox:SetPoint("TOPLEFT",260,-42) 591 | self.DeathWarningCheckbox:SetFrameStrata("LOW") 592 | self.DeathWarningCheckbox:SetScript("OnClick", function () 593 | if self.DeathWarningCheckbox:GetChecked() == nil then HealingAssignmentsTemplates.Options.Deathwarnings = nil 594 | elseif self.DeathWarningCheckbox:GetChecked() == 1 then HealingAssignmentsTemplates.Options.Deathwarnings = 1 end 595 | end) 596 | self.DeathWarningCheckbox:SetScript("OnEnter", function() 597 | GameTooltip:SetOwner(HealingAsssignments.Mainframe, "ANCHOR_TOPLEFT"); 598 | GameTooltip:SetText("Post warning if an assigned healer dies.", 1, 1, 1, 1, 1); 599 | GameTooltip:Show() 600 | end) 601 | self.DeathWarningCheckbox:SetScript("OnLeave", function() GameTooltip:Hide() end) 602 | self.DeathWarningCheckbox:SetChecked(HealingAssignmentsTemplates.Options.Deathwarnings) 603 | 604 | -- Sync Checkbox 605 | self.SyncCheckbox = CreateFrame("CheckButton", nil, self, "UICheckButtonTemplate") 606 | self.SyncCheckbox:SetPoint("TOPLEFT",440,-42) 607 | self.SyncCheckbox:SetFrameStrata("LOW") 608 | self.SyncCheckbox:SetScript("OnClick", function () PlaySound("igMainMenuOptionCheckBoxOn"); 609 | if self.SyncCheckbox:GetChecked() == nil then HealingAssignmentsTemplates.Options.SyncData = nil; HealingAsssignments.Mainframe.SyncButton:Disable() 610 | elseif self.SyncCheckbox:GetChecked() == 1 then HealingAssignmentsTemplates.Options.SyncData = 1; HealingAsssignments.Mainframe.SyncButton:Enable() end 611 | end) 612 | self.SyncCheckbox:SetScript("OnEnter", function() 613 | GameTooltip:SetOwner(HealingAsssignments.Mainframe, "ANCHOR_TOPLEFT"); 614 | GameTooltip:SetText("Sync your template with other addon-users in raid.", 1, 1, 1, 1, 1); 615 | GameTooltip:Show() 616 | end) 617 | self.SyncCheckbox:SetScript("OnLeave", function() GameTooltip:Hide() end) 618 | self.SyncCheckbox:SetChecked(HealingAssignmentsTemplates.Options.SyncData) 619 | if HealingAssignmentsTemplates.Options.SyncData == nil then HealingAsssignments.Mainframe.SyncButton:Disable() end 620 | 621 | -- Colored Postings Checkbox 622 | self.ColoredPostingsCheckbox = CreateFrame("CheckButton", nil, self, "UICheckButtonTemplate") 623 | self.ColoredPostingsCheckbox:SetPoint("TOPLEFT",260,-72) 624 | self.ColoredPostingsCheckbox:SetFrameStrata("LOW") 625 | self.ColoredPostingsCheckbox:SetScript("OnEnter", function() 626 | GameTooltip:SetOwner(HealingAsssignments.Mainframe, "ANCHOR_CURSOR"); 627 | GameTooltip:SetText("Warning: Colored Text is against server rules! Dont post in public channels :)", 1, 0, 0, 1, 1); 628 | GameTooltip:Show() 629 | end) 630 | self.ColoredPostingsCheckbox:SetScript("OnLeave", function() GameTooltip:Hide() end) 631 | self.ColoredPostingsCheckbox:SetScript("OnClick", function() PlaySound("igMainMenuOptionCheckBoxOn"); 632 | local Checked = HealingAsssignments.Mainframe.ColoredPostingsCheckbox:GetChecked(); 633 | HealingAsssignments.Mainframe.Foreground.Profile[1].Template[OptionsFrameNum].Assigments.Content.ColoredPostingsCheckbox:SetChecked(Checked); 634 | end) 635 | 636 | -- create Editbox 637 | -- Healer Channel EditBox 638 | self.HealerChannelEditBox = CreateFrame("EditBox", nil, self,"InputBoxTemplate") 639 | self.HealerChannelEditBox:SetPoint("TOPLEFT",449,-72) 640 | self.HealerChannelEditBox:SetWidth(18) 641 | self.HealerChannelEditBox:SetHeight(30) 642 | self.HealerChannelEditBox:SetMaxLetters(1) 643 | self.HealerChannelEditBox:SetAutoFocus(false) 644 | self.HealerChannelEditBox:SetFrameStrata("MEDIUM") 645 | self.HealerChannelEditBox:SetScript("OnTextChanged", function() PlaySound("igMainMenuOptionCheckBoxOn"); 646 | HealingAssignmentsTemplates.Options.HealerChannel = self.HealerChannelEditBox:GetText() 647 | HealingAsssignments.Mainframe:SetHealerChannelString() 648 | HealingAsssignments.Mainframe.Foreground.Profile[1].Template[OptionsFrameNum].Assigments.Content.DeathWarningChannelTextbox:SetText(HealingAssignmentsTemplates.Options.HealerChannel) 649 | end) 650 | if HealingAssignmentsTemplates.Options.HealerChannel then self.HealerChannelEditBox:SetText(HealingAssignmentsTemplates.Options.HealerChannel) end 651 | 652 | -- Creat sync Dropdown and select 653 | self.ProfileDropdown = CreateFrame("Button","HAProfileDropdown", self, "UIDropDownMenuTemplate") 654 | self.ProfileDropdown:SetPoint("TOPLEFT",670,-56) 655 | self.ProfileDropdown:SetScale(0.8) 656 | getglobal(HealingAsssignments.Mainframe.ProfileDropdown:GetName().."Text"):SetText(UnitName("player")) 657 | getglobal(HealingAsssignments.Mainframe.ProfileDropdown:GetName().."Button"):SetScript("OnClick", function() 658 | HealingAsssignments.Syncframe:UpdateDropdown() 659 | PlaySound("igMainMenuOptionCheckBoxOn"); 660 | ToggleDropDownMenu(); -- inherit UIDropDownMenuTemplate functions 661 | end) 662 | 663 | self.SyncDeleteButton = CreateFrame("Button",nil,self,"UIPanelButtonTemplate") 664 | self.SyncDeleteButton:SetPoint("TOPLEFT",665,-46) 665 | self.SyncDeleteButton:SetWidth(18) 666 | self.SyncDeleteButton:SetHeight(18) 667 | self.SyncDeleteButton:SetText("X") 668 | self.SyncDeleteButton:SetScript("OnClick", function() PlaySound("igMainMenuOptionCheckBoxOn") 669 | HealingAsssignments.Syncframe:DeleteProfile() 670 | end) 671 | self.SyncDeleteButton:SetScript("OnEnter", function() 672 | GameTooltip:SetOwner(HealingAsssignments.Mainframe, "ANCHOR_TOPLEFT"); 673 | GameTooltip:SetText("Delete the current Sync Profile.", 1, 1, 1, 1, 1); 674 | GameTooltip:Show() 675 | end) 676 | self.SyncDeleteButton:SetScript("OnLeave", function() GameTooltip:Hide() end) 677 | self.SyncDeleteButton:Disable() 678 | 679 | -- Create Minimap Icon 680 | HealingAsssignments.Minimap:CreateMinimapIcon() 681 | 682 | -- dyncmic creation -- 683 | ---------------------- 684 | -- create Templates 685 | HealingAsssignments.Mainframe:LoadTemplates() -- load old templates 686 | HealingAsssignments.Mainframe:AddAssignmentFrame(1,OptionsFrameNum) -- create Options Frame 687 | HealingAsssignments.Mainframe:CreateOptions(OptionsFrameNum) -- config Frame 688 | HealingAsssignments.Mainframe:SetHealerChannelString() -- set channelname string 689 | HealingAsssignments.Syncframe:SelectProfile(1) 690 | HealingAsssignments.Mainframe:SelectActiveTemplate(1) 691 | 692 | -- show frame 693 | HealingAsssignments.Syncframe:UpdateDropdown() 694 | HealingAsssignments:SetNumberOfHealers() 695 | HealingAsssignments.Mainframe:Hide() 696 | end 697 | 698 | function HealingAsssignments.Mainframe:CreateOptions(TemplateNumber) 699 | 700 | -- reset scroll frame 701 | --self.Foreground.Profile[1].Template[TemplateNumber].Assigments.Content:SetHeight(100) 702 | self.Foreground.Profile[1].Template[TemplateNumber].Assigments.Scrollbar:SetMinMaxValues(0, 90) 703 | 704 | -- create bottom text 705 | local String1 = self.Foreground.Profile[1].Template[TemplateNumber].Assigments.Content:CreateFontString(nil, "OVERLAY") 706 | String1:SetPoint("TOPLEFT", -70, -20) 707 | String1:SetFont("Fonts\\FRIZQT__.TTF", 11) 708 | String1:SetWidth(200) 709 | String1:SetJustifyH("RIGHT") 710 | String1:SetText("Post Bottom Test:") 711 | 712 | self.Foreground.Profile[1].Template[TemplateNumber].Assigments.Content.BottomText = CreateFrame("EditBox", "BottomTextEditBox", self.Foreground.Profile[1].Template[TemplateNumber].Assigments.Content,"InputBoxTemplate") 713 | self.Foreground.Profile[1].Template[TemplateNumber].Assigments.Content.BottomText:SetPoint("TOPLEFT",160,-10) 714 | self.Foreground.Profile[1].Template[TemplateNumber].Assigments.Content.BottomText:SetWidth(370) 715 | self.Foreground.Profile[1].Template[TemplateNumber].Assigments.Content.BottomText:SetHeight(30) 716 | self.Foreground.Profile[1].Template[TemplateNumber].Assigments.Content.BottomText:SetAutoFocus(0) 717 | self.Foreground.Profile[1].Template[TemplateNumber].Assigments.Content.BottomText:SetFrameStrata("LOW") 718 | self.Foreground.Profile[1].Template[TemplateNumber].Assigments.Content.BottomText:SetText("Rest: Raidheal") 719 | 720 | -- create additional tanks 721 | local String2 = self.Foreground.Profile[1].Template[TemplateNumber].Assigments.Content:CreateFontString(nil, "OVERLAY") 722 | String2:SetPoint("TOPLEFT", -70, -50) 723 | String2:SetFont("Fonts\\FRIZQT__.TTF", 11) 724 | String2:SetWidth(200) 725 | String2:SetJustifyH("RIGHT") 726 | String2:SetText("additional Tanks:") 727 | 728 | self.Foreground.Profile[1].Template[TemplateNumber].Assigments.Content.WarlockCheckbox = CreateFrame("CheckButton", nil, self.Foreground.Profile[1].Template[TemplateNumber].Assigments.Content, "UICheckButtonTemplate") 729 | self.Foreground.Profile[1].Template[TemplateNumber].Assigments.Content.WarlockCheckbox:SetPoint("TOPLEFT",150,-40) 730 | self.Foreground.Profile[1].Template[TemplateNumber].Assigments.Content.WarlockCheckbox:SetFrameStrata("LOW") 731 | self.Foreground.Profile[1].Template[TemplateNumber].Assigments.Content.WarlockCheckbox:SetScript("OnClick", function () PlaySound("igMainMenuOptionCheckBoxOn") end) 732 | 733 | local Warlock = self.Foreground.Profile[1].Template[TemplateNumber].Assigments.Content:CreateFontString(nil, "OVERLAY") 734 | Warlock:SetPoint("TOPLEFT", 190, -50) 735 | Warlock:SetFont("Fonts\\FRIZQT__.TTF", 11) 736 | Warlock:SetJustifyH("RIGHT") 737 | Warlock:SetText("Warlock") 738 | Warlock:SetTextColor(0.58, 0.51, 0.79,1) 739 | 740 | self.Foreground.Profile[1].Template[TemplateNumber].Assigments.Content.DruidCheckbox = CreateFrame("CheckButton", nil, self.Foreground.Profile[1].Template[TemplateNumber].Assigments.Content, "UICheckButtonTemplate") 741 | self.Foreground.Profile[1].Template[TemplateNumber].Assigments.Content.DruidCheckbox:SetPoint("TOPLEFT",300,-40) 742 | self.Foreground.Profile[1].Template[TemplateNumber].Assigments.Content.DruidCheckbox:SetFrameStrata("LOW") 743 | self.Foreground.Profile[1].Template[TemplateNumber].Assigments.Content.DruidCheckbox:SetScript("OnClick", function () PlaySound("igMainMenuOptionCheckBoxOn") end) 744 | 745 | local Druid = self.Foreground.Profile[1].Template[TemplateNumber].Assigments.Content:CreateFontString(nil, "OVERLAY") 746 | Druid:SetPoint("TOPLEFT", 340, -50) 747 | Druid:SetFont("Fonts\\FRIZQT__.TTF", 11) 748 | Druid:SetJustifyH("RIGHT") 749 | Druid:SetText("Druid") 750 | Druid:SetTextColor(1.00, 0.49, 0.04,1) 751 | 752 | self.Foreground.Profile[1].Template[TemplateNumber].Assigments.Content.RogueCheckbox = CreateFrame("CheckButton", nil, self.Foreground.Profile[1].Template[TemplateNumber].Assigments.Content, "UICheckButtonTemplate") 753 | self.Foreground.Profile[1].Template[TemplateNumber].Assigments.Content.RogueCheckbox:SetPoint("TOPLEFT",450,-40) 754 | self.Foreground.Profile[1].Template[TemplateNumber].Assigments.Content.RogueCheckbox:SetFrameStrata("LOW") 755 | self.Foreground.Profile[1].Template[TemplateNumber].Assigments.Content.RogueCheckbox:SetScript("OnClick", function () PlaySound("igMainMenuOptionCheckBoxOn") end) 756 | 757 | local Rogue = self.Foreground.Profile[1].Template[TemplateNumber].Assigments.Content:CreateFontString(nil, "OVERLAY") 758 | Rogue:SetPoint("TOPLEFT", 490, -50) 759 | Rogue:SetFont("Fonts\\FRIZQT__.TTF", 11) 760 | Rogue:SetJustifyH("RIGHT") 761 | Rogue:SetText("Rogue") 762 | Rogue:SetTextColor(1.00, 0.96, 0.41,1) 763 | 764 | self.Foreground.Profile[1].Template[TemplateNumber].Assigments.Content.HunterCheckbox = CreateFrame("CheckButton", nil, self.Foreground.Profile[1].Template[TemplateNumber].Assigments.Content, "UICheckButtonTemplate") 765 | self.Foreground.Profile[1].Template[TemplateNumber].Assigments.Content.HunterCheckbox:SetPoint("TOPLEFT",150,-70) 766 | self.Foreground.Profile[1].Template[TemplateNumber].Assigments.Content.HunterCheckbox:SetFrameStrata("LOW") 767 | self.Foreground.Profile[1].Template[TemplateNumber].Assigments.Content.HunterCheckbox:SetScript("OnClick", function () PlaySound("igMainMenuOptionCheckBoxOn") end) 768 | 769 | local Hunter = self.Foreground.Profile[1].Template[TemplateNumber].Assigments.Content:CreateFontString(nil, "OVERLAY") 770 | Hunter:SetPoint("TOPLEFT", 190, -80) 771 | Hunter:SetFont("Fonts\\FRIZQT__.TTF", 11) 772 | Hunter:SetJustifyH("RIGHT") 773 | Hunter:SetText("Hunter") 774 | Hunter:SetTextColor(0.67, 0.83, 0.45,1) 775 | 776 | self.Foreground.Profile[1].Template[TemplateNumber].Assigments.Content.MageCheckbox = CreateFrame("CheckButton", nil, self.Foreground.Profile[1].Template[TemplateNumber].Assigments.Content, "UICheckButtonTemplate") 777 | self.Foreground.Profile[1].Template[TemplateNumber].Assigments.Content.MageCheckbox:SetPoint("TOPLEFT",300,-70) 778 | self.Foreground.Profile[1].Template[TemplateNumber].Assigments.Content.MageCheckbox:SetFrameStrata("LOW") 779 | self.Foreground.Profile[1].Template[TemplateNumber].Assigments.Content.MageCheckbox:SetScript("OnClick", function () PlaySound("igMainMenuOptionCheckBoxOn") end) 780 | 781 | local Mage = self.Foreground.Profile[1].Template[TemplateNumber].Assigments.Content:CreateFontString(nil, "OVERLAY") 782 | Mage:SetPoint("TOPLEFT", 340, -80) 783 | Mage:SetFont("Fonts\\FRIZQT__.TTF", 11) 784 | Mage:SetJustifyH("RIGHT") 785 | Mage:SetText("Mage") 786 | Mage:SetTextColor(0.41, 0.80, 0.94,1) 787 | 788 | self.Foreground.Profile[1].Template[TemplateNumber].Assigments.Content.ShamanCheckbox = CreateFrame("CheckButton", nil, self.Foreground.Profile[1].Template[TemplateNumber].Assigments.Content, "UICheckButtonTemplate") 789 | self.Foreground.Profile[1].Template[TemplateNumber].Assigments.Content.ShamanCheckbox:SetPoint("TOPLEFT",450,-70) 790 | self.Foreground.Profile[1].Template[TemplateNumber].Assigments.Content.ShamanCheckbox:SetFrameStrata("LOW") 791 | self.Foreground.Profile[1].Template[TemplateNumber].Assigments.Content.ShamanCheckbox:SetScript("OnClick", function () PlaySound("igMainMenuOptionCheckBoxOn") end) 792 | 793 | local Shaman = self.Foreground.Profile[1].Template[TemplateNumber].Assigments.Content:CreateFontString(nil, "OVERLAY") 794 | Shaman:SetPoint("TOPLEFT", 490, -80) 795 | Shaman:SetFont("Fonts\\FRIZQT__.TTF", 11) 796 | Shaman:SetJustifyH("RIGHT") 797 | Shaman:SetText("Shaman") 798 | Shaman:SetTextColor(0.96, 0.55, 0.73,1) 799 | 800 | 801 | self.Foreground.Profile[1].Template[TemplateNumber].Assigments.Content.PriestCheckbox = CreateFrame("CheckButton", nil, self.Foreground.Profile[1].Template[TemplateNumber].Assigments.Content, "UICheckButtonTemplate") 802 | self.Foreground.Profile[1].Template[TemplateNumber].Assigments.Content.PriestCheckbox:SetPoint("TOPLEFT",150,-100) 803 | self.Foreground.Profile[1].Template[TemplateNumber].Assigments.Content.PriestCheckbox:SetFrameStrata("LOW") 804 | self.Foreground.Profile[1].Template[TemplateNumber].Assigments.Content.PriestCheckbox:SetScript("OnClick", function () PlaySound("igMainMenuOptionCheckBoxOn") end) 805 | 806 | local Priest = self.Foreground.Profile[1].Template[TemplateNumber].Assigments.Content:CreateFontString(nil, "OVERLAY") 807 | Priest:SetPoint("TOPLEFT", 190, -110) 808 | Priest:SetFont("Fonts\\FRIZQT__.TTF", 11) 809 | Priest:SetJustifyH("RIGHT") 810 | Priest:SetText("Priest") 811 | Priest:SetTextColor(1.00, 1.00, 1.00,1) 812 | 813 | self.Foreground.Profile[1].Template[TemplateNumber].Assigments.Content.PaladinCheckbox = CreateFrame("CheckButton", nil, self.Foreground.Profile[1].Template[TemplateNumber].Assigments.Content, "UICheckButtonTemplate") 814 | self.Foreground.Profile[1].Template[TemplateNumber].Assigments.Content.PaladinCheckbox:SetPoint("TOPLEFT",300,-100) 815 | self.Foreground.Profile[1].Template[TemplateNumber].Assigments.Content.PaladinCheckbox:SetFrameStrata("LOW") 816 | self.Foreground.Profile[1].Template[TemplateNumber].Assigments.Content.PaladinCheckbox:SetScript("OnClick", function () PlaySound("igMainMenuOptionCheckBoxOn") end) 817 | 818 | local Paladin = self.Foreground.Profile[1].Template[TemplateNumber].Assigments.Content:CreateFontString(nil, "OVERLAY") 819 | Paladin:SetPoint("TOPLEFT", 340, -110) 820 | Paladin:SetFont("Fonts\\FRIZQT__.TTF", 11) 821 | Paladin:SetJustifyH("RIGHT") 822 | Paladin:SetText("Paladin") 823 | Paladin:SetTextColor(0.96, 0.55, 0.73,1) 824 | 825 | self.Foreground.Profile[1].Template[TemplateNumber].Assigments.Content.LeftsideCheckbox = CreateFrame("CheckButton", nil, self.Foreground.Profile[1].Template[TemplateNumber].Assigments.Content, "UICheckButtonTemplate") 826 | self.Foreground.Profile[1].Template[TemplateNumber].Assigments.Content.LeftsideCheckbox:SetPoint("TOPLEFT",150,-130) 827 | self.Foreground.Profile[1].Template[TemplateNumber].Assigments.Content.LeftsideCheckbox:SetFrameStrata("LOW") 828 | self.Foreground.Profile[1].Template[TemplateNumber].Assigments.Content.LeftsideCheckbox:SetScript("OnClick", function () PlaySound("igMainMenuOptionCheckBoxOn") end) 829 | 830 | local Leftside = self.Foreground.Profile[1].Template[TemplateNumber].Assigments.Content:CreateFontString(nil, "OVERLAY") 831 | Leftside:SetPoint("TOPLEFT", 190, -140) 832 | Leftside:SetFont("Fonts\\FRIZQT__.TTF", 11) 833 | Leftside:SetJustifyH("RIGHT") 834 | Leftside:SetText("Left Side") 835 | Leftside:SetTextColor(1, 0, 0,1) 836 | 837 | self.Foreground.Profile[1].Template[TemplateNumber].Assigments.Content.RightsideCheckbox = CreateFrame("CheckButton", nil, self.Foreground.Profile[1].Template[TemplateNumber].Assigments.Content, "UICheckButtonTemplate") 838 | self.Foreground.Profile[1].Template[TemplateNumber].Assigments.Content.RightsideCheckbox:SetPoint("TOPLEFT",300,-130) 839 | self.Foreground.Profile[1].Template[TemplateNumber].Assigments.Content.RightsideCheckbox:SetFrameStrata("LOW") 840 | self.Foreground.Profile[1].Template[TemplateNumber].Assigments.Content.RightsideCheckbox:SetScript("OnClick", function () PlaySound("igMainMenuOptionCheckBoxOn") end) 841 | 842 | local Rightside = self.Foreground.Profile[1].Template[TemplateNumber].Assigments.Content:CreateFontString(nil, "OVERLAY") 843 | Rightside:SetPoint("TOPLEFT", 340, -140) 844 | Rightside:SetFont("Fonts\\FRIZQT__.TTF", 11) 845 | Rightside:SetJustifyH("RIGHT") 846 | Rightside:SetText("Right Side") 847 | Rightside:SetTextColor(0, 0, 1,1) 848 | 849 | self.Foreground.Profile[1].Template[TemplateNumber].Assigments.Content.CustomCheckbox = CreateFrame("CheckButton", nil, self.Foreground.Profile[1].Template[TemplateNumber].Assigments.Content, "UICheckButtonTemplate") 850 | self.Foreground.Profile[1].Template[TemplateNumber].Assigments.Content.CustomCheckbox:SetPoint("TOPLEFT",150,-160) 851 | self.Foreground.Profile[1].Template[TemplateNumber].Assigments.Content.CustomCheckbox:SetFrameStrata("LOW") 852 | self.Foreground.Profile[1].Template[TemplateNumber].Assigments.Content.CustomCheckbox:SetScript("OnClick", function () PlaySound("igMainMenuOptionCheckBoxOn") end) 853 | 854 | local Custom = self.Foreground.Profile[1].Template[TemplateNumber].Assigments.Content:CreateFontString(nil, "OVERLAY") 855 | Custom:SetPoint("TOPLEFT", 190, -170) 856 | Custom:SetFont("Fonts\\FRIZQT__.TTF", 11) 857 | Custom:SetJustifyH("RIGHT") 858 | Custom:SetText("Custom Text:") 859 | Custom:SetTextColor(0, 1, 0,1) 860 | 861 | self.Foreground.Profile[1].Template[TemplateNumber].Assigments.Content.CustomCheckboxText = CreateFrame("EditBox", "CustomTextEditBox", self.Foreground.Profile[1].Template[TemplateNumber].Assigments.Content,"InputBoxTemplate") 862 | self.Foreground.Profile[1].Template[TemplateNumber].Assigments.Content.CustomCheckboxText:SetPoint("TOPLEFT",280,-160) 863 | self.Foreground.Profile[1].Template[TemplateNumber].Assigments.Content.CustomCheckboxText:SetWidth(90) 864 | self.Foreground.Profile[1].Template[TemplateNumber].Assigments.Content.CustomCheckboxText:SetHeight(30) 865 | self.Foreground.Profile[1].Template[TemplateNumber].Assigments.Content.CustomCheckboxText:SetAutoFocus(0) 866 | self.Foreground.Profile[1].Template[TemplateNumber].Assigments.Content.CustomCheckboxText:SetFrameStrata("LOW") 867 | self.Foreground.Profile[1].Template[TemplateNumber].Assigments.Content.CustomCheckboxText:SetMaxLetters(40) 868 | self.Foreground.Profile[1].Template[TemplateNumber].Assigments.Content.CustomCheckboxText:SetText(" ") 869 | 870 | -- death warning options 871 | local DeathWarningText = self.Foreground.Profile[1].Template[TemplateNumber].Assigments.Content:CreateFontString(nil, "OVERLAY") 872 | DeathWarningText:SetPoint("TOPLEFT", -70, -200) 873 | DeathWarningText:SetFont("Fonts\\FRIZQT__.TTF", 11) 874 | DeathWarningText:SetWidth(200) 875 | DeathWarningText:SetJustifyH("RIGHT") 876 | DeathWarningText:SetText("Death Warn Options:") 877 | 878 | local DeathWarningColoredText = self.Foreground.Profile[1].Template[TemplateNumber].Assigments.Content:CreateFontString(nil, "OVERLAY") 879 | DeathWarningColoredText:SetPoint("TOPLEFT", -30, -230) 880 | DeathWarningColoredText:SetFont("Fonts\\FRIZQT__.TTF", 11) 881 | DeathWarningColoredText:SetWidth(200) 882 | DeathWarningColoredText:SetJustifyH("RIGHT") 883 | DeathWarningColoredText:SetText("Colored Posting:") 884 | 885 | self.Foreground.Profile[1].Template[TemplateNumber].Assigments.Content.ColoredPostingsCheckbox = CreateFrame("CheckButton", nil, self.Foreground.Profile[1].Template[TemplateNumber].Assigments.Content, "UICheckButtonTemplate") 886 | self.Foreground.Profile[1].Template[TemplateNumber].Assigments.Content.ColoredPostingsCheckbox:SetPoint("TOPLEFT",180,-220) 887 | self.Foreground.Profile[1].Template[TemplateNumber].Assigments.Content.ColoredPostingsCheckbox:SetFrameStrata("LOW") 888 | self.Foreground.Profile[1].Template[TemplateNumber].Assigments.Content.ColoredPostingsCheckbox:SetScript("OnEnter", function() 889 | GameTooltip:SetOwner(HealingAsssignments.Mainframe, "ANCHOR_CURSOR"); 890 | GameTooltip:SetText("Warning: Colored Text is against server rules! Dont post in public channels :)", 1, 0, 0, 1, 1); 891 | GameTooltip:Show() 892 | end) 893 | self.Foreground.Profile[1].Template[TemplateNumber].Assigments.Content.ColoredPostingsCheckbox:SetScript("OnLeave", function() GameTooltip:Hide() end) 894 | self.Foreground.Profile[1].Template[TemplateNumber].Assigments.Content.ColoredPostingsCheckbox:SetScript("OnClick", function () PlaySound("igMainMenuOptionCheckBoxOn") end) 895 | 896 | local DeathWarningChannelText = self.Foreground.Profile[1].Template[TemplateNumber].Assigments.Content:CreateFontString(nil, "OVERLAY") 897 | DeathWarningChannelText:SetPoint("TOPLEFT", -30, -260) 898 | DeathWarningChannelText:SetFont("Fonts\\FRIZQT__.TTF", 11) 899 | DeathWarningChannelText:SetWidth(200) 900 | DeathWarningChannelText:SetJustifyH("RIGHT") 901 | DeathWarningChannelText:SetText("Posting Channel:") 902 | 903 | self.Foreground.Profile[1].Template[TemplateNumber].Assigments.Content.DeathWarningChannelTextbox = CreateFrame("EditBox", "DeathWarningChannelTextbox", self.Foreground.Profile[1].Template[TemplateNumber].Assigments.Content,"InputBoxTemplate") 904 | self.Foreground.Profile[1].Template[TemplateNumber].Assigments.Content.DeathWarningChannelTextbox:SetPoint("TOPLEFT",190,-250) 905 | self.Foreground.Profile[1].Template[TemplateNumber].Assigments.Content.DeathWarningChannelTextbox:SetWidth(18) 906 | self.Foreground.Profile[1].Template[TemplateNumber].Assigments.Content.DeathWarningChannelTextbox:SetHeight(30) 907 | self.Foreground.Profile[1].Template[TemplateNumber].Assigments.Content.DeathWarningChannelTextbox:SetAutoFocus(0) 908 | self.Foreground.Profile[1].Template[TemplateNumber].Assigments.Content.DeathWarningChannelTextbox:SetFrameStrata("LOW") 909 | self.Foreground.Profile[1].Template[TemplateNumber].Assigments.Content.DeathWarningChannelTextbox:SetMaxLetters(1) 910 | self.Foreground.Profile[1].Template[TemplateNumber].Assigments.Content.DeathWarningChannelTextbox:SetScript("OnTextChanged", function() 911 | HealingAsssignments.Mainframe:SetHealerChannelString() 912 | end) 913 | 914 | self.Foreground.Profile[1].Template[TemplateNumber].Assigments.Content.ColoredPostingChannelText = self.Foreground.Profile[1].Template[TemplateNumber].Assigments.Content:CreateFontString(nil, "OVERLAY") 915 | self.Foreground.Profile[1].Template[TemplateNumber].Assigments.Content.ColoredPostingChannelText:SetPoint("TOPLEFT", 220, -260) 916 | self.Foreground.Profile[1].Template[TemplateNumber].Assigments.Content.ColoredPostingChannelText:SetFont("Fonts\\FRIZQT__.TTF", 11) 917 | self.Foreground.Profile[1].Template[TemplateNumber].Assigments.Content.ColoredPostingChannelText:SetWidth(200) 918 | self.Foreground.Profile[1].Template[TemplateNumber].Assigments.Content.ColoredPostingChannelText:SetJustifyH("LEFT") 919 | self.Foreground.Profile[1].Template[TemplateNumber].Assigments.Content.ColoredPostingChannelText:SetText("TEST") 920 | 921 | -- slowmode options 922 | 923 | local SlowPostText = self.Foreground.Profile[1].Template[TemplateNumber].Assigments.Content:CreateFontString(nil, "OVERLAY") 924 | SlowPostText:SetPoint("TOPLEFT", 200, -200) 925 | SlowPostText:SetFont("Fonts\\FRIZQT__.TTF", 11) 926 | SlowPostText:SetWidth(200) 927 | SlowPostText:SetJustifyH("RIGHT") 928 | SlowPostText:SetText("Slow Post Mode:") 929 | 930 | self.Foreground.Profile[1].Template[TemplateNumber].Assigments.Content.SlowPostCheckbox = CreateFrame("CheckButton", nil, self.Foreground.Profile[1].Template[TemplateNumber].Assigments.Content, "UICheckButtonTemplate") 931 | self.Foreground.Profile[1].Template[TemplateNumber].Assigments.Content.SlowPostCheckbox:SetPoint("TOPLEFT",410,-190) 932 | self.Foreground.Profile[1].Template[TemplateNumber].Assigments.Content.SlowPostCheckbox:SetFrameStrata("LOW") 933 | self.Foreground.Profile[1].Template[TemplateNumber].Assigments.Content.SlowPostCheckbox:SetScript("OnEnter", function() 934 | GameTooltip:SetOwner(HealingAsssignments.Mainframe, "ANCHOR_TOPLEFT"); 935 | GameTooltip:SetText("Slow Posting Mode for Servers with Spam Filter", 1,1,1); 936 | GameTooltip:AddLine("For Example: Nostalrius",1,1,1); 937 | GameTooltip:AddLine("Tweak Value for Better Outcome",1,1,1); 938 | GameTooltip:Show() 939 | end) 940 | self.Foreground.Profile[1].Template[TemplateNumber].Assigments.Content.SlowPostCheckbox:SetScript("OnLeave", function() GameTooltip:Hide() end) 941 | self.Foreground.Profile[1].Template[TemplateNumber].Assigments.Content.SlowPostCheckbox:SetScript("OnClick", function () PlaySound("igMainMenuOptionCheckBoxOn") 942 | if HealingAsssignments.Mainframe.Foreground.Profile[1].Template[TemplateNumber].Assigments.Content.SlowPostCheckbox:GetChecked() == nil then HealingAssignmentsTemplates.Options.SlowPost = nil 943 | elseif HealingAsssignments.Mainframe.Foreground.Profile[1].Template[TemplateNumber].Assigments.Content.SlowPostCheckbox:GetChecked() == 1 then HealingAssignmentsTemplates.Options.SlowPost = 1 end 944 | end) 945 | self.Foreground.Profile[1].Template[TemplateNumber].Assigments.Content.SlowPostCheckbox:SetChecked(HealingAssignmentsTemplates.Options.SlowPost) 946 | 947 | local SlowPostText = self.Foreground.Profile[1].Template[TemplateNumber].Assigments.Content:CreateFontString(nil, "OVERLAY") 948 | SlowPostText:SetPoint("TOPLEFT", 240, -230) 949 | SlowPostText:SetFont("Fonts\\FRIZQT__.TTF", 11) 950 | SlowPostText:SetWidth(200) 951 | SlowPostText:SetJustifyH("RIGHT") 952 | SlowPostText:SetText("Delay in ms :") 953 | 954 | self.Foreground.Profile[1].Template[TemplateNumber].Assigments.Content.SlowPostTextbox = CreateFrame("EditBox", "SlowPostTextboxTextbox", self.Foreground.Profile[1].Template[TemplateNumber].Assigments.Content,"InputBoxTemplate") 955 | self.Foreground.Profile[1].Template[TemplateNumber].Assigments.Content.SlowPostTextbox:SetPoint("TOPLEFT",460,-220) 956 | self.Foreground.Profile[1].Template[TemplateNumber].Assigments.Content.SlowPostTextbox:SetWidth(35) 957 | self.Foreground.Profile[1].Template[TemplateNumber].Assigments.Content.SlowPostTextbox:SetHeight(30) 958 | self.Foreground.Profile[1].Template[TemplateNumber].Assigments.Content.SlowPostTextbox:SetAutoFocus(0) 959 | self.Foreground.Profile[1].Template[TemplateNumber].Assigments.Content.SlowPostTextbox:SetFrameStrata("LOW") 960 | self.Foreground.Profile[1].Template[TemplateNumber].Assigments.Content.SlowPostTextbox:SetMaxLetters(4) 961 | 962 | self.Foreground.Profile[1].Template[TemplateNumber].Assigments.Content.SlowPostTextbox:SetText(HealingAssignmentsTemplates.Options.Delay) 963 | self.Foreground.Profile[1].Template[TemplateNumber].Assigments.Content.SlowPostTextbox:SetNumeric() 964 | self.Foreground.Profile[1].Template[TemplateNumber].Assigments.Content.SlowPostTextbox:SetScript("OnTextChanged", function() 965 | HealingAssignmentsTemplates.Options.Delay = HealingAsssignments.Mainframe.Foreground.Profile[1].Template[TemplateNumber].Assigments.Content.SlowPostTextbox:GetNumber() 966 | end) 967 | 968 | -- whisper configs 969 | local WhisperConfigText = self.Foreground.Profile[1].Template[TemplateNumber].Assigments.Content:CreateFontString(nil, "OVERLAY") 970 | DeathWarningChannelText:SetPoint("TOPLEFT", -70, -290) 971 | DeathWarningChannelText:SetFont("Fonts\\FRIZQT__.TTF", 11) 972 | DeathWarningChannelText:SetWidth(200) 973 | DeathWarningChannelText:SetJustifyH("RIGHT") 974 | DeathWarningChannelText:SetText("Whisper Mode:") 975 | 976 | local WhisperRepostText = self.Foreground.Profile[1].Template[TemplateNumber].Assigments.Content:CreateFontString(nil, "OVERLAY") 977 | WhisperRepostText:SetPoint("TOPLEFT", -30, -310) 978 | WhisperRepostText:SetFont("Fonts\\FRIZQT__.TTF", 11) 979 | WhisperRepostText:SetWidth(200) 980 | WhisperRepostText:SetJustifyH("RIGHT") 981 | WhisperRepostText:SetText("Repost:") 982 | 983 | local WhisperHealText = self.Foreground.Profile[1].Template[TemplateNumber].Assigments.Content:CreateFontString(nil, "OVERLAY") 984 | WhisperHealText:SetPoint("TOPLEFT", 130, -310) 985 | WhisperHealText:SetFont("Fonts\\FRIZQT__.TTF", 11) 986 | WhisperHealText:SetWidth(200) 987 | WhisperHealText:SetJustifyH("RIGHT") 988 | WhisperHealText:SetText("Whisper:") 989 | 990 | self.Foreground.Profile[1].Template[TemplateNumber].Assigments.Content.WhisperRepostCheckbox = CreateFrame("CheckButton", nil, self.Foreground.Profile[1].Template[TemplateNumber].Assigments.Content, "UICheckButtonTemplate") 991 | self.Foreground.Profile[1].Template[TemplateNumber].Assigments.Content.WhisperRepostCheckbox:SetPoint("TOPLEFT",180,-300) 992 | self.Foreground.Profile[1].Template[TemplateNumber].Assigments.Content.WhisperRepostCheckbox:SetFrameStrata("LOW") 993 | self.Foreground.Profile[1].Template[TemplateNumber].Assigments.Content.WhisperRepostCheckbox:SetScript("OnEnter", function() 994 | GameTooltip:SetOwner(HealingAsssignments.Mainframe, "ANCHOR_TOPLEFT"); 995 | GameTooltip:SetText("Enable/Disable Auto-Repost Assignments by whispers.", 1,1,1); 996 | GameTooltip:Show() 997 | end) 998 | self.Foreground.Profile[1].Template[TemplateNumber].Assigments.Content.WhisperRepostCheckbox:SetScript("OnLeave", function() GameTooltip:Hide() end) 999 | self.Foreground.Profile[1].Template[TemplateNumber].Assigments.Content.WhisperRepostCheckbox:SetScript("OnClick", function () PlaySound("igMainMenuOptionCheckBoxOn") 1000 | if HealingAsssignments.Mainframe.Foreground.Profile[1].Template[TemplateNumber].Assigments.Content.WhisperRepostCheckbox:GetChecked() == nil then HealingAssignmentsTemplates.Options.WhisperRepost = nil 1001 | elseif HealingAsssignments.Mainframe.Foreground.Profile[1].Template[TemplateNumber].Assigments.Content.WhisperRepostCheckbox:GetChecked() == 1 then HealingAssignmentsTemplates.Options.WhisperRepost = 1 end 1002 | end) 1003 | self.Foreground.Profile[1].Template[TemplateNumber].Assigments.Content.WhisperRepostCheckbox:SetChecked(HealingAssignmentsTemplates.Options.WhisperRepost) 1004 | 1005 | self.Foreground.Profile[1].Template[TemplateNumber].Assigments.Content.WhisperHealCheckbox = CreateFrame("CheckButton", nil, self.Foreground.Profile[1].Template[TemplateNumber].Assigments.Content, "UICheckButtonTemplate") 1006 | self.Foreground.Profile[1].Template[TemplateNumber].Assigments.Content.WhisperHealCheckbox:SetPoint("TOPLEFT",340,-300) 1007 | self.Foreground.Profile[1].Template[TemplateNumber].Assigments.Content.WhisperHealCheckbox:SetFrameStrata("LOW") 1008 | self.Foreground.Profile[1].Template[TemplateNumber].Assigments.Content.WhisperHealCheckbox:SetScript("OnEnter", function() 1009 | GameTooltip:SetOwner(HealingAsssignments.Mainframe, "ANCHOR_TOPLEFT"); 1010 | GameTooltip:SetText("Enable/Disable Auto-Whisper Assignments by whispers.", 1,1,1); 1011 | GameTooltip:Show() 1012 | end) 1013 | self.Foreground.Profile[1].Template[TemplateNumber].Assigments.Content.WhisperHealCheckbox:SetScript("OnLeave", function() GameTooltip:Hide() end) 1014 | self.Foreground.Profile[1].Template[TemplateNumber].Assigments.Content.WhisperHealCheckbox:SetScript("OnClick", function () PlaySound("igMainMenuOptionCheckBoxOn") 1015 | if HealingAsssignments.Mainframe.Foreground.Profile[1].Template[TemplateNumber].Assigments.Content.WhisperHealCheckbox:GetChecked() == nil then HealingAssignmentsTemplates.Options.WhisperHeal = nil 1016 | elseif HealingAsssignments.Mainframe.Foreground.Profile[1].Template[TemplateNumber].Assigments.Content.WhisperHealCheckbox:GetChecked() == 1 then HealingAssignmentsTemplates.Options.WhisperHeal = 1 end 1017 | end) 1018 | self.Foreground.Profile[1].Template[TemplateNumber].Assigments.Content.WhisperHealCheckbox:SetChecked(HealingAssignmentsTemplates.Options.WhisperHeal) 1019 | 1020 | -- additional healers 1021 | local AdditionHealersText = self.Foreground.Profile[1].Template[TemplateNumber].Assigments.Content:CreateFontString(nil, "OVERLAY") 1022 | AdditionHealersText:SetPoint("TOPLEFT", -70, -340) 1023 | AdditionHealersText:SetFont("Fonts\\FRIZQT__.TTF", 11) 1024 | AdditionHealersText:SetWidth(200) 1025 | AdditionHealersText:SetJustifyH("RIGHT") 1026 | AdditionHealersText:SetText("additional Healers:") 1027 | 1028 | local AdditionHealersMarksText = self.Foreground.Profile[1].Template[TemplateNumber].Assigments.Content:CreateFontString(nil, "OVERLAY") 1029 | AdditionHealersMarksText:SetPoint("TOPLEFT", 70, -340) 1030 | AdditionHealersMarksText:SetFont("Fonts\\FRIZQT__.TTF", 11) 1031 | AdditionHealersMarksText:SetWidth(200) 1032 | AdditionHealersMarksText:SetJustifyH("RIGHT") 1033 | AdditionHealersMarksText:SetText("Raid Markers") 1034 | 1035 | self.Foreground.Profile[1].Template[TemplateNumber].Assigments.Content.AdditionalHealersCheckbox = CreateFrame("CheckButton", nil, self.Foreground.Profile[1].Template[TemplateNumber].Assigments.Content, "UICheckButtonTemplate") 1036 | self.Foreground.Profile[1].Template[TemplateNumber].Assigments.Content.AdditionalHealersCheckbox:SetPoint("TOPLEFT",150,-330) 1037 | self.Foreground.Profile[1].Template[TemplateNumber].Assigments.Content.AdditionalHealersCheckbox:SetFrameStrata("LOW") 1038 | self.Foreground.Profile[1].Template[TemplateNumber].Assigments.Content.AdditionalHealersCheckbox:SetScript("OnEnter", function() 1039 | GameTooltip:SetOwner(HealingAsssignments.Mainframe, "ANCHOR_TOPLEFT"); 1040 | GameTooltip:SetText("Add Raid Markers to Healer Dropdowns.", 1,1,1); 1041 | GameTooltip:Show() 1042 | end) 1043 | self.Foreground.Profile[1].Template[TemplateNumber].Assigments.Content.AdditionalHealersCheckbox:SetScript("OnLeave", function() GameTooltip:Hide() end) 1044 | self.Foreground.Profile[1].Template[TemplateNumber].Assigments.Content.AdditionalHealersCheckbox:SetScript("OnClick", function () PlaySound("igMainMenuOptionCheckBoxOn") 1045 | if HealingAsssignments.Mainframe.Foreground.Profile[1].Template[TemplateNumber].Assigments.Content.AdditionalHealersCheckbox:GetChecked() == nil then HealingAssignmentsTemplates.Options.AdditionHealers = nil 1046 | elseif HealingAsssignments.Mainframe.Foreground.Profile[1].Template[TemplateNumber].Assigments.Content.AdditionalHealersCheckbox:GetChecked() == 1 then HealingAssignmentsTemplates.Options.AdditionHealers = 1 end 1047 | end) 1048 | self.Foreground.Profile[1].Template[TemplateNumber].Assigments.Content.AdditionalHealersCheckbox:SetChecked(HealingAssignmentsTemplates.Options.AdditionHealers) 1049 | 1050 | -- bottom 1051 | local BottomText = self.Foreground.Profile[1].Template[TemplateNumber].Assigments.Content:CreateFontString(nil, "OVERLAY") 1052 | BottomText:SetPoint("TOPLEFT", 150, -370) 1053 | BottomText:SetFont("Fonts\\FRIZQT__.TTF", 11) 1054 | BottomText:SetJustifyH("CENTER") 1055 | BottomText:SetText("Version "..VHA_VERSION.." - by Renew @ vanillagaming.org") 1056 | BottomText:SetTextColor(1, 1, 1,0.5) 1057 | 1058 | end 1059 | 1060 | -- http://www.wowinterface.com/forums/archive/index.php/t-16339.html 1061 | function HealingAsssignments.Minimap:CreateMinimapIcon() 1062 | local Moving = false 1063 | 1064 | function self:OnMouseUp() 1065 | Moving = false; 1066 | end 1067 | 1068 | function self:OnMouseDown() 1069 | PlaySound("igMainMenuOptionCheckBoxOn") 1070 | Moving = false; 1071 | if (arg1 == "LeftButton") then 1072 | if HealingAsssignments.Mainframe:IsVisible() then HealingAsssignments.Mainframe:Hide() 1073 | else HealingAsssignments.Mainframe:Show() end 1074 | elseif (arg1 == "RightButton") then 1075 | HealingAsssignments:PostAssignments() 1076 | else Moving = true; 1077 | end 1078 | end 1079 | 1080 | function self:OnUpdate() 1081 | if Moving == true then 1082 | local xpos,ypos = GetCursorPosition(); 1083 | local xmin,ymin = Minimap:GetLeft(), Minimap:GetBottom(); 1084 | xpos = xmin-xpos/UIParent:GetScale()+70; 1085 | ypos = ypos/UIParent:GetScale()-ymin-70; 1086 | local RHAIconPos = math.deg(math.atan2(ypos,xpos)); 1087 | if (RHAIconPos < 0) then 1088 | RHAIconPos = RHAIconPos + 360 1089 | end 1090 | HealingAssignmentsTemplates.Options.MinimapX = 54 - (78 * cos(RHAIconPos)); 1091 | HealingAssignmentsTemplates.Options.MinimapY = (78 * sin(RHAIconPos)) - 55; 1092 | 1093 | HealingAsssignments.Minimap:SetPoint( 1094 | "TOPLEFT", 1095 | "Minimap", 1096 | "TOPLEFT", 1097 | HealingAssignmentsTemplates.Options.MinimapX, 1098 | HealingAssignmentsTemplates.Options.MinimapY); 1099 | end 1100 | end 1101 | 1102 | function self:OnEnter() 1103 | GameTooltip:SetOwner(HealingAsssignments.Minimap, "ANCHOR_LEFT"); 1104 | GameTooltip:SetText("Vanilla Healing Assignments"); 1105 | GameTooltip:AddLine("Left Click to show/hide menu.",1,1,1); 1106 | GameTooltip:AddLine("Right Click to post open assignment window.",1,1,1); 1107 | GameTooltip:AddLine("Middle Button Click to move Icon.",1,1,1); 1108 | GameTooltip:Show() 1109 | end 1110 | 1111 | function self:OnLeave() 1112 | GameTooltip:Hide() 1113 | end 1114 | 1115 | self:SetFrameStrata("LOW") 1116 | self:SetWidth(31) -- Set these to whatever height/width is needed 1117 | self:SetHeight(31) -- for your Texture 1118 | self:SetPoint("CENTER", -75, -20) 1119 | 1120 | self.Button = CreateFrame("Button",nil,self) 1121 | --self.Button:SetFrameStrata('HIGH') 1122 | self.Button:SetPoint("CENTER",0,0) 1123 | self.Button:SetWidth(31) 1124 | self.Button:SetHeight(31) 1125 | self.Button:SetFrameLevel(8) 1126 | self.Button:SetHighlightTexture("Interface\\Minimap\\UI-Minimap-ZoomButton-Highlight") 1127 | self.Button:SetScript("OnMouseUp", self.OnMouseUp) 1128 | self.Button:SetScript("OnMouseDown", self.OnMouseDown) 1129 | self.Button:SetScript("OnUpdate", self.OnUpdate) 1130 | self.Button:SetScript("OnEnter", self.OnEnter) 1131 | self.Button:SetScript("OnLeave", self.OnLeave) 1132 | 1133 | local overlay = self:CreateTexture(nil, 'OVERLAY',self) 1134 | overlay:SetWidth(53) 1135 | overlay:SetHeight(53) 1136 | overlay:SetTexture("Interface\\Minimap\\MiniMap-TrackingBorder") 1137 | overlay:SetPoint('TOPLEFT',0,0) 1138 | 1139 | local icon = self:CreateTexture(nil, "BACKGROUND") 1140 | icon:SetWidth(20) 1141 | icon:SetHeight(20) 1142 | icon:SetTexture("Interface\\AddOns\\VanillaHealingAssignments\\Media\\Icon") 1143 | icon:SetTexCoord(0.18, 0.82, 0.18, 0.82) 1144 | icon:SetPoint('CENTER', 0, 0) 1145 | self.icon = icon 1146 | 1147 | HealingAsssignments.Minimap:SetPoint( 1148 | "TOPLEFT", 1149 | "Minimap", 1150 | "TOPLEFT", 1151 | HealingAssignmentsTemplates.Options.MinimapX, 1152 | HealingAssignmentsTemplates.Options.MinimapY) 1153 | 1154 | end 1155 | 1156 | function HealingAsssignments.Mainframe:SetHealerChannelString() 1157 | 1158 | local channelChar = self.HealerChannelEditBox:GetText(); 1159 | if channelChar == "s" or channelChar == "S" then self.HealerChannelSelectedFontString:SetText("Say"); 1160 | elseif channelChar == "r" or channelChar == "R" then self.HealerChannelSelectedFontString:SetText("Raid"); 1161 | elseif channelChar == "p" or channelChar == "P" then self.HealerChannelSelectedFontString:SetText("Group"); 1162 | elseif channelChar == "g" or channelChar == "G" then self.HealerChannelSelectedFontString:SetText("Guild"); 1163 | elseif channelChar == "e" or channelChar == "E" then self.HealerChannelSelectedFontString:SetText("Emote"); 1164 | elseif channelChar == "rw" or channelChar == "RW" then self.HealerChannelSelectedFontString:SetText("Raid Warning"); 1165 | else local id, name = GetChannelName(channelChar); self.HealerChannelSelectedFontString:SetText(name) 1166 | end 1167 | 1168 | local OptionsFrameNum = 16; 1169 | local channelChar = HealingAsssignments.Mainframe.Foreground.Profile[1].Template[OptionsFrameNum].Assigments.Content.DeathWarningChannelTextbox:GetText() 1170 | if channelChar == "s" or channelChar == "S" then HealingAsssignments.Mainframe.Foreground.Profile[1].Template[OptionsFrameNum].Assigments.Content.ColoredPostingChannelText:SetText("Say"); 1171 | elseif channelChar == "r" or channelChar == "R" then HealingAsssignments.Mainframe.Foreground.Profile[1].Template[OptionsFrameNum].Assigments.Content.ColoredPostingChannelText:SetText("Raid"); 1172 | elseif channelChar == "p" or channelChar == "P" then HealingAsssignments.Mainframe.Foreground.Profile[1].Template[OptionsFrameNum].Assigments.Content.ColoredPostingChannelText:SetText("Group"); 1173 | elseif channelChar == "g" or channelChar == "G" then HealingAsssignments.Mainframe.Foreground.Profile[1].Template[OptionsFrameNum].Assigments.Content.ColoredPostingChannelText:SetText("Guild"); 1174 | elseif channelChar == "e" or channelChar == "E" then HealingAsssignments.Mainframe.Foreground.Profile[1].Template[OptionsFrameNum].Assigments.Content.ColoredPostingChannelText:SetText("Emote"); 1175 | elseif channelChar == "rw" or channelChar == "RW" then HealingAsssignments.Mainframe.Foreground.Profile[1].Template[OptionsFrameNum].Assigments.Content.ColoredPostingChannelText:SetText("Raid Warning"); 1176 | else local id, name = GetChannelName(channelChar); HealingAsssignments.Mainframe.Foreground.Profile[1].Template[OptionsFrameNum].Assigments.Content.ColoredPostingChannelText:SetText(name) 1177 | end 1178 | end 1179 | -- Adds a Template to Template Frame 1180 | function HealingAsssignments.Mainframe:AddTemplate() 1181 | 1182 | local TemplateNumber = 16; 1183 | -- check whats next free Template Space 1184 | for i=1,15 do 1185 | if not self.Foreground.Profile[HealingAsssignments.Mainframe.ActiveProfile].Template[i] then 1186 | TemplateNumber = i; break 1187 | end; 1188 | 1189 | end 1190 | -- create Template Frame 1191 | if TemplateNumber <= 15 then 1192 | HealingAssignmentsTemplates.Profile[HealingAsssignments.Mainframe.ActiveProfile].Template[TemplateNumber] = {} 1193 | self.Foreground.Profile[HealingAsssignments.Mainframe.ActiveProfile].Template[TemplateNumber] = {} 1194 | --DEFAULT_CHAT_FRAME:AddMessage(TemplateNumber) 1195 | local name = self.Background.TemplateOption.Editbox:GetText() 1196 | -- create Template 1197 | HealingAssignmentsTemplates.Profile[HealingAsssignments.Mainframe.ActiveProfile].Template[TemplateNumber].Name = name -- Save this to global 1198 | self.Foreground.Profile[HealingAsssignments.Mainframe.ActiveProfile].Template[TemplateNumber].Name = name; 1199 | self.Foreground.Profile[HealingAsssignments.Mainframe.ActiveProfile].Template[TemplateNumber].Menu = CreateFrame("Frame", nil, self) 1200 | self.Foreground.Profile[HealingAsssignments.Mainframe.ActiveProfile].Template[TemplateNumber].Menu:SetFrameStrata("MEDIUM") 1201 | self.Foreground.Profile[HealingAsssignments.Mainframe.ActiveProfile].Template[TemplateNumber].Menu:SetWidth(130) -- Set these to whatever height/width is needed 1202 | self.Foreground.Profile[HealingAsssignments.Mainframe.ActiveProfile].Template[TemplateNumber].Menu:SetHeight(20) -- for your Texture 1203 | self.Foreground.Profile[HealingAsssignments.Mainframe.ActiveProfile].Template[TemplateNumber].Menu:SetPoint("TOPLEFT", self, "TOPLEFT",23, (TemplateNumber * (-20)) -85) 1204 | self.Foreground.Profile[HealingAsssignments.Mainframe.ActiveProfile].Template[TemplateNumber].Menu.colorBg = self.Foreground.Profile[HealingAsssignments.Mainframe.ActiveProfile].Template[TemplateNumber].Menu:CreateTexture(nil, "BACKGROUND") 1205 | self.Foreground.Profile[HealingAsssignments.Mainframe.ActiveProfile].Template[TemplateNumber].Menu.colorBg:SetAllPoints(self.Foreground.Profile[HealingAsssignments.Mainframe.ActiveProfile].Template[TemplateNumber].Menu) 1206 | self.Foreground.Profile[HealingAsssignments.Mainframe.ActiveProfile].Template[TemplateNumber].Menu.colorBg:SetTexture(0, 0, 0, 0.3) 1207 | 1208 | self.Foreground.Profile[HealingAsssignments.Mainframe.ActiveProfile].Template[TemplateNumber].Menu.ScriptButton = CreateFrame("Button",nil,self.Foreground.Profile[HealingAsssignments.Mainframe.ActiveProfile].Template[TemplateNumber].Menu) 1209 | self.Foreground.Profile[HealingAsssignments.Mainframe.ActiveProfile].Template[TemplateNumber].Menu.ScriptButton:SetFrameStrata("LOW") 1210 | self.Foreground.Profile[HealingAsssignments.Mainframe.ActiveProfile].Template[TemplateNumber].Menu.ScriptButton:SetWidth(130) 1211 | self.Foreground.Profile[HealingAsssignments.Mainframe.ActiveProfile].Template[TemplateNumber].Menu.ScriptButton:SetHeight(20) 1212 | self.Foreground.Profile[HealingAsssignments.Mainframe.ActiveProfile].Template[TemplateNumber].Menu.ScriptButton:SetPoint("TOPLEFT", self, "TOPLEFT",23, (TemplateNumber * (-20)) -85) 1213 | self.Foreground.Profile[HealingAsssignments.Mainframe.ActiveProfile].Template[TemplateNumber].Menu.ScriptButton:SetScript("OnClick", function() PlaySound("igMainMenuOptionCheckBoxOn") 1214 | HealingAsssignments.Mainframe:SelectActiveTemplate(TemplateNumber) 1215 | end) 1216 | 1217 | -- String 1218 | self.Foreground.Profile[HealingAsssignments.Mainframe.ActiveProfile].Template[TemplateNumber].Menu.FontString = self.Foreground.Profile[HealingAsssignments.Mainframe.ActiveProfile].Template[TemplateNumber].Menu:CreateFontString(nil, "OVERLAY") 1219 | self.Foreground.Profile[HealingAsssignments.Mainframe.ActiveProfile].Template[TemplateNumber].Menu.FontString:SetPoint("TOPLEFT", self.Foreground.Profile[HealingAsssignments.Mainframe.ActiveProfile].Template[TemplateNumber].Menu, "TOPLEFT", 5, -3) 1220 | self.Foreground.Profile[HealingAsssignments.Mainframe.ActiveProfile].Template[TemplateNumber].Menu.FontString:SetFont("Fonts\\FRIZQT__.TTF", 11) 1221 | self.Foreground.Profile[HealingAsssignments.Mainframe.ActiveProfile].Template[TemplateNumber].Menu.FontString:SetWidth(200) 1222 | self.Foreground.Profile[HealingAsssignments.Mainframe.ActiveProfile].Template[TemplateNumber].Menu.FontString:SetJustifyH("LEFT") 1223 | self.Foreground.Profile[HealingAsssignments.Mainframe.ActiveProfile].Template[TemplateNumber].Menu.FontString:SetText(HealingAssignmentsTemplates.Profile[HealingAsssignments.Mainframe.ActiveProfile].Template[TemplateNumber].Name) 1224 | 1225 | -- Button 1226 | self.Foreground.Profile[HealingAsssignments.Mainframe.ActiveProfile].Template[TemplateNumber].Menu.Button = CreateFrame("Button",nil,self.Foreground.Profile[HealingAsssignments.Mainframe.ActiveProfile].Template[TemplateNumber].Menu,"UIPanelButtonTemplate") 1227 | self.Foreground.Profile[HealingAsssignments.Mainframe.ActiveProfile].Template[TemplateNumber].Menu.Button:SetPoint("TOPLEFT",133,0) 1228 | self.Foreground.Profile[HealingAsssignments.Mainframe.ActiveProfile].Template[TemplateNumber].Menu.Button:SetFrameStrata("LOW") 1229 | self.Foreground.Profile[HealingAsssignments.Mainframe.ActiveProfile].Template[TemplateNumber].Menu.Button:SetWidth(20) 1230 | self.Foreground.Profile[HealingAsssignments.Mainframe.ActiveProfile].Template[TemplateNumber].Menu.Button:SetHeight(20) 1231 | self.Foreground.Profile[HealingAsssignments.Mainframe.ActiveProfile].Template[TemplateNumber].Menu.Button:SetText("X") 1232 | self.Foreground.Profile[HealingAsssignments.Mainframe.ActiveProfile].Template[TemplateNumber].Menu.Button:SetScript("OnClick", function() PlaySound("igMainMenuOptionCheckBoxOn") 1233 | HealingAsssignments.Mainframe:OpenTemplateDeleteOptions(TemplateNumber) 1234 | end) 1235 | 1236 | -- create scrollframe! 1237 | HealingAsssignments.Mainframe:AddAssignmentFrame(HealingAsssignments.Mainframe.ActiveProfile,TemplateNumber) 1238 | HealingAssignmentsTemplates.Profile[HealingAsssignments.Mainframe.ActiveProfile].Template[TemplateNumber].TankNum = 0; 1239 | HealingAssignmentsTemplates.Profile[HealingAsssignments.Mainframe.ActiveProfile].Template[TemplateNumber].TankHealer = {} 1240 | 1241 | end 1242 | end 1243 | 1244 | -- Function to Create the Assignment Scrolling Frame 1245 | function HealingAsssignments.Mainframe:AddAssignmentFrame(ProfileNum,TemplateNum) 1246 | 1247 | -- create scrollframe 1248 | -- Assignment Scrollframe 1249 | if TemplateNum == 16 then self.Foreground.Profile[ProfileNum].Template[TemplateNum] = {} end -- for options menu 1250 | if TemplateNum ~= 16 then 1251 | self.Foreground.Profile[ProfileNum].Template[TemplateNum].Assigments = CreateFrame("Frame",nil,self) -- Assignments Frame 1252 | self.Foreground.Profile[ProfileNum].Template[TemplateNum].Assigments:SetFrameStrata("LOW") 1253 | self.Foreground.Profile[ProfileNum].Template[TemplateNum].Assigments:SetWidth(723) -- Set these to whatever height/width is needed 1254 | self.Foreground.Profile[ProfileNum].Template[TemplateNum].Assigments:SetHeight(380) -- for your Texture 1255 | self.Foreground.Profile[ProfileNum].Template[TemplateNum].Assigments:SetPoint("TOPLEFT", self, "TOPLEFT", 237, -130) 1256 | self.Foreground.Profile[ProfileNum].Template[TemplateNum].Assigments:SetScale(0.8) 1257 | self.Foreground.Profile[ProfileNum].Template[TemplateNum].Assigments:EnableMouseWheel(1) 1258 | self.Foreground.Profile[ProfileNum].Template[TemplateNum].Assigments:SetScript("OnMouseWheel", function() 1259 | local value = self.Foreground.Profile[ProfileNum].Template[TemplateNum].Assigments.Scrollbar:GetValue() 1260 | self.Foreground.Profile[ProfileNum].Template[TemplateNum].Assigments.Scrollbar:SetValue(value-(arg1*10)) 1261 | end) 1262 | 1263 | self.Foreground.Profile[ProfileNum].Template[TemplateNum].Assigments.Scrollframe = CreateFrame("ScrollFrame", nil, self.Foreground.Profile[ProfileNum].Template[TemplateNum].Assigments) 1264 | self.Foreground.Profile[ProfileNum].Template[TemplateNum].Assigments.Scrollframe:SetPoint("TOPLEFT", 0, 0) 1265 | self.Foreground.Profile[ProfileNum].Template[TemplateNum].Assigments.Scrollframe:SetPoint("BOTTOMRIGHT", -15, 0) 1266 | 1267 | --colored background for testing 1268 | --self.Foreground.Profile[ProfileNum].Template[TemplateNum].Assigments.Scrollframe.colorBg = self.Foreground.Profile[ProfileNum].Template[TemplateNum].Assigments.Scrollframe:CreateTexture(nil, "BACKGROUND") 1269 | --self.Foreground.Profile[ProfileNum].Template[TemplateNum].Assigments.Scrollframe.colorBg:SetAllPoints(self.Foreground.Profile[ProfileNum].Template[TemplateNum].Assigments.Scrollframe) 1270 | --self.Foreground.Profile[ProfileNum].Template[TemplateNum].Assigments.Scrollframe.colorBg:SetTexture(1, 1, 1, 0.5) 1271 | 1272 | self.Foreground.Profile[ProfileNum].Template[TemplateNum].Assigments.Scrollbar = CreateFrame("Slider", nil, self.Foreground.Profile[ProfileNum].Template[TemplateNum].Assigments, "UIPanelScrollBarTemplate") 1273 | self.Foreground.Profile[ProfileNum].Template[TemplateNum].Assigments.Scrollbar:SetOrientation('VERTICAL') 1274 | self.Foreground.Profile[ProfileNum].Template[TemplateNum].Assigments.Scrollbar:SetWidth(16) 1275 | self.Foreground.Profile[ProfileNum].Template[TemplateNum].Assigments.Scrollbar:SetHeight(346) 1276 | self.Foreground.Profile[ProfileNum].Template[TemplateNum].Assigments.Scrollbar:SetPoint("TOPLEFT",690,-17) 1277 | self.Foreground.Profile[ProfileNum].Template[TemplateNum].Assigments.Scrollbar:SetMinMaxValues(0, 0) 1278 | self.Foreground.Profile[ProfileNum].Template[TemplateNum].Assigments.Scrollbar:SetValueStep(1) 1279 | 1280 | self.Foreground.Profile[ProfileNum].Template[TemplateNum].Assigments.Scrollbar:SetScript("OnValueChanged", function() 1281 | local value = self.Foreground.Profile[ProfileNum].Template[TemplateNum].Assigments.Scrollbar:GetValue() 1282 | self.Foreground.Profile[ProfileNum].Template[TemplateNum].Assigments.Scrollframe:SetVerticalScroll(value) 1283 | end) 1284 | 1285 | self.Foreground.Profile[ProfileNum].Template[TemplateNum].Assigments.Content = CreateFrame("Frame", nil, self.Foreground.Profile[ProfileNum].Template[TemplateNum].Assigments.Scrollframe) 1286 | self.Foreground.Profile[ProfileNum].Template[TemplateNum].Assigments.Content:SetWidth(565) -- Set these to whatever height/width is needed -- 128x128 before // watch for error! 1287 | self.Foreground.Profile[ProfileNum].Template[TemplateNum].Assigments.Content:SetHeight(300) -- for your Texture 1288 | self.Foreground.Profile[ProfileNum].Template[TemplateNum].Assigments.Scrollframe:SetScrollChild(self.Foreground.Profile[ProfileNum].Template[TemplateNum].Assigments.Content) 1289 | 1290 | self.Foreground.Profile[ProfileNum].Template[TemplateNum].Assigments:Hide() 1291 | 1292 | else 1293 | self.Foreground.Profile[ProfileNum].Template[TemplateNum].Assigments = CreateFrame("Frame",nil,self) -- Assignments Frame 1294 | self.Foreground.Profile[ProfileNum].Template[TemplateNum].Assigments:SetFrameStrata("LOW") 1295 | self.Foreground.Profile[ProfileNum].Template[TemplateNum].Assigments:SetWidth(565) -- Set these to whatever height/width is needed 1296 | self.Foreground.Profile[ProfileNum].Template[TemplateNum].Assigments:SetHeight(300) -- for your Texture 1297 | self.Foreground.Profile[ProfileNum].Template[TemplateNum].Assigments:SetPoint("TOPLEFT", self, "TOPLEFT", 190, -105) 1298 | self.Foreground.Profile[ProfileNum].Template[TemplateNum].Assigments:EnableMouseWheel(1) 1299 | self.Foreground.Profile[ProfileNum].Template[TemplateNum].Assigments:SetScript("OnMouseWheel", function() 1300 | local value = self.Foreground.Profile[ProfileNum].Template[TemplateNum].Assigments.Scrollbar:GetValue() 1301 | self.Foreground.Profile[ProfileNum].Template[TemplateNum].Assigments.Scrollbar:SetValue(value-(arg1*10)) 1302 | end) 1303 | 1304 | self.Foreground.Profile[ProfileNum].Template[TemplateNum].Assigments.Scrollframe = CreateFrame("ScrollFrame", nil, self.Foreground.Profile[ProfileNum].Template[TemplateNum].Assigments) 1305 | self.Foreground.Profile[ProfileNum].Template[TemplateNum].Assigments.Scrollframe:SetPoint("TOPLEFT", 0, 0) 1306 | self.Foreground.Profile[ProfileNum].Template[TemplateNum].Assigments.Scrollframe:SetPoint("BOTTOMRIGHT", -15, 0) 1307 | 1308 | self.Foreground.Profile[ProfileNum].Template[TemplateNum].Assigments.Scrollbar = CreateFrame("Slider", nil, self.Foreground.Profile[ProfileNum].Template[TemplateNum].Assigments, "UIPanelScrollBarTemplate") 1309 | self.Foreground.Profile[ProfileNum].Template[TemplateNum].Assigments.Scrollbar:SetOrientation('VERTICAL') 1310 | self.Foreground.Profile[ProfileNum].Template[TemplateNum].Assigments.Scrollbar:SetWidth(16) 1311 | self.Foreground.Profile[ProfileNum].Template[TemplateNum].Assigments.Scrollbar:SetHeight(270) 1312 | self.Foreground.Profile[ProfileNum].Template[TemplateNum].Assigments.Scrollbar:SetPoint("TOPLEFT",550,-16) 1313 | self.Foreground.Profile[ProfileNum].Template[TemplateNum].Assigments.Scrollbar:SetMinMaxValues(0, 0) 1314 | self.Foreground.Profile[ProfileNum].Template[TemplateNum].Assigments.Scrollbar:SetValueStep(1) 1315 | 1316 | self.Foreground.Profile[ProfileNum].Template[TemplateNum].Assigments.Scrollbar:SetScript("OnValueChanged", function() 1317 | local value = self.Foreground.Profile[ProfileNum].Template[TemplateNum].Assigments.Scrollbar:GetValue() 1318 | self.Foreground.Profile[ProfileNum].Template[TemplateNum].Assigments.Scrollframe:SetVerticalScroll(value) 1319 | end) 1320 | 1321 | self.Foreground.Profile[ProfileNum].Template[TemplateNum].Assigments.Content = CreateFrame("Frame", nil, self.Foreground.Profile[ProfileNum].Template[TemplateNum].Assigments.Scrollframe) 1322 | self.Foreground.Profile[ProfileNum].Template[TemplateNum].Assigments.Content:SetWidth(565) -- Set these to whatever height/width is needed -- 128x128 before // watch for error! 1323 | self.Foreground.Profile[ProfileNum].Template[TemplateNum].Assigments.Content:SetHeight(300) -- for your Texture 1324 | self.Foreground.Profile[ProfileNum].Template[TemplateNum].Assigments.Scrollframe:SetScrollChild(self.Foreground.Profile[ProfileNum].Template[TemplateNum].Assigments.Content) 1325 | 1326 | self.Foreground.Profile[ProfileNum].Template[TemplateNum].Assigments:Hide() 1327 | 1328 | end 1329 | 1330 | 1331 | end 1332 | 1333 | -- Function to Open the Template Creation Menu 1334 | function HealingAsssignments.Mainframe:OpenTemplateOptions() 1335 | 1336 | local TemplateNumber = 16; 1337 | for i=1,15 do 1338 | if not self.Foreground.Profile[HealingAsssignments.Mainframe.ActiveProfile].Template[i] then 1339 | TemplateNumber = i; break 1340 | end; 1341 | 1342 | end 1343 | if TemplateNumber <= 15 then 1344 | self.Background.TemplateOption.Editbox:SetText("Template "..TemplateNumber) 1345 | self.Background.TemplateOption:Show() 1346 | end 1347 | end 1348 | 1349 | -- Function to Open the Template Delete Menu 1350 | function HealingAsssignments.Mainframe:OpenTemplateDeleteOptions(TamplateNum) 1351 | self.TemplateDeleteOptionText2FontString:SetText(HealingAsssignments.Mainframe.Foreground.Profile[HealingAsssignments.Mainframe.ActiveProfile].Template[TamplateNum].Menu.FontString:GetText()) 1352 | HealingAsssignments.Mainframe.Background.TemplateDeleteOption:Show() 1353 | HealingAsssignments.Mainframe.Background.TemplateDeleteOption.DeleteButton:SetScript("OnClick", function() PlaySound("igMainMenuOptionCheckBoxOn") 1354 | HealingAsssignments.Mainframe:DeleteTemplate(TamplateNum); HealingAsssignments.Mainframe.Background.TemplateDeleteOption:Hide() end) 1355 | end 1356 | 1357 | -- Function to load and create the Dynamic Frames 1358 | function HealingAsssignments.Mainframe:LoadTemplates() 1359 | for j=1,11 do 1360 | for i=1,15 do 1361 | local TemplateNumber = i 1362 | local ProfileNumber = j 1363 | if HealingAssignmentsTemplates.Profile[ProfileNumber].Template[TemplateNumber] ~= nil then 1364 | 1365 | self.Foreground.Profile[ProfileNumber].Template[TemplateNumber] = {} 1366 | self.Foreground.Profile[ProfileNumber].Template[TemplateNumber].Menu = CreateFrame("Frame", nil, self) 1367 | self.Foreground.Profile[ProfileNumber].Template[TemplateNumber].Menu:SetFrameStrata("MEDIUM") 1368 | self.Foreground.Profile[ProfileNumber].Template[TemplateNumber].Menu:SetWidth(130) -- Set these to whatever height/width is needed 1369 | self.Foreground.Profile[ProfileNumber].Template[TemplateNumber].Menu:SetHeight(20) -- for your Texture 1370 | self.Foreground.Profile[ProfileNumber].Template[TemplateNumber].Menu:SetPoint("TOPLEFT", self, "TOPLEFT",23, (TemplateNumber * (-20)) -85) 1371 | self.Foreground.Profile[ProfileNumber].Template[TemplateNumber].Menu.colorBg = self.Foreground.Profile[ProfileNumber].Template[TemplateNumber].Menu:CreateTexture(nil, "BACKGROUND") 1372 | self.Foreground.Profile[ProfileNumber].Template[TemplateNumber].Menu.colorBg:SetAllPoints(self.Foreground.Profile[ProfileNumber].Template[TemplateNumber].Menu) 1373 | self.Foreground.Profile[ProfileNumber].Template[TemplateNumber].Menu.colorBg:SetTexture(0, 0, 0, 0.3) 1374 | 1375 | self.Foreground.Profile[ProfileNumber].Template[TemplateNumber].Menu.ScriptButton = CreateFrame("Button",nil,self.Foreground.Profile[ProfileNumber].Template[TemplateNumber].Menu) 1376 | self.Foreground.Profile[ProfileNumber].Template[TemplateNumber].Menu.ScriptButton:SetFrameStrata("LOW") 1377 | self.Foreground.Profile[ProfileNumber].Template[TemplateNumber].Menu.ScriptButton:SetWidth(130) 1378 | self.Foreground.Profile[ProfileNumber].Template[TemplateNumber].Menu.ScriptButton:SetHeight(20) 1379 | self.Foreground.Profile[ProfileNumber].Template[TemplateNumber].Menu.ScriptButton:SetPoint("TOPLEFT", self, "TOPLEFT",23, (TemplateNumber * (-20)) -85) 1380 | self.Foreground.Profile[ProfileNumber].Template[TemplateNumber].Menu.ScriptButton:SetScript("OnClick", function() 1381 | HealingAsssignments.Mainframe:SelectActiveTemplate(TemplateNumber) 1382 | end) 1383 | 1384 | -- String 1385 | self.Foreground.Profile[ProfileNumber].Template[TemplateNumber].Menu.FontString = self.Foreground.Profile[ProfileNumber].Template[TemplateNumber].Menu:CreateFontString(nil, "OVERLAY") 1386 | self.Foreground.Profile[ProfileNumber].Template[TemplateNumber].Menu.FontString:SetPoint("TOPLEFT", self.Foreground.Profile[ProfileNumber].Template[TemplateNumber].Menu, "TOPLEFT", 5, -3) 1387 | self.Foreground.Profile[ProfileNumber].Template[TemplateNumber].Menu.FontString:SetFont("Fonts\\FRIZQT__.TTF", 11) 1388 | self.Foreground.Profile[ProfileNumber].Template[TemplateNumber].Menu.FontString:SetWidth(200) 1389 | self.Foreground.Profile[ProfileNumber].Template[TemplateNumber].Menu.FontString:SetJustifyH("LEFT") 1390 | self.Foreground.Profile[ProfileNumber].Template[TemplateNumber].Menu.FontString:SetText(HealingAssignmentsTemplates.Profile[ProfileNumber].Template[TemplateNumber].Name) 1391 | 1392 | -- Button 1393 | self.Foreground.Profile[ProfileNumber].Template[TemplateNumber].Menu.Button = CreateFrame("Button",nil,self.Foreground.Profile[ProfileNumber].Template[TemplateNumber].Menu,"UIPanelButtonTemplate") 1394 | self.Foreground.Profile[ProfileNumber].Template[TemplateNumber].Menu.Button:SetPoint("TOPLEFT",133,0) 1395 | self.Foreground.Profile[ProfileNumber].Template[TemplateNumber].Menu.Button:SetFrameStrata("LOW") 1396 | self.Foreground.Profile[ProfileNumber].Template[TemplateNumber].Menu.Button:SetWidth(20) 1397 | self.Foreground.Profile[ProfileNumber].Template[TemplateNumber].Menu.Button:SetHeight(20) 1398 | self.Foreground.Profile[ProfileNumber].Template[TemplateNumber].Menu.Button:SetText("X") 1399 | self.Foreground.Profile[ProfileNumber].Template[TemplateNumber].Menu.Button:SetScript("OnClick", function() 1400 | HealingAsssignments.Mainframe:OpenTemplateDeleteOptions(TemplateNumber) 1401 | end) 1402 | -- create scrollframe! 1403 | HealingAsssignments.Mainframe:AddAssignmentFrame(ProfileNumber,TemplateNumber) 1404 | -- create Dropdowns! 1405 | HealingAsssignments.Mainframe:LoadDropdown(ProfileNumber,TemplateNumber) 1406 | end 1407 | end 1408 | end 1409 | end 1410 | 1411 | -- Function to determinate and set the active Template 1412 | -- TemplateNum is the clicked Number of Template 1413 | function HealingAsssignments.Mainframe:SelectActiveTemplate(TemplateNum,ProfileNumber) 1414 | local ProfileNum = HealingAsssignments.Mainframe.ActiveProfile 1415 | if ProfileNumber then ProfileNum = ProfileNumber end 1416 | 1417 | if self.Foreground.Profile[ProfileNum].Template[TemplateNum] then 1418 | for i=1,15 do 1419 | if self.Foreground.Profile[HealingAsssignments.Mainframe.ActiveProfile].Template[i] then 1420 | local TemplateNumber = i; 1421 | self.Foreground.Profile[HealingAsssignments.Mainframe.ActiveProfile].Template[TemplateNumber].Menu.colorBg:SetTexture(0, 0, 0, 0.3) 1422 | self.Foreground.Profile[HealingAsssignments.Mainframe.ActiveProfile].Template[TemplateNumber].Assigments:Hide() 1423 | end 1424 | end 1425 | 1426 | if TemplateNum <= 15 then 1427 | self.Foreground.Profile[HealingAsssignments.Mainframe.ActiveProfile].Template[TemplateNum].Menu.colorBg:SetTexture(1, 1, 1, 0.2); self.Foreground.Profile[1].Template[16].Assigments:Hide() 1428 | self.ActiveFrameBuffer = TemplateNum end -- excluse if options 1429 | 1430 | self.ActiveFrame = TemplateNum 1431 | self.Foreground.Profile[ProfileNum].Template[TemplateNum].Assigments:Show() 1432 | if TemplateNum <= 15 then self:SetScrollFrameHeight(HealingAsssignments.Mainframe.ActiveProfile,TemplateNum) end 1433 | HealingAsssignments:UpdateRaidDataBase() 1434 | 1435 | if TemplateNum <= 15 then 1436 | self.AddTankButton:Enable() 1437 | self.AddHealerButton:Enable() 1438 | self.ResetButton:Enable() 1439 | else 1440 | self.AddTankButton:Disable() 1441 | self.AddHealerButton:Disable() 1442 | self.ResetButton:Disable() 1443 | end 1444 | 1445 | else 1446 | self.AddTankButton:Disable() 1447 | self.AddHealerButton:Disable() 1448 | self.ResetButton:Disable() 1449 | end 1450 | end 1451 | 1452 | function HealingAsssignments.Mainframe:DeleteTemplate(TemplateNumber) 1453 | self.Foreground.Profile[HealingAsssignments.Mainframe.ActiveProfile].Template[TemplateNumber].Menu.ScriptButton:Hide() 1454 | self.Foreground.Profile[HealingAsssignments.Mainframe.ActiveProfile].Template[TemplateNumber].Menu.ScriptButton:SetParent(nil) 1455 | self.Foreground.Profile[HealingAsssignments.Mainframe.ActiveProfile].Template[TemplateNumber].Menu:Hide() 1456 | self.Foreground.Profile[HealingAsssignments.Mainframe.ActiveProfile].Template[TemplateNumber].Menu:SetParent(nil) 1457 | self.Foreground.Profile[HealingAsssignments.Mainframe.ActiveProfile].Template[TemplateNumber].Assigments:Hide() 1458 | self.Foreground.Profile[HealingAsssignments.Mainframe.ActiveProfile].Template[TemplateNumber].Assigments:SetParent(nil) 1459 | self.Foreground.Profile[HealingAsssignments.Mainframe.ActiveProfile].Template[TemplateNumber] = nil 1460 | HealingAssignmentsTemplates.Profile[HealingAsssignments.Mainframe.ActiveProfile].Template[TemplateNumber] = nil 1461 | self.ActiveFrame = nil 1462 | end 1463 | 1464 | -- create Frame for Dropdown + Tank Dropdown 1465 | function HealingAsssignments.Mainframe:AddTankDropdown(ProfileNum,TemplateNumber) 1466 | local ActiveFrame = self.ActiveFrame 1467 | local ActiveProfile = self.ActiveProfile 1468 | local ActiveTankFrame 1469 | if ProfileNum then ActiveProfile = ProfileNum end 1470 | if TemplateNumber then ActiveFrame = TemplateNumber end 1471 | 1472 | if ActiveFrame ~= nil and ActiveFrame ~= 16 then 1473 | 1474 | if not self.Foreground.Profile[ActiveProfile].Template[ActiveFrame].Assigments.Content.Frame then self.Foreground.Profile[ActiveProfile].Template[ActiveFrame].Assigments.Content.Frame = {} end 1475 | 1476 | if self.Foreground.Profile[ActiveProfile].Template[ActiveFrame].Assigments.Content.Frame == nil then ActiveTankFrame = 1 1477 | else ActiveTankFrame = table.getn(self.Foreground.Profile[ActiveProfile].Template[ActiveFrame].Assigments.Content.Frame) + 1 end 1478 | 1479 | self.Foreground.Profile[ActiveProfile].Template[ActiveFrame].Assigments.Content.Frame[ActiveTankFrame] = CreateFrame("Frame", nil, self.Foreground.Profile[ActiveProfile].Template[ActiveFrame].Assigments.Content); 1480 | self.Foreground.Profile[ActiveProfile].Template[ActiveFrame].Assigments.Content.Frame[ActiveTankFrame]:SetFrameStrata("LOW") 1481 | self.Foreground.Profile[ActiveProfile].Template[ActiveFrame].Assigments.Content.Frame[ActiveTankFrame]:SetWidth(565) -- Set these to whatever height/width is needed 1482 | self.Foreground.Profile[ActiveProfile].Template[ActiveFrame].Assigments.Content.Frame[ActiveTankFrame]:SetHeight(60) -- for your Texture 1483 | local height = self:GetScrollFrameHeight(ActiveProfile,ActiveFrame) 1484 | self.Foreground.Profile[ActiveProfile].Template[ActiveFrame].Assigments.Content.Frame[ActiveTankFrame]:SetPoint("TOPLEFT", 0, -height+60) 1485 | local colorBg = self.Foreground.Profile[ActiveProfile].Template[ActiveFrame].Assigments.Content.Frame[ActiveTankFrame]:CreateTexture(nil, "BACKGROUND") 1486 | colorBg:SetAllPoints(self.Foreground.Profile[ActiveProfile].Template[ActiveFrame].Assigments.Content.Frame[ActiveTankFrame]) 1487 | colorBg:SetTexture(0, 0, 0, 0) 1488 | 1489 | -- add dropdown here 1490 | self.DropDownCounter = self.DropDownCounter +1 1491 | local DropDownCount = self.DropDownCounter 1492 | if not self.Foreground.Profile[ActiveProfile].Template[ActiveFrame].Assigments.Content.Frame[ActiveTankFrame].Tank then self.Foreground.Profile[ActiveProfile].Template[ActiveFrame].Assigments.Content.Frame[ActiveTankFrame].Tank = {} end; 1493 | self.Foreground.Profile[ActiveProfile].Template[ActiveFrame].Assigments.Content.Frame[ActiveTankFrame].Tank[ActiveTankFrame] = CreateFrame("Button","HADropdown"..DropDownCount, self.Foreground.Profile[ActiveProfile].Template[ActiveFrame].Assigments.Content.Frame[ActiveTankFrame], "UIDropDownMenuTemplate") 1494 | self.Foreground.Profile[ActiveProfile].Template[ActiveFrame].Assigments.Content.Frame[ActiveTankFrame].Tank[ActiveTankFrame]:SetPoint("TOPLEFT", -12, -20) 1495 | getglobal(self.Foreground.Profile[ActiveProfile].Template[ActiveFrame].Assigments.Content.Frame[ActiveTankFrame].Tank[ActiveTankFrame]:GetName().."Button"):SetScript("OnClick", function() 1496 | local DropDownID = getglobal(self.Foreground.Profile[ActiveProfile].Template[ActiveFrame].Assigments.Content.Frame[ActiveTankFrame].Tank[ActiveTankFrame]:GetName()) 1497 | HealingAsssignments.Mainframe:TankDropDownOnClick(DropDownID) 1498 | ToggleDropDownMenu(); -- inherit UIDropDownMenuTemplate functions 1499 | PlaySound("igMainMenuOptionCheckBoxOn"); -- inherit UIDropDownMenuTemplate functions 1500 | end) 1501 | getglobal(self.Foreground.Profile[ActiveProfile].Template[ActiveFrame].Assigments.Content.Frame[ActiveTankFrame].Tank[ActiveTankFrame]:GetName().."Text"):SetText(" ") 1502 | 1503 | 1504 | -- add font string 1505 | local TankFontString = self.Foreground.Profile[ActiveProfile].Template[ActiveFrame].Assigments.Content.Frame[ActiveTankFrame].Tank[ActiveTankFrame]:CreateFontString(nil, "OVERLAY") 1506 | TankFontString:SetPoint("CENTER", 62, 27) 1507 | TankFontString:SetFont("Fonts\\FRIZQT__.TTF", 11) 1508 | TankFontString:SetJustifyH("CENTER") 1509 | TankFontString:SetText("Tank "..ActiveTankFrame) 1510 | 1511 | -- reconfigure scrollslider and save TankNum 1512 | HealingAssignmentsTemplates.Profile[ActiveProfile].Template[ActiveFrame].TankNum = table.getn(self.Foreground.Profile[ActiveProfile].Template[ActiveFrame].Assigments.Content.Frame); 1513 | self:SetScrollFrameHeight(ActiveProfile,ActiveFrame) 1514 | end 1515 | end 1516 | 1517 | function HealingAsssignments.Mainframe:AddHealerDropdown(ProfileNum,TemplateNumber) 1518 | local ActiveFrame = self.ActiveFrame 1519 | local ActiveProfile = self.ActiveProfile 1520 | local ActiveTankFrame 1521 | local ActiveHealerFrame 1522 | local x; 1523 | local y; 1524 | if TemplateNumber then ActiveFrame = TemplateNumber end 1525 | if ProfileNum then ActiveProfile = ProfileNum end 1526 | 1527 | if ActiveFrame ~= nil and ActiveFrame ~= 16 then 1528 | if self.Foreground.Profile[ActiveProfile].Template[ActiveFrame].Assigments.Content.Frame ~= nil then ActiveTankFrame = table.getn(self.Foreground.Profile[ActiveProfile].Template[ActiveFrame].Assigments.Content.Frame) end 1529 | if ActiveTankFrame ~= nil then 1530 | 1531 | if self.Foreground.Profile[ActiveProfile].Template[ActiveFrame].Assigments.Content.Frame[ActiveTankFrame].Healer == nil then ActiveHealerFrame = 1 1532 | else ActiveHealerFrame = table.getn(self.Foreground.Profile[ActiveProfile].Template[ActiveFrame].Assigments.Content.Frame[ActiveTankFrame].Healer) + 1 end 1533 | 1534 | self.DropDownCounter = self.DropDownCounter +1 1535 | local DropDownCount = self.DropDownCounter 1536 | if not self.Foreground.Profile[ActiveProfile].Template[ActiveFrame].Assigments.Content.Frame[ActiveTankFrame].Healer then self.Foreground.Profile[ActiveProfile].Template[ActiveFrame].Assigments.Content.Frame[ActiveTankFrame].Healer = {} end; 1537 | self.Foreground.Profile[ActiveProfile].Template[ActiveFrame].Assigments.Content.Frame[ActiveTankFrame].Healer[ActiveHealerFrame] = CreateFrame("Button","HADropdown"..DropDownCount, self.Foreground.Profile[ActiveProfile].Template[ActiveFrame].Assigments.Content.Frame[ActiveTankFrame], "UIDropDownMenuTemplate") 1538 | getglobal(self.Foreground.Profile[ActiveProfile].Template[ActiveFrame].Assigments.Content.Frame[ActiveTankFrame].Healer[ActiveHealerFrame]:GetName().."Button"):SetScript("OnClick", function() 1539 | local DropDownID = getglobal(self.Foreground.Profile[ActiveProfile].Template[ActiveFrame].Assigments.Content.Frame[ActiveTankFrame].Healer[ActiveHealerFrame]:GetName()) 1540 | HealingAsssignments.Mainframe:HealerDropDownOnClick(DropDownID) 1541 | ToggleDropDownMenu(); -- inherit UIDropDownMenuTemplate functions 1542 | PlaySound("igMainMenuOptionCheckBoxOn"); -- inherit UIDropDownMenuTemplate functions 1543 | end) 1544 | getglobal(HealingAsssignments.Mainframe.Foreground.Profile[ActiveProfile].Template[ActiveFrame].Assigments.Content.Frame[ActiveTankFrame].Healer[ActiveHealerFrame]:GetName().."Text"):SetText(" ") 1545 | 1546 | if math.mod(ActiveHealerFrame,4) == 1 then x = 137; y = math.floor((ActiveHealerFrame/4)-(1/5))*(-60); self.Foreground.Profile[ActiveProfile].Template[ActiveFrame].Assigments.Content.Frame[ActiveTankFrame]:SetHeight((math.floor((ActiveHealerFrame/3)-(1/5)))*60+60) 1547 | elseif math.mod(ActiveHealerFrame,4) == 2 then x = 274; y = math.floor((ActiveHealerFrame/4)-(1/5))*(-60) 1548 | elseif math.mod(ActiveHealerFrame,4) == 3 then x = 411; y = math.floor((ActiveHealerFrame/4)-(1/5))*(-60) 1549 | elseif math.mod(ActiveHealerFrame,4) == 0 then x = 548; y = math.floor((ActiveHealerFrame/4)-(1/5))*(-60) end 1550 | self.Foreground.Profile[ActiveProfile].Template[ActiveFrame].Assigments.Content.Frame[ActiveTankFrame].Healer[ActiveHealerFrame]:SetPoint("TOPLEFT", x-12, y-20) 1551 | 1552 | -- add font string 1553 | local HealerFontString = self.Foreground.Profile[ActiveProfile].Template[ActiveFrame].Assigments.Content.Frame[ActiveTankFrame].Healer[ActiveHealerFrame]:CreateFontString(nil, "OVERLAY") 1554 | HealerFontString:SetPoint("CENTER", 62, 27) 1555 | HealerFontString:SetFont("Fonts\\FRIZQT__.TTF", 11) 1556 | HealerFontString:SetJustifyH("CENTER") 1557 | HealerFontString:SetText("Healer "..ActiveHealerFrame) 1558 | 1559 | -- reconfigure Slider and Set HealerNum 1560 | HealingAssignmentsTemplates.Profile[ActiveProfile].Template[ActiveFrame].TankHealer[ActiveTankFrame] = ActiveHealerFrame 1561 | self:SetScrollFrameHeight(ActiveProfile,ActiveFrame) 1562 | end 1563 | end 1564 | end 1565 | 1566 | -- Delivers the current Height of Scrollframe 1567 | function HealingAsssignments.Mainframe:GetScrollFrameHeight(ProfileNum,ActiveFrame) 1568 | local Height = 0; 1569 | 1570 | if self.Foreground.Profile[ProfileNum].Template[ActiveFrame].Assigments.Content.Frame ~= nil then 1571 | for i=1,table.getn(self.Foreground.Profile[ProfileNum].Template[ActiveFrame].Assigments.Content.Frame) do 1572 | Height = Height + self.Foreground.Profile[ProfileNum].Template[ActiveFrame].Assigments.Content.Frame[i]:GetHeight() 1573 | end 1574 | end 1575 | return Height 1576 | end 1577 | 1578 | -- Set the height of Scrollframe 1579 | function HealingAsssignments.Mainframe:SetScrollFrameHeight(ActiveProfile,ActiveFrame) 1580 | local Height = 0; 1581 | if self.Foreground.Profile[ActiveProfile].Template[ActiveFrame].Assigments.Content.Frame ~= nil then 1582 | for i=1,table.getn(self.Foreground.Profile[ActiveProfile].Template[ActiveFrame].Assigments.Content.Frame) do 1583 | Height = Height + self.Foreground.Profile[ActiveProfile].Template[ActiveFrame].Assigments.Content.Frame[i]:GetHeight() 1584 | end 1585 | end 1586 | 1587 | if Height > 300 then self.Foreground.Profile[ActiveProfile].Template[ActiveFrame].Assigments.Scrollbar:SetMinMaxValues(0, Height-300) end 1588 | end 1589 | 1590 | -- create Dropdown Menus 1591 | function HealingAsssignments.Mainframe:LoadDropdown(ProfileNum,TemplateNumber) 1592 | local TankNum = HealingAssignmentsTemplates.Profile[ProfileNum].Template[TemplateNumber].TankNum 1593 | if TankNum == nil then TankNum = 0 end 1594 | local HealerNum = 0 1595 | for i=1,TankNum do 1596 | HealingAsssignments.Mainframe:AddTankDropdown(ProfileNum,TemplateNumber) 1597 | HealerNum = HealingAssignmentsTemplates.Profile[ProfileNum].Template[TemplateNumber].TankHealer[i] 1598 | getglobal(HealingAsssignments.Mainframe.Foreground.Profile[ProfileNum].Template[TemplateNumber].Assigments.Content.Frame[i].Tank[i]:GetName().."Text"):SetText(HealingAssignmentsTemplates.Profile[ProfileNum].Template[TemplateNumber].Tank[i]) 1599 | if HealerNum == nil then HealerNum = 0 end 1600 | for j=1,HealerNum do 1601 | HealingAsssignments.Mainframe:AddHealerDropdown(ProfileNum,TemplateNumber) 1602 | if HealingAssignmentsTemplates.Profile[ProfileNum].Template[TemplateNumber].Tankhealernames[i] ~= nil then 1603 | getglobal(HealingAsssignments.Mainframe.Foreground.Profile[ProfileNum].Template[TemplateNumber].Assigments.Content.Frame[i].Healer[j]:GetName().."Text"):SetText(HealingAssignmentsTemplates.Profile[ProfileNum].Template[TemplateNumber].Tankhealernames[i].Healer[j]) 1604 | end 1605 | end 1606 | end 1607 | end 1608 | 1609 | -- reset the dropdown textes 1610 | function HealingAsssignments.Mainframe:ResetDropdownText() 1611 | local ActiveFrame = self.ActiveFrame; 1612 | if ActiveFrame ~= nil and ActiveFrame ~= 15 and ActiveFrame ~= 16 then 1613 | local TankNum = HealingAssignmentsTemplates.Profile[HealingAsssignments.Mainframe.ActiveProfile].Template[ActiveFrame].TankNum 1614 | local HealerNum = 0 1615 | for i=1,TankNum do 1616 | HealerNum = HealingAssignmentsTemplates.Profile[HealingAsssignments.Mainframe.ActiveProfile].Template[ActiveFrame].TankHealer[i] 1617 | getglobal(HealingAsssignments.Mainframe.Foreground.Profile[HealingAsssignments.Mainframe.ActiveProfile].Template[ActiveFrame].Assigments.Content.Frame[i].Tank[i]:GetName().."Text"):SetText(" ") 1618 | if HealerNum == nil then HealerNum = 0 end 1619 | for j=1,HealerNum do 1620 | getglobal(HealingAsssignments.Mainframe.Foreground.Profile[HealingAsssignments.Mainframe.ActiveProfile].Template[ActiveFrame].Assigments.Content.Frame[i].Healer[j]:GetName().."Text"):SetText(" ") 1621 | end 1622 | end 1623 | end 1624 | HealingAsssignments:UpdateRaidDataBase() 1625 | end 1626 | -------------------------------------------------------------------------------- /Media/Icon.tga: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Voidmenull/VanillaHealingAssignments/1d3077c586e71463864faadfc8b8e5b50eeaa769/Media/Icon.tga -------------------------------------------------------------------------------- /Media/IconMouseOver.tga: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Voidmenull/VanillaHealingAssignments/1d3077c586e71463864faadfc8b8e5b50eeaa769/Media/IconMouseOver.tga -------------------------------------------------------------------------------- /Modules/Database.lua: -------------------------------------------------------------------------------- 1 | local GlobalHealerDropDownID -- use global variable to get ID into populate function 2 | local GlobalTankDropDownID -- use global variable to get ID into populate function 3 | HealingAsssignments.Raiddatabase = {} -- Database of raidmembers -> all 40 4 | 5 | -- populate a specific tank dropdown 6 | function HealingAsssignments.Mainframe:PopulateTankDropdown() 7 | 8 | local OptionsFrame = 16 9 | local LeftsideCheck = HealingAsssignments.Mainframe.Foreground.Profile[1].Template[OptionsFrame].Assigments.Content.LeftsideCheckbox:GetChecked() 10 | local RightsideCheck = HealingAsssignments.Mainframe.Foreground.Profile[1].Template[OptionsFrame].Assigments.Content.RightsideCheckbox:GetChecked() 11 | local CustomCheckbox = HealingAsssignments.Mainframe.Foreground.Profile[1].Template[OptionsFrame].Assigments.Content.CustomCheckbox:GetChecked() 12 | 13 | local info = {}; 14 | for i=1,table.getn(HealingAsssignments.Raiddatabase) do 15 | 16 | if HealingAsssignments.Raiddatabase[i].Class == "WARRIOR" or 17 | (HealingAsssignments.Raiddatabase[i].Class == "WARLOCK" and HealingAsssignments.Mainframe.Foreground.Profile[1].Template[OptionsFrame].Assigments.Content.WarlockCheckbox:GetChecked()) or 18 | (HealingAsssignments.Raiddatabase[i].Class == "DRUID" and HealingAsssignments.Mainframe.Foreground.Profile[1].Template[OptionsFrame].Assigments.Content.DruidCheckbox:GetChecked()) or 19 | (HealingAsssignments.Raiddatabase[i].Class == "ROGUE" and HealingAsssignments.Mainframe.Foreground.Profile[1].Template[OptionsFrame].Assigments.Content.RogueCheckbox:GetChecked()) or 20 | (HealingAsssignments.Raiddatabase[i].Class == "HUNTER" and HealingAsssignments.Mainframe.Foreground.Profile[1].Template[OptionsFrame].Assigments.Content.HunterCheckbox:GetChecked()) or 21 | (HealingAsssignments.Raiddatabase[i].Class == "MAGE" and HealingAsssignments.Mainframe.Foreground.Profile[1].Template[OptionsFrame].Assigments.Content.MageCheckbox:GetChecked()) or 22 | (HealingAsssignments.Raiddatabase[i].Class == "SHAMAN" and HealingAsssignments.Mainframe.Foreground.Profile[1].Template[OptionsFrame].Assigments.Content.ShamanCheckbox:GetChecked()) or 23 | (HealingAsssignments.Raiddatabase[i].Class == "PRIEST" and HealingAsssignments.Mainframe.Foreground.Profile[1].Template[OptionsFrame].Assigments.Content.PriestCheckbox:GetChecked()) or 24 | (HealingAsssignments.Raiddatabase[i].Class == "PALADIN" and HealingAsssignments.Mainframe.Foreground.Profile[1].Template[OptionsFrame].Assigments.Content.PaladinCheckbox:GetChecked()) 25 | then 26 | info.text = HealingAsssignments.Raiddatabase[i].Name 27 | if HealingAsssignments.Raiddatabase[i].Class == "WARRIOR" then info.textR = 0.78; info.textG = 0.61; info.textB = 0.43; 28 | elseif HealingAsssignments.Raiddatabase[i].Class == "DRUID" then info.textR = 1.00; info.textG = 0.49; info.textB = 0.04; 29 | elseif HealingAsssignments.Raiddatabase[i].Class == "HUNTER" then info.textR = 0.67; info.textG = 0.83; info.textB = 0.45; 30 | elseif HealingAsssignments.Raiddatabase[i].Class == "MAGE" then info.textR = 0.41; info.textG = 0.80; info.textB = 0.94; 31 | elseif HealingAsssignments.Raiddatabase[i].Class == "ROGUE" then info.textR = 1.00; info.textG = 0.96; info.textB = 0.41; 32 | elseif HealingAsssignments.Raiddatabase[i].Class == "WARLOCK" then info.textR = 0.58; info.textG = 0.51; info.textB = 0.79; 33 | elseif HealingAsssignments.Raiddatabase[i].Class == "SHAMAN" then info.textR = 0.96; info.textG = 0.55; info.textB = 0.73; 34 | elseif HealingAsssignments.Raiddatabase[i].Class == "PRIEST" then info.textR = 1.00; info.textG = 1.00; info.textB = 1.00; 35 | elseif HealingAsssignments.Raiddatabase[i].Class == "PALADIN" then info.textR = 0.96; info.textG = 0.55; info.textB = 0.73; 36 | end 37 | info.checked = false 38 | --info.notCheckable = true 39 | info.func = function() 40 | UIDropDownMenu_SetSelectedID(GlobalTankDropDownID, this:GetID(), 0); 41 | HealingAsssignments:UpdateRaidDataBase() 42 | end 43 | UIDropDownMenu_AddButton(info); 44 | end 45 | end 46 | if LeftsideCheck == 1 then 47 | -- create emtpy field to deleting 48 | info.text = "Left Side" 49 | info.textR = 1; info.textG = 0; info.textB = 0; 50 | info.checked = false 51 | info.func = function() 52 | UIDropDownMenu_SetSelectedID(GlobalTankDropDownID, this:GetID(), 0); 53 | HealingAsssignments:UpdateRaidDataBase() 54 | end 55 | UIDropDownMenu_AddButton(info); 56 | end 57 | 58 | if RightsideCheck == 1 then 59 | -- create emtpy field to deleting 60 | info.text = "Right Side" 61 | info.textR = 0; info.textG = 0; info.textB = 1; 62 | info.checked = false 63 | info.func = function() 64 | UIDropDownMenu_SetSelectedID(GlobalTankDropDownID, this:GetID(), 0); 65 | HealingAsssignments:UpdateRaidDataBase() 66 | end 67 | UIDropDownMenu_AddButton(info); 68 | end 69 | 70 | if CustomCheckbox == 1 then 71 | -- create emtpy field to deleting 72 | info.text = HealingAsssignments.Mainframe.Foreground.Profile[1].Template[OptionsFrame].Assigments.Content.CustomCheckboxText:GetText() 73 | info.textR = 0; info.textG = 1; info.textB = 0; 74 | info.checked = false 75 | info.func = function() 76 | UIDropDownMenu_SetSelectedID(GlobalTankDropDownID, this:GetID(), 0); 77 | HealingAsssignments:UpdateRaidDataBase() 78 | end 79 | UIDropDownMenu_AddButton(info); 80 | end 81 | 82 | -- create emtpy field to deleting 83 | info.text = " " 84 | info.checked = false 85 | info.func = function() 86 | UIDropDownMenu_SetSelectedID(GlobalTankDropDownID, this:GetID(), 0); 87 | HealingAsssignments:UpdateRaidDataBase() 88 | end 89 | UIDropDownMenu_AddButton(info); 90 | end 91 | 92 | -- populate a specific healer dropdown 93 | function HealingAsssignments.Mainframe:PopulateHealerDropdown() 94 | local RaidMarkCheck = HealingAsssignments.Mainframe.Foreground.Profile[1].Template[16].Assigments.Content.AdditionalHealersCheckbox:GetChecked() 95 | local info = {}; 96 | for i=1,table.getn(HealingAsssignments.Raiddatabase) do 97 | if HealingAsssignments.Raiddatabase[i].Class == "DRUID" or HealingAsssignments.Raiddatabase[i].Class == "SHAMAN" or HealingAsssignments.Raiddatabase[i].Class == "PRIEST" or HealingAsssignments.Raiddatabase[i].Class == "PALADIN" then 98 | info.text = HealingAsssignments.Raiddatabase[i].Name 99 | if HealingAsssignments.Raiddatabase[i].Class == "WARRIOR" then info.textR = 0.78; info.textG = 0.61; info.textB = 0.43; 100 | elseif HealingAsssignments.Raiddatabase[i].Class == "DRUID" then info.textR = 1.00; info.textG = 0.49; info.textB = 0.04; 101 | elseif HealingAsssignments.Raiddatabase[i].Class == "HUNTER" then info.textR = 0.67; info.textG = 0.83; info.textB = 0.45; 102 | elseif HealingAsssignments.Raiddatabase[i].Class == "MAGE" then info.textR = 0.41; info.textG = 0.80; info.textB = 0.94; 103 | elseif HealingAsssignments.Raiddatabase[i].Class == "ROGUE" then info.textR = 1.00; info.textG = 0.96; info.textB = 0.41; 104 | elseif HealingAsssignments.Raiddatabase[i].Class == "WARLOCK" then info.textR = 0.58; info.textG = 0.51; info.textB = 0.79; 105 | elseif HealingAsssignments.Raiddatabase[i].Class == "SHAMAN" then info.textR = 0.96; info.textG = 0.55; info.textB = 0.73; 106 | elseif HealingAsssignments.Raiddatabase[i].Class == "PRIEST" then info.textR = 1.00; info.textG = 1.00; info.textB = 1.00; 107 | elseif HealingAsssignments.Raiddatabase[i].Class == "PALADIN" then info.textR = 0.96; info.textG = 0.55; info.textB = 0.73; 108 | end 109 | info.checked = false 110 | info.func = function() 111 | UIDropDownMenu_SetSelectedID(GlobalHealerDropDownID, this:GetID(), 0); 112 | HealingAsssignments:UpdateRaidDataBase() 113 | end 114 | UIDropDownMenu_AddButton(info); 115 | end 116 | end 117 | 118 | -- Raid Marks 119 | if RaidMarkCheck == 1 then 120 | -- {Skull} 121 | info.text = "{Skull}" 122 | info.textR = 1; info.textG = 1; info.textB = 1; 123 | info.checked = false 124 | info.func = function() 125 | UIDropDownMenu_SetSelectedID(GlobalHealerDropDownID, this:GetID(), 0); 126 | HealingAsssignments:UpdateRaidDataBase() 127 | end 128 | UIDropDownMenu_AddButton(info); 129 | 130 | -- {Cross} 131 | info.text = "{Cross}" 132 | info.textR = 1; info.textG = 0; info.textB = 0; 133 | info.checked = false 134 | info.func = function() 135 | UIDropDownMenu_SetSelectedID(GlobalHealerDropDownID, this:GetID(), 0); 136 | HealingAsssignments:UpdateRaidDataBase() 137 | end 138 | UIDropDownMenu_AddButton(info); 139 | 140 | -- {Circle} 141 | info.text = "{Circle}" 142 | info.textR = 1; info.textG = 0.647; info.textB = 0; 143 | info.checked = false 144 | info.func = function() 145 | UIDropDownMenu_SetSelectedID(GlobalHealerDropDownID, this:GetID(), 0); 146 | HealingAsssignments:UpdateRaidDataBase() 147 | end 148 | UIDropDownMenu_AddButton(info); 149 | 150 | -- {Star} 151 | info.text = "{Star}" 152 | info.textR = 1; info.textG = 1; info.textB = 0; 153 | info.checked = false 154 | info.func = function() 155 | UIDropDownMenu_SetSelectedID(GlobalHealerDropDownID, this:GetID(), 0); 156 | HealingAsssignments:UpdateRaidDataBase() 157 | end 158 | UIDropDownMenu_AddButton(info); 159 | 160 | -- {Square} 161 | info.text = "{Square}" 162 | info.textR = 0.255; info.textG = 0.412; info.textB = 0.882; 163 | info.checked = false 164 | info.func = function() 165 | UIDropDownMenu_SetSelectedID(GlobalHealerDropDownID, this:GetID(), 0); 166 | HealingAsssignments:UpdateRaidDataBase() 167 | end 168 | UIDropDownMenu_AddButton(info); 169 | 170 | -- {Triangle} 171 | info.text = "{Triangle}" 172 | info.textR = 0; info.textG = 1; info.textB = 0; 173 | info.checked = false 174 | info.func = function() 175 | UIDropDownMenu_SetSelectedID(GlobalHealerDropDownID, this:GetID(), 0); 176 | HealingAsssignments:UpdateRaidDataBase() 177 | end 178 | UIDropDownMenu_AddButton(info); 179 | 180 | --{Diamond} 181 | info.text = "{Diamond}" 182 | info.textR = 1; info.textG = 0; info.textB = 1; 183 | info.checked = false 184 | info.func = function() 185 | UIDropDownMenu_SetSelectedID(GlobalHealerDropDownID, this:GetID(), 0); 186 | HealingAsssignments:UpdateRaidDataBase() 187 | end 188 | UIDropDownMenu_AddButton(info); 189 | 190 | -- {Moon} 191 | info.text = "{Moon}" 192 | info.textR = 0.878; info.textG = 1; info.textB = 1; 193 | info.checked = false 194 | info.func = function() 195 | UIDropDownMenu_SetSelectedID(GlobalHealerDropDownID, this:GetID(), 0); 196 | HealingAsssignments:UpdateRaidDataBase() 197 | end 198 | UIDropDownMenu_AddButton(info); 199 | end 200 | 201 | -- create emtpy field to deleting 202 | info.text = " " 203 | info.checked = false 204 | info.func = function() 205 | UIDropDownMenu_SetSelectedID(GlobalHealerDropDownID, this:GetID(), 0); 206 | HealingAsssignments:UpdateRaidDataBase() 207 | end 208 | UIDropDownMenu_AddButton(info); 209 | end 210 | 211 | -- Initialize a specific tank dropdown 212 | function HealingAsssignments.Mainframe:TankDropDownOnClick(DropDownID) 213 | GlobalTankDropDownID = DropDownID -- feed global 214 | UIDropDownMenu_Initialize(DropDownID, self.PopulateTankDropdown) 215 | end 216 | 217 | -- Initialize a specific healer dropdown 218 | function HealingAsssignments.Mainframe:HealerDropDownOnClick(DropDownID) 219 | GlobalHealerDropDownID = DropDownID -- feed global 220 | UIDropDownMenu_Initialize(DropDownID, self.PopulateHealerDropdown) 221 | UIDropDownMenu_GetText(DropDownID) 222 | end 223 | 224 | -- create raiddatabase from raidata (unfiltered) 225 | function HealingAsssignments:CreateRaidDatabase() 226 | HealingAsssignments.Raiddatabase = {} 227 | for i=1,GetNumRaidMembers() do 228 | HealingAsssignments.Raiddatabase[i] = {} 229 | HealingAsssignments.Raiddatabase[i].Name = UnitName("raid"..i) 230 | _,HealingAsssignments.Raiddatabase[i].Class = UnitClass("raid"..i) 231 | HealingAsssignments.Raiddatabase[i].Connection = UnitIsConnected("raid"..i) 232 | end 233 | end 234 | 235 | -- Update the raiddatabase and set Colors 236 | function HealingAsssignments:UpdateRaidDataBase() 237 | HealingAsssignments:CreateRaidDatabase() 238 | local activeFrame = HealingAsssignments.Mainframe.ActiveFrame 239 | 240 | if HealingAsssignments.Mainframe.ActiveFrame ~= nil and activeFrame <= 15 and HealingAssignmentsTemplates.Profile[HealingAsssignments.Mainframe.ActiveProfile] and HealingAssignmentsTemplates.Profile[HealingAsssignments.Mainframe.ActiveProfile].Template[activeFrame] then 241 | HealingAssignmentsTemplates.Profile[HealingAsssignments.Mainframe.ActiveProfile].Template[activeFrame].Tank = {} 242 | HealingAssignmentsTemplates.Profile[HealingAsssignments.Mainframe.ActiveProfile].Template[activeFrame].Tankhealernames = {} 243 | local TankNum = HealingAssignmentsTemplates.Profile[HealingAsssignments.Mainframe.ActiveProfile].Template[activeFrame].TankNum 244 | local HealerNum = 0 245 | for i=1,TankNum do 246 | local foundName = 0; 247 | local numnum = i 248 | local TankName = UIDropDownMenu_GetText(HealingAsssignments.Mainframe.Foreground.Profile[HealingAsssignments.Mainframe.ActiveProfile].Template[activeFrame].Assigments.Content.Frame[i].Tank[i]) 249 | 250 | if TankName == nil then TankName = " " end 251 | HealingAssignmentsTemplates.Profile[HealingAsssignments.Mainframe.ActiveProfile].Template[activeFrame].Tank[i] = TankName 252 | HealingAssignmentsTemplates.Profile[HealingAsssignments.Mainframe.ActiveProfile].Template[activeFrame].Tankhealernames[i] = {} 253 | 254 | 255 | for v=1,table.getn(HealingAsssignments.Raiddatabase) do 256 | if HealingAsssignments.Raiddatabase[v].Name == TankName then HealingAsssignments.Raiddatabase[v] = {} end 257 | end 258 | 259 | for w=1,GetNumRaidMembers() do 260 | if UnitName("raid"..w) == TankName then 261 | local color = self:GetClassColors(w) 262 | getglobal(HealingAsssignments.Mainframe.Foreground.Profile[HealingAsssignments.Mainframe.ActiveProfile].Template[activeFrame].Assigments.Content.Frame[i].Tank[i]:GetName().."Text"):SetTextColor(color[2],color[3],color[4],1) 263 | foundName = 1; 264 | end 265 | end 266 | -- check for additional tanks 267 | if TankName == "Left Side" then getglobal(HealingAsssignments.Mainframe.Foreground.Profile[HealingAsssignments.Mainframe.ActiveProfile].Template[activeFrame].Assigments.Content.Frame[i].Tank[i]:GetName().."Text"):SetTextColor(1,0,0,1) end 268 | if TankName == "Right Side" then getglobal(HealingAsssignments.Mainframe.Foreground.Profile[HealingAsssignments.Mainframe.ActiveProfile].Template[activeFrame].Assigments.Content.Frame[i].Tank[i]:GetName().."Text"):SetTextColor(0,0,1,1) end 269 | if foundName == 0 and TankName ~= "Right Side" and TankName ~= "Left Side" then getglobal(HealingAsssignments.Mainframe.Foreground.Profile[HealingAsssignments.Mainframe.ActiveProfile].Template[activeFrame].Assigments.Content.Frame[i].Tank[i]:GetName().."Text"):SetTextColor(0,1,0,1) end 270 | 271 | HealerNum = HealingAssignmentsTemplates.Profile[HealingAsssignments.Mainframe.ActiveProfile].Template[activeFrame].TankHealer[i] 272 | if HealerNum == nil then HealerNum = 0 end 273 | HealingAssignmentsTemplates.Profile[HealingAsssignments.Mainframe.ActiveProfile].Template[activeFrame].Tankhealernames[i].Healer = {} 274 | for j=1,HealerNum do 275 | local numj = j 276 | local HealerName = UIDropDownMenu_GetText(HealingAsssignments.Mainframe.Foreground.Profile[HealingAsssignments.Mainframe.ActiveProfile].Template[activeFrame].Assigments.Content.Frame[i].Healer[j]) 277 | 278 | if HealerName == nil then HealerName = " " end 279 | HealingAssignmentsTemplates.Profile[HealingAsssignments.Mainframe.ActiveProfile].Template[activeFrame].Tankhealernames[i].Healer[j] = HealerName 280 | 281 | for v=1,table.getn(HealingAsssignments.Raiddatabase) do 282 | if HealingAsssignments.Raiddatabase[v].Name == HealerName then HealingAsssignments.Raiddatabase[v] = {} end 283 | end 284 | -- set standard color 285 | 286 | getglobal(HealingAsssignments.Mainframe.Foreground.Profile[HealingAsssignments.Mainframe.ActiveProfile].Template[activeFrame].Assigments.Content.Frame[i].Healer[j]:GetName().."Text"):SetTextColor(1,0,0,1) 287 | for w=1,GetNumRaidMembers() do 288 | if UnitName("raid"..w) == HealerName then 289 | local color = self:GetClassColors(w) 290 | getglobal(HealingAsssignments.Mainframe.Foreground.Profile[HealingAsssignments.Mainframe.ActiveProfile].Template[activeFrame].Assigments.Content.Frame[i].Healer[j]:GetName().."Text"):SetTextColor(color[2],color[3],color[4],1) 291 | end 292 | end 293 | 294 | if HealerName == "{Skull}" then getglobal(HealingAsssignments.Mainframe.Foreground.Profile[HealingAsssignments.Mainframe.ActiveProfile].Template[activeFrame].Assigments.Content.Frame[i].Healer[j]:GetName().."Text"):SetTextColor(1,1,1,1) 295 | elseif HealerName == "{Cross}" then getglobal(HealingAsssignments.Mainframe.Foreground.Profile[HealingAsssignments.Mainframe.ActiveProfile].Template[activeFrame].Assigments.Content.Frame[i].Healer[j]:GetName().."Text"):SetTextColor(1,0,0,1) 296 | elseif HealerName == "{Circle}" then getglobal(HealingAsssignments.Mainframe.Foreground.Profile[HealingAsssignments.Mainframe.ActiveProfile].Template[activeFrame].Assigments.Content.Frame[i].Healer[j]:GetName().."Text"):SetTextColor(1,0.647,0,1) 297 | elseif HealerName == "{Star}" then getglobal(HealingAsssignments.Mainframe.Foreground.Profile[HealingAsssignments.Mainframe.ActiveProfile].Template[activeFrame].Assigments.Content.Frame[i].Healer[j]:GetName().."Text"):SetTextColor(1,1,0,1) 298 | elseif HealerName == "{Square}" then getglobal(HealingAsssignments.Mainframe.Foreground.Profile[HealingAsssignments.Mainframe.ActiveProfile].Template[activeFrame].Assigments.Content.Frame[i].Healer[j]:GetName().."Text"):SetTextColor(0.255,0.412,0.882,1) 299 | elseif HealerName == "{Triangle}" then getglobal(HealingAsssignments.Mainframe.Foreground.Profile[HealingAsssignments.Mainframe.ActiveProfile].Template[activeFrame].Assigments.Content.Frame[i].Healer[j]:GetName().."Text"):SetTextColor(0,1,0,1) 300 | elseif HealerName == "{Diamond}" then getglobal(HealingAsssignments.Mainframe.Foreground.Profile[HealingAsssignments.Mainframe.ActiveProfile].Template[activeFrame].Assigments.Content.Frame[i].Healer[j]:GetName().."Text"):SetTextColor(1,0,1,1) 301 | elseif HealerName == "{Moon}" then getglobal(HealingAsssignments.Mainframe.Foreground.Profile[HealingAsssignments.Mainframe.ActiveProfile].Template[activeFrame].Assigments.Content.Frame[i].Healer[j]:GetName().."Text"):SetTextColor(1,1,1,1) 302 | end 303 | end 304 | end 305 | end 306 | end 307 | 308 | -- delivers class and color from raid ID 309 | function HealingAsssignments:GetClassColors(RaidID) 310 | 311 | local classColors = {} 312 | _,classColors[1] = UnitClass("raid"..RaidID) 313 | if UnitIsConnected("raid"..RaidID) == nil then classColors[2] = 0.7; classColors[3] = 0.7; classColors[4] = 0.7; classColors[5] = "BABABA"; return classColors 314 | elseif classColors[1] == "WARRIOR" then classColors[2] = 0.78; classColors[3] = 0.61; classColors[4] = 0.43; classColors[5] = "C79C6E"; return classColors 315 | elseif classColors[1] == "HUNTER" then classColors[2] = 0.67; classColors[3] = 0.83; classColors[4] = 0.45; classColors[5] = "ABD473"; return classColors 316 | elseif classColors[1] == "MAGE" then classColors[2] = 0.41; classColors[3] = 0.80; classColors[4] = 0.94; classColors[5] = "69CCF0"; return classColors 317 | elseif classColors[1] == "ROGUE" then classColors[2] = 1.00; classColors[3] = 0.96; classColors[4] = 0.41; classColors[5] = "FFF569"; return classColors 318 | elseif classColors[1] == "WARLOCK" then classColors[2] = 0.58; classColors[3] = 0.51; classColors[4] = 0.79; classColors[5] = "9482C9"; return classColors 319 | elseif classColors[1] == "DRUID" then classColors[2] = 1.00; classColors[3] = 0.49; classColors[4] = 0.04; classColors[5] = "FF7D0A"; return classColors 320 | elseif classColors[1] == "SHAMAN" then classColors[2] = 0.96; classColors[3] = 0.55; classColors[4] = 0.73; classColors[5] = "F58CBA"; return classColors 321 | elseif classColors[1] == "PRIEST" then classColors[2] = 1.00; classColors[3] = 1.00; classColors[4] = 1.00; classColors[5] = "FFFFFF"; return classColors 322 | elseif classColors[1] == "PALADIN" then classColors[2] = 0.96; classColors[3] = 0.55; classColors[4] = 0.73; classColors[5] = "FF0000" return classColors 323 | else classColors[1] = " "; classColors[2] = 1.00; classColors[3] = 0.00; classColors[4] = 0.00; classColors[5] = "FF0000"; return classColors 324 | end 325 | 326 | end 327 | 328 | -------------------------------------------------------------------------------- /Modules/Posting.lua: -------------------------------------------------------------------------------- 1 | function HealingAsssignments:PostAssignments() 2 | local SlowPostCheck = HealingAsssignments.Mainframe.Foreground.Profile[1].Template[16].Assigments.Content.SlowPostCheckbox:GetChecked() 3 | local ActiveFrame = HealingAsssignments.Mainframe.ActiveFrame; 4 | if ActiveFrame ~= nil and ActiveFrame ~= 16 then 5 | local chanText = HealingAsssignments.Mainframe.HealerChannelEditBox:GetText() 6 | local id, chatnamename = GetChannelName(chanText); 7 | if chanText == nil or chanText == "" then DEFAULT_CHAT_FRAME:AddMessage("no Channel selected",1,1,1) 8 | elseif chatnamename == "world" or chatnamename == "World" or chanText == "1" or chanText == "2" or chanText == "3" then DEFAULT_CHAT_FRAME:AddMessage("You are trying to post in a public channel!",1,0,0); 9 | else 10 | local chan,chanNum = HealingAsssignments:GetSendChannel(chanText) 11 | if not chan and not chanNum then return end 12 | local PostString = "" 13 | local TankNameTemp 14 | local TankName = {} 15 | local HealerName = {} 16 | local HealerNameTemp 17 | local TankNum = HealingAssignmentsTemplates.Profile[HealingAsssignments.Mainframe.ActiveProfile].Template[ActiveFrame].TankNum 18 | local HealerNum = 0 19 | local m = 0 20 | local n = 0 21 | for i=1,TankNum do 22 | HealerNum = HealingAssignmentsTemplates.Profile[HealingAsssignments.Mainframe.ActiveProfile].Template[ActiveFrame].TankHealer[i] 23 | TankNameTemp = getglobal(HealingAsssignments.Mainframe.Foreground.Profile[HealingAsssignments.Mainframe.ActiveProfile].Template[ActiveFrame].Assigments.Content.Frame[i].Tank[i]:GetName().."Text"):GetText(" ") 24 | if TankNameTemp ~= nil and TankNameTemp ~= " " and TankNameTemp ~= "" and HealerNum ~= 0 and HealerNum ~= nil then n = n + 1; TankName[n] = {}; TankName[n] = TankNameTemp 25 | if HealerNum == nil then HealerNum = 0 end 26 | m = 0 27 | HealerName[n] = {} 28 | for j=1,HealerNum do 29 | HealerNameTemp = getglobal(HealingAsssignments.Mainframe.Foreground.Profile[HealingAsssignments.Mainframe.ActiveProfile].Template[ActiveFrame].Assigments.Content.Frame[i].Healer[j]:GetName().."Text"):GetText(" ") 30 | if HealerNameTemp ~= nil and HealerNameTemp ~= " " and HealerNameTemp ~= "" then m = m + 1; HealerName[n][m] = HealerNameTemp end 31 | end 32 | end 33 | end 34 | if table.getn(TankName) == 0 then DEFAULT_CHAT_FRAME:AddMessage("No Tank Selected.",1,1,1) 35 | else 36 | if SlowPostCheck == 1 then HealingAsssignments:SendChatMessage("° ° ° Healing Assignments ° ° °",chan,nil,chanNum) 37 | else SendChatMessage("° ° ° Healing Assignments ° ° °",chan,nil,chanNum) end 38 | -- here you find the action! 39 | for v=1,table.getn(TankName) do 40 | TankName[v] = HealingAsssignments:GetColoredString(TankName[v]) 41 | PostString = "" 42 | PostString = PostString..TankName[v]..": " 43 | for w=1,table.getn(HealerName[v]) do 44 | HealerName[v][w] = HealingAsssignments:GetColoredString(HealerName[v][w]) 45 | PostString = PostString..HealerName[v][w] 46 | if w~= table.getn(HealerName[v]) then PostString = PostString..", " 47 | else PostString = PostString.."." end 48 | end 49 | if SlowPostCheck == 1 then HealingAsssignments:SendChatMessage(PostString,chan,nil,chanNum) 50 | else SendChatMessage(PostString,chan,nil,chanNum) end 51 | end 52 | if SlowPostCheck == 1 then 53 | HealingAsssignments:SendChatMessage(HealingAsssignments.Mainframe.Foreground.Profile[1].Template[16].Assigments.Content.BottomText:GetText(),chan,nil,chanNum) -- 16 = optionsframe 54 | HealingAsssignments:PostLastLineSlow(chan,chanNum) 55 | else 56 | SendChatMessage(HealingAsssignments.Mainframe.Foreground.Profile[1].Template[16].Assigments.Content.BottomText:GetText(),chan,nil,chanNum) -- 16 = optionsframe 57 | HealingAsssignments:PostLastLine(chan,chanNum) end 58 | end 59 | end 60 | else 61 | DEFAULT_CHAT_FRAME:AddMessage("No Template selected.",1,1,1) 62 | end 63 | end 64 | 65 | function HealingAsssignments:PostLastLine(chan,chanNum) 66 | local repost = HealingAsssignments.Mainframe.Foreground.Profile[1].Template[16].Assigments.Content.WhisperRepostCheckbox:GetChecked() 67 | local heal = HealingAsssignments.Mainframe.Foreground.Profile[1].Template[16].Assigments.Content.WhisperHealCheckbox:GetChecked() 68 | if repost and heal then 69 | SendChatMessage("Whisper me: heal (whisper) or repost (repost)!",chan,nil,chanNum) 70 | elseif repost and not heal then 71 | SendChatMessage("Whisper me: repost (repost Assignments)!",chan,nil,chanNum) 72 | elseif not repost and heal then 73 | SendChatMessage("Whisper me: heal (re-whisper Assignments)!",chan,nil,chanNum) 74 | else 75 | 76 | end 77 | end 78 | 79 | function HealingAsssignments:PostLastLineSlow(chan,chanNum) 80 | local repost = HealingAsssignments.Mainframe.Foreground.Profile[1].Template[16].Assigments.Content.WhisperRepostCheckbox:GetChecked() 81 | local heal = HealingAsssignments.Mainframe.Foreground.Profile[1].Template[16].Assigments.Content.WhisperHealCheckbox:GetChecked() 82 | 83 | if repost and heal then 84 | HealingAsssignments:SendChatMessage("Whisper me: heal (whisper) or repost (repost)!",chan,nil,chanNum) 85 | elseif repost and not heal then 86 | HealingAsssignments:SendChatMessage("Whisper me: repost (repost Assignments)!",chan,nil,chanNum) 87 | elseif not repost and heal then 88 | HealingAsssignments:SendChatMessage("Whisper me: heal (re-whisper Assignments)!",chan,nil,chanNum) 89 | else 90 | 91 | end 92 | end 93 | 94 | function HealingAsssignments:AnswerAssignments(PlayerName) 95 | local SlowPostCheck = HealingAsssignments.Mainframe.Foreground.Profile[1].Template[16].Assigments.Content.SlowPostCheckbox:GetChecked() 96 | local found = 0 97 | local heal = HealingAsssignments.Mainframe.Foreground.Profile[1].Template[16].Assigments.Content.WhisperHealCheckbox:GetChecked() 98 | for n=1,GetNumRaidMembers() do 99 | if UnitName("raid"..n) == PlayerName then found = 1 break; end 100 | end 101 | 102 | local ActiveFrame = HealingAsssignments.Mainframe.ActiveFrame; 103 | if ActiveFrame ~= nil and ActiveFrame ~= 16 and found == 1 and heal == 1 then 104 | local WhisperString = "You are not assigned." 105 | local TankNameTemp 106 | local HealerNameTemp 107 | local TankNum = HealingAssignmentsTemplates.Profile[HealingAsssignments.Mainframe.ActiveProfile].Template[ActiveFrame].TankNum 108 | local HealerNum = 0 109 | for i=1,TankNum do 110 | HealerNum = HealingAssignmentsTemplates.Profile[HealingAsssignments.Mainframe.ActiveProfile].Template[ActiveFrame].TankHealer[i] 111 | if HealerNum == nil then HealerNum = 0 end 112 | TankNameTemp = getglobal(HealingAsssignments.Mainframe.Foreground.Profile[HealingAsssignments.Mainframe.ActiveProfile].Template[ActiveFrame].Assigments.Content.Frame[i].Tank[i]:GetName().."Text"):GetText(" ") 113 | if TankNameTemp == PlayerName then 114 | WhisperString = "Your Healers are: " 115 | for j=1,HealerNum do 116 | HealerNameTemp = getglobal(HealingAsssignments.Mainframe.Foreground.Profile[HealingAsssignments.Mainframe.ActiveProfile].Template[ActiveFrame].Assigments.Content.Frame[i].Healer[j]:GetName().."Text"):GetText(" ") 117 | if HealerNameTemp == nil then HealerNameTemp = " " end 118 | WhisperString = WhisperString..HealerNameTemp.." " 119 | end 120 | break; 121 | else 122 | for j=1,HealerNum do 123 | HealerNameTemp = getglobal(HealingAsssignments.Mainframe.Foreground.Profile[HealingAsssignments.Mainframe.ActiveProfile].Template[ActiveFrame].Assigments.Content.Frame[i].Healer[j]:GetName().."Text"):GetText(" ") 124 | if HealerNameTemp == PlayerName then WhisperString = "You are assigned to: "..TankNameTemp ; break ; end 125 | end 126 | end 127 | end 128 | SendChatMessage(WhisperString,"WHISPER",nil,PlayerName) 129 | end 130 | end 131 | 132 | 133 | function HealingAsssignments:RepostAssignments(PlayerName) 134 | local found = 0 135 | local repost = HealingAsssignments.Mainframe.Foreground.Profile[1].Template[16].Assigments.Content.WhisperRepostCheckbox:GetChecked() 136 | 137 | for i=1,GetNumRaidMembers() do 138 | if UnitName("raid"..i) == PlayerName then found = 1 break; end 139 | end 140 | 141 | if found == 1 and repost == 1 then 142 | HealingAsssignments:PostAssignments(); 143 | end 144 | end 145 | 146 | function HealingAsssignments:PostDeathWarning(PlayerName) 147 | local SlowPostCheck = HealingAsssignments.Mainframe.Foreground.Profile[1].Template[16].Assigments.Content.SlowPostCheckbox:GetChecked() 148 | if PlayerName == "Yo" then PlayerName = UnitName("player"); end 149 | local OptionsFrame = 16; 150 | local ActiveFrame = HealingAsssignments.Mainframe.ActiveFrame; 151 | if ActiveFrame ~= nil and ActiveFrame ~= 16 then 152 | local chanText = HealingAsssignments.Mainframe.Foreground.Profile[1].Template[OptionsFrame].Assigments.Content.DeathWarningChannelTextbox:GetText() 153 | local id, chatnamename = GetChannelName(chanText); 154 | if chanText == nil or chanText == "" then return 155 | elseif chatnamename == "world" or chatnamename == "World" or chanText == "1" or chanText == "2" or chanText == "3" then return 156 | else 157 | local chan,chanNum = HealingAsssignments:GetSendChannel(chanText) 158 | if not chan and not chanNum then return end 159 | 160 | local TankNameTemp 161 | local HealerNameTemp 162 | local TankNum = HealingAssignmentsTemplates.Profile[HealingAsssignments.Mainframe.ActiveProfile].Template[ActiveFrame].TankNum 163 | local HealerNum = 0 164 | 165 | for i=1,TankNum do 166 | 167 | HealerNum = HealingAssignmentsTemplates.Profile[HealingAsssignments.Mainframe.ActiveProfile].Template[ActiveFrame].TankHealer[i] 168 | if HealerNum == nil then HealerNum = 0 end 169 | TankNameTemp = getglobal(HealingAsssignments.Mainframe.Foreground.Profile[HealingAsssignments.Mainframe.ActiveProfile].Template[ActiveFrame].Assigments.Content.Frame[i].Tank[i]:GetName().."Text"):GetText(" ") 170 | for j=1,HealerNum do 171 | HealerNameTemp = getglobal(HealingAsssignments.Mainframe.Foreground.Profile[HealingAsssignments.Mainframe.ActiveProfile].Template[ActiveFrame].Assigments.Content.Frame[i].Healer[j]:GetName().."Text"):GetText(" ") 172 | if HealerNameTemp == PlayerName then 173 | HealerNameTemp = HealingAsssignments:GetColoredString(HealerNameTemp,1) 174 | TankNameTemp = HealingAsssignments:GetColoredString(TankNameTemp,1) 175 | if SlowPostCheck == 1 then HealingAsssignments:SendChatMessage(HealerNameTemp.." died - Tank was "..TankNameTemp..".",chan,nil,chanNum) 176 | else SendChatMessage(HealerNameTemp.." died - Tank was "..TankNameTemp..".",chan,nil,chanNum) end 177 | 178 | break ; end 179 | end 180 | end 181 | end 182 | 183 | end 184 | 185 | end 186 | 187 | local ChanTable = { 188 | ["s"] = "SAY", 189 | ["y"] = "YELL", 190 | ["e"] = "EMOTE", 191 | ["g"] = "GUILD", 192 | ["p"] = "PARTY", 193 | ["r"] = "RAID", 194 | ["1"] = {"CHANNEL", "1"}, 195 | ["2"] = {"CHANNEL", "2"}, 196 | ["3"] = {"CHANNEL", "3"}, 197 | ["4"] = {"CHANNEL", "4"}, 198 | ["5"] = {"CHANNEL", "5"}, 199 | ["6"] = {"CHANNEL", "6"}, 200 | ["7"] = {"CHANNEL", "7"}, 201 | ["8"] = {"CHANNEL", "8"}, 202 | ["9"] = {"CHANNEL", "9"}, 203 | } 204 | 205 | -- from epicfail addon 206 | function HealingAsssignments:GetSendChannel(chanName) 207 | if not chanName or chanName == "" or chanName == " " then 208 | return nil,nil 209 | end 210 | chanName = string.lower(chanName) 211 | if ChanTable[chanName] then 212 | if type(ChanTable[chanName])=="table" then 213 | local chan = ChanTable[chanName][1] 214 | local bla = ChanTable[chanName][2] 215 | return chan,bla 216 | else 217 | local chan = ChanTable[chanName] 218 | return chan,chanName 219 | end 220 | else 221 | return "WHISPER",chanName 222 | end 223 | end 224 | 225 | function HealingAsssignments:GetColoredString(NameString,Deathwarn) 226 | local Checked 227 | if Deathwarn == 1 then Checked = HealingAsssignments.Mainframe.Foreground.Profile[1].Template[16].Assigments.Content.ColoredPostingsCheckbox:GetChecked() 228 | else Checked = HealingAsssignments.Mainframe.ColoredPostingsCheckbox:GetChecked() end 229 | 230 | if Checked == nil then return NameString 231 | else 232 | local ColoredNameString 233 | local Class 234 | local Color 235 | local spot 236 | 237 | for i=1,GetNumRaidMembers() do 238 | spot = i 239 | if UnitName("raid"..i) == NameString then _,Class = UnitClass("raid"..i) break; end 240 | end 241 | 242 | if UnitIsConnected("raid"..spot) == nil then Color = "a8a8a8" 243 | elseif Class == "WARRIOR" then Color = "C79C6E" 244 | elseif Class == "HUNTER" then Color = "ABD473" 245 | elseif Class == "MAGE" then Color = "69CCF0" 246 | elseif Class == "ROGUE" then Color = "FFF569" 247 | elseif Class == "WARLOCK" then Color = "9482C9" 248 | elseif Class == "DRUID" then Color = "FF7D0A" 249 | elseif Class == "SHAMAN" then Color = "F58CBA" 250 | elseif Class == "PRIEST" then Color = "FFFFFF" 251 | elseif Class == "PALADIN" then Color = "F58CBA" 252 | else Color = "00FF00" end 253 | 254 | if NameString == "Left Side" then Color = "c30000" 255 | elseif NameString == "Right Side" then Color = "00ADEF" 256 | elseif NameString == "{Skull}" then Color = "FFFFFF" 257 | elseif NameString == "{Cross}" then Color = "FF0000" 258 | elseif NameString == "{Circle}" then Color = "FFA500" 259 | elseif NameString == "{Star}" then Color = "FFFF00" 260 | elseif NameString == "{Square}" then Color = "4169E1" 261 | elseif NameString == "{Triangle}" then Color = "00FF00" 262 | elseif NameString == "{Diamond}" then Color = "FF00FF" 263 | elseif NameString == "{Moon}" then Color = "E0FFFF" 264 | end 265 | 266 | ColoredNameString = "\124cff"..Color.."\124Hitem:1\124h"..NameString.."\124h\124r" 267 | return ColoredNameString 268 | end 269 | end 270 | 271 | function HealingAsssignmentsTextMenu(arg) 272 | if arg == nil or arg == "" then 273 | DEFAULT_CHAT_FRAME:AddMessage("|cFF00FF00 Vanilla Healing Assignments:|r This is help topic for |cFFFFFF00 /vha|r",1,1,1); 274 | DEFAULT_CHAT_FRAME:AddMessage("|cFF00FF00 VHA:|r |cFFFFFF00 /vha post|r - post opened Assignments.",1,1,1); 275 | DEFAULT_CHAT_FRAME:AddMessage("|cFF00FF00 VHA:|r |cFFFFFF00 /vha menu|r - show/hide the GUI Menu.",1,1,1); 276 | DEFAULT_CHAT_FRAME:AddMessage("|cFF00FF00 VHA:|r |cFFFFFF00 /vha color|r - enable/disable colored Postings.",1,1,1); 277 | DEFAULT_CHAT_FRAME:AddMessage("|cFF00FF00 VHA:|r |cFFFFFF00 /vha icon|r - hide/show Minimap Icon.",1,1,1); 278 | DEFAULT_CHAT_FRAME:AddMessage("|cFF00FF00 VHA:|r |cFFFFFF00 /vha sync|r - sync all Assignments.",1,1,1); 279 | DEFAULT_CHAT_FRAME:AddMessage("|cFF00FF00 VHA:|r |cFFFFFF00 /vha warnings|r - enable/disable Death warnings.",1,1,1); 280 | DEFAULT_CHAT_FRAME:AddMessage("|cFF00FF00 VHA:|r |cFFFFFF00 /vha delete|r - delete Database |cFFFF0000 (use only if error - it deletes everything! - instantly relog after!)|r.",1,1,1); 281 | else 282 | if arg == "post" then 283 | HealingAsssignments:PostAssignments() 284 | elseif arg == "menu" then 285 | if HealingAsssignments.Mainframe:IsVisible() then HealingAsssignments.Mainframe:Hide() 286 | else HealingAsssignments.Mainframe:Show() end 287 | elseif arg == "sync" then 288 | HealingAsssignments.Syncframe:TriggerSync() 289 | elseif arg == "icon" then 290 | if HealingAsssignments.Minimap:IsVisible() then HealingAsssignments.Minimap:Hide() 291 | else HealingAsssignments.Minimap:Show() end 292 | elseif arg == "warnings" then 293 | if HealingAsssignments.Mainframe.DeathWarningCheckbox:GetChecked() == nil then HealingAsssignments.Mainframe.DeathWarningCheckbox:SetChecked(1); DEFAULT_CHAT_FRAME:AddMessage("|cFF00FF00VHA|r: Death Warnings enabled",1,1,1) 294 | else HealingAsssignments.Mainframe.DeathWarningCheckbox:SetChecked(nil) DEFAULT_CHAT_FRAME:AddMessage("|cFF00FF00VHA|r: Death Warnings disabled",1,1,1) end 295 | if HealingAsssignments.Mainframe.DeathWarningCheckbox:GetChecked() == nil then HealingAssignmentsTemplates.Options.Deathwarnings = nil 296 | elseif HealingAsssignments.Mainframe.DeathWarningCheckbox:GetChecked() == 1 then HealingAssignmentsTemplates.Options.Deathwarnings = 1 end 297 | elseif arg == "color" then 298 | if HealingAsssignments.Mainframe.ColoredPostingsCheckbox:GetChecked() == nil then HealingAsssignments.Mainframe.ColoredPostingsCheckbox:SetChecked(1); DEFAULT_CHAT_FRAME:AddMessage("|cFF00FF00VHA|r: colored postings enabled",1,1,1) 299 | else HealingAsssignments.Mainframe.ColoredPostingsCheckbox:SetChecked(nil) DEFAULT_CHAT_FRAME:AddMessage("|cFF00FF00VHA|r: colored postings disabled",1,1,1) end 300 | elseif arg == "delete" then 301 | HealingAssignmentsTemplates ={} 302 | else 303 | DEFAULT_CHAT_FRAME:AddMessage("|cFF00FF00VHA:|r unknown command",1,0.3,0.3); 304 | end 305 | end 306 | end 307 | 308 | -- binding list 309 | BINDING_HEADER_HEAD = "Vanilla Healing Assignments" 310 | 311 | -- slashcommands 312 | SlashCmdList['VANILLA_HEALING_ASSIGNMENTS'] = HealingAsssignmentsTextMenu 313 | SLASH_VANILLA_HEALING_ASSIGNMENTS1 = '/vha' 314 | SLASH_VANILLA_HEALING_ASSIGNMENTS2 = '/VHA' 315 | 316 | 317 | function HealingAsssignments:SendChatMessage(messageID, message, extra ,channel) 318 | local data = {}; 319 | data["messageID"] = messageID; 320 | data["message"] = message; 321 | data["extra"] = extra; 322 | data["channel"] = channel; 323 | table.insert(HealingAsssignments.MessageBuffer, data); 324 | end 325 | 326 | function HealingAsssignments:TableLength(t) 327 | i = 0; 328 | for k,v in pairs(t) 329 | do 330 | i = i + 1; 331 | end 332 | 333 | return i; 334 | end 335 | -------------------------------------------------------------------------------- /Modules/Sync.lua: -------------------------------------------------------------------------------- 1 | local GlobalDropDownID 2 | 3 | -- returns next free Profile Slot if new Name 4 | function HealingAsssignments.Syncframe:GetProfileNum(ProfileName) 5 | local ProfileNumber 6 | for i=2,11 do 7 | if HealingAssignmentsTemplates.Profile[i].Name == ProfileName then ProfileNumber = i break 8 | elseif HealingAssignmentsTemplates.Profile[i].Name == " " then ProfileNumber = i break 9 | else ProfileNumber = 100 10 | end 11 | end 12 | if ProfileNumber ~= 100 and ProfileName ~= UnitName("player") then HealingAssignmentsTemplates.Profile[ProfileNumber].Name = ProfileName end 13 | return ProfileNumber 14 | end 15 | 16 | function HealingAsssignments.Syncframe:GetProfileNumNonSave(ProfileName) 17 | local ProfileNumber 18 | for i=1,11 do 19 | if HealingAssignmentsTemplates.Profile[i].Name == ProfileName then ProfileNumber = i end 20 | end 21 | return ProfileNumber 22 | end 23 | 24 | 25 | function HealingAsssignments.Syncframe:SelectProfile(profileNum) 26 | HealingAsssignments.Mainframe.ActiveProfile = profileNum 27 | 28 | -- hide templates AND window 29 | for j=1,11 do 30 | for i=1,15 do 31 | if HealingAsssignments.Mainframe.Foreground.Profile[j].Template[i] then 32 | local TemplateNumber = i; 33 | HealingAsssignments.Mainframe.Foreground.Profile[j].Template[TemplateNumber].Assigments:Hide() 34 | HealingAsssignments.Mainframe.Foreground.Profile[j].Template[TemplateNumber].Menu:Hide() 35 | end 36 | end 37 | end 38 | HealingAsssignments.Mainframe.Foreground.Profile[1].Template[16].Assigments:Hide() 39 | 40 | for i=1,15 do 41 | if HealingAsssignments.Mainframe.Foreground.Profile[HealingAsssignments.Mainframe.ActiveProfile].Template[i] then 42 | local TemplateNumber = i; 43 | HealingAsssignments.Mainframe.Foreground.Profile[HealingAsssignments.Mainframe.ActiveProfile].Template[TemplateNumber].Menu:Show() 44 | end 45 | end 46 | 47 | getglobal(HealingAsssignments.Mainframe.ProfileDropdown:GetName().."Text"):SetText(HealingAssignmentsTemplates.Profile[profileNum].Name) 48 | HealingAsssignments.Mainframe:SelectActiveTemplate(HealingAsssignments.Mainframe.ActiveFrameBuffer) 49 | end 50 | 51 | 52 | -- add template (if not already exists) -- todo: if already exist with same name then delete and make new! 53 | function HealingAsssignments.Syncframe:AddTemplate(ProfileNum,TemplateNum,TemplateName) 54 | local name = TemplateName 55 | -- check if template already exist 56 | if not HealingAssignmentsTemplates.Profile[ProfileNum].Template[TemplateNum] then 57 | HealingAssignmentsTemplates.Profile[ProfileNum].Template[TemplateNum] = {} 58 | HealingAsssignments.Mainframe.Foreground.Profile[ProfileNum].Template[TemplateNum] = {} 59 | -- create Template 60 | HealingAssignmentsTemplates.Profile[ProfileNum].Template[TemplateNum].Name = name -- Save this to global 61 | HealingAsssignments.Mainframe.Foreground.Profile[ProfileNum].Template[TemplateNum].Name = name 62 | HealingAsssignments.Mainframe.Foreground.Profile[ProfileNum].Template[TemplateNum].Menu = CreateFrame("Frame", nil, HealingAsssignments.Mainframe) 63 | HealingAsssignments.Mainframe.Foreground.Profile[ProfileNum].Template[TemplateNum].Menu:SetFrameStrata("MEDIUM") 64 | HealingAsssignments.Mainframe.Foreground.Profile[ProfileNum].Template[TemplateNum].Menu:SetWidth(130) -- Set these to whatever height/width is needed 65 | HealingAsssignments.Mainframe.Foreground.Profile[ProfileNum].Template[TemplateNum].Menu:SetHeight(20) -- for your Texture 66 | HealingAsssignments.Mainframe.Foreground.Profile[ProfileNum].Template[TemplateNum].Menu:SetPoint("TOPLEFT", HealingAsssignments.Mainframe, "TOPLEFT",23, (TemplateNum * (-20)) -85) 67 | HealingAsssignments.Mainframe.Foreground.Profile[ProfileNum].Template[TemplateNum].Menu.colorBg = HealingAsssignments.Mainframe.Foreground.Profile[ProfileNum].Template[TemplateNum].Menu:CreateTexture(nil, "BACKGROUND") 68 | HealingAsssignments.Mainframe.Foreground.Profile[ProfileNum].Template[TemplateNum].Menu.colorBg:SetAllPoints(HealingAsssignments.Mainframe.Foreground.Profile[ProfileNum].Template[TemplateNum].Menu) 69 | HealingAsssignments.Mainframe.Foreground.Profile[ProfileNum].Template[TemplateNum].Menu.colorBg:SetTexture(0, 0, 0, 0.3) 70 | 71 | HealingAsssignments.Mainframe.Foreground.Profile[ProfileNum].Template[TemplateNum].Menu.ScriptButton = CreateFrame("Button",nil,HealingAsssignments.Mainframe.Foreground.Profile[ProfileNum].Template[TemplateNum].Menu) 72 | HealingAsssignments.Mainframe.Foreground.Profile[ProfileNum].Template[TemplateNum].Menu.ScriptButton:SetFrameStrata("LOW") 73 | HealingAsssignments.Mainframe.Foreground.Profile[ProfileNum].Template[TemplateNum].Menu.ScriptButton:SetWidth(130) 74 | HealingAsssignments.Mainframe.Foreground.Profile[ProfileNum].Template[TemplateNum].Menu.ScriptButton:SetHeight(20) 75 | HealingAsssignments.Mainframe.Foreground.Profile[ProfileNum].Template[TemplateNum].Menu.ScriptButton:SetPoint("TOPLEFT", HealingAsssignments.Mainframe, "TOPLEFT",23, (TemplateNum * (-20)) -85) 76 | HealingAsssignments.Mainframe.Foreground.Profile[ProfileNum].Template[TemplateNum].Menu.ScriptButton:SetScript("OnClick", function() PlaySound("igMainMenuOptionCheckBoxOn") 77 | HealingAsssignments.Mainframe:SelectActiveTemplate(TemplateNum) 78 | end) 79 | 80 | -- String 81 | HealingAsssignments.Mainframe.Foreground.Profile[ProfileNum].Template[TemplateNum].Menu.FontString = HealingAsssignments.Mainframe.Foreground.Profile[ProfileNum].Template[TemplateNum].Menu:CreateFontString(nil, "OVERLAY") 82 | HealingAsssignments.Mainframe.Foreground.Profile[ProfileNum].Template[TemplateNum].Menu.FontString:SetPoint("TOPLEFT", HealingAsssignments.Mainframe.Foreground.Profile[ProfileNum].Template[TemplateNum].Menu, "TOPLEFT", 5, -3) 83 | HealingAsssignments.Mainframe.Foreground.Profile[ProfileNum].Template[TemplateNum].Menu.FontString:SetFont("Fonts\\FRIZQT__.TTF", 11) 84 | HealingAsssignments.Mainframe.Foreground.Profile[ProfileNum].Template[TemplateNum].Menu.FontString:SetWidth(200) 85 | HealingAsssignments.Mainframe.Foreground.Profile[ProfileNum].Template[TemplateNum].Menu.FontString:SetJustifyH("LEFT") 86 | HealingAsssignments.Mainframe.Foreground.Profile[ProfileNum].Template[TemplateNum].Menu.FontString:SetText(HealingAssignmentsTemplates.Profile[ProfileNum].Template[TemplateNum].Name) 87 | 88 | -- Button 89 | HealingAsssignments.Mainframe.Foreground.Profile[ProfileNum].Template[TemplateNum].Menu.Button = CreateFrame("Button",nil,HealingAsssignments.Mainframe.Foreground.Profile[ProfileNum].Template[TemplateNum].Menu,"UIPanelButtonTemplate") 90 | HealingAsssignments.Mainframe.Foreground.Profile[ProfileNum].Template[TemplateNum].Menu.Button:SetPoint("TOPLEFT",133,0) 91 | HealingAsssignments.Mainframe.Foreground.Profile[ProfileNum].Template[TemplateNum].Menu.Button:SetFrameStrata("LOW") 92 | HealingAsssignments.Mainframe.Foreground.Profile[ProfileNum].Template[TemplateNum].Menu.Button:SetWidth(20) 93 | HealingAsssignments.Mainframe.Foreground.Profile[ProfileNum].Template[TemplateNum].Menu.Button:SetHeight(20) 94 | HealingAsssignments.Mainframe.Foreground.Profile[ProfileNum].Template[TemplateNum].Menu.Button:SetText("X") 95 | HealingAsssignments.Mainframe.Foreground.Profile[ProfileNum].Template[TemplateNum].Menu.Button:SetScript("OnClick", function() PlaySound("igMainMenuOptionCheckBoxOn") 96 | HealingAsssignments.Mainframe:OpenTemplateDeleteOptions(TemplateNum) 97 | end) 98 | -- create scrollframe! 99 | HealingAsssignments.Mainframe:AddAssignmentFrame(ProfileNum,TemplateNum) 100 | HealingAssignmentsTemplates.Profile[ProfileNum].Template[TemplateNum].TankNum = 0; 101 | HealingAssignmentsTemplates.Profile[ProfileNum].Template[TemplateNum].TankHealer = {} 102 | else HealingAssignmentsTemplates.Profile[ProfileNum].Template[TemplateNum].Name = name -- Save this to global 103 | HealingAsssignments.Mainframe.Foreground.Profile[ProfileNum].Template[TemplateNum].Name = name 104 | HealingAsssignments.Mainframe.Foreground.Profile[ProfileNum].Template[TemplateNum].Menu.FontString:SetText(name) 105 | end 106 | end 107 | 108 | function HealingAsssignments.Syncframe:AddDropdown(ProfileNum,TemplateNum,DropType,ActiveTankFrame,ActiveHealerFrame,DropText) 109 | -- tank dropdown 110 | if not DropText or DropText == nil then DropText = " " end 111 | if DropType == 2 then 112 | -- delete all old text 113 | if ActiveTankFrame == 1 then 114 | HealingAsssignments.Syncframe:ResetDropdownText(ProfileNum,TemplateNum) 115 | end 116 | 117 | if not HealingAsssignments.Mainframe.Foreground.Profile[ProfileNum].Template[TemplateNum].Assigments.Content.Frame then HealingAsssignments.Mainframe.Foreground.Profile[ProfileNum].Template[TemplateNum].Assigments.Content.Frame = {} end 118 | if not HealingAsssignments.Mainframe.Foreground.Profile[ProfileNum].Template[TemplateNum].Assigments.Content.Frame[ActiveTankFrame] then 119 | HealingAsssignments.Mainframe.Foreground.Profile[ProfileNum].Template[TemplateNum].Assigments.Content.Frame[ActiveTankFrame] = CreateFrame("Frame", nil, HealingAsssignments.Mainframe.Foreground.Profile[ProfileNum].Template[TemplateNum].Assigments.Content); 120 | HealingAsssignments.Mainframe.Foreground.Profile[ProfileNum].Template[TemplateNum].Assigments.Content.Frame[ActiveTankFrame]:SetFrameStrata("LOW") 121 | HealingAsssignments.Mainframe.Foreground.Profile[ProfileNum].Template[TemplateNum].Assigments.Content.Frame[ActiveTankFrame]:SetWidth(565) -- Set these to whatever height/width is needed 122 | HealingAsssignments.Mainframe.Foreground.Profile[ProfileNum].Template[TemplateNum].Assigments.Content.Frame[ActiveTankFrame]:SetHeight(60) -- for your Texture 123 | local height = HealingAsssignments.Mainframe:GetScrollFrameHeight(ProfileNum,TemplateNum) 124 | HealingAsssignments.Mainframe.Foreground.Profile[ProfileNum].Template[TemplateNum].Assigments.Content.Frame[ActiveTankFrame]:SetPoint("TOPLEFT", 0, -height+60) 125 | local colorBg = HealingAsssignments.Mainframe.Foreground.Profile[ProfileNum].Template[TemplateNum].Assigments.Content.Frame[ActiveTankFrame]:CreateTexture(nil, "BACKGROUND") 126 | colorBg:SetAllPoints(HealingAsssignments.Mainframe.Foreground.Profile[ProfileNum].Template[TemplateNum].Assigments.Content.Frame[ActiveTankFrame]) 127 | colorBg:SetTexture(0, 0, 0, 0) 128 | 129 | -- add dropdown here 130 | HealingAsssignments.Mainframe.DropDownCounter = HealingAsssignments.Mainframe.DropDownCounter +1 131 | local DropDownCount = HealingAsssignments.Mainframe.DropDownCounter 132 | if not HealingAsssignments.Mainframe.Foreground.Profile[ProfileNum].Template[TemplateNum].Assigments.Content.Frame[ActiveTankFrame].Tank then HealingAsssignments.Mainframe.Foreground.Profile[ProfileNum].Template[TemplateNum].Assigments.Content.Frame[ActiveTankFrame].Tank = {} end; 133 | HealingAsssignments.Mainframe.Foreground.Profile[ProfileNum].Template[TemplateNum].Assigments.Content.Frame[ActiveTankFrame].Tank[ActiveTankFrame] = CreateFrame("Button","HADropdown"..DropDownCount, HealingAsssignments.Mainframe.Foreground.Profile[ProfileNum].Template[TemplateNum].Assigments.Content.Frame[ActiveTankFrame], "UIDropDownMenuTemplate") 134 | HealingAsssignments.Mainframe.Foreground.Profile[ProfileNum].Template[TemplateNum].Assigments.Content.Frame[ActiveTankFrame].Tank[ActiveTankFrame]:SetPoint("TOPLEFT", -12, -20) 135 | getglobal(HealingAsssignments.Mainframe.Foreground.Profile[ProfileNum].Template[TemplateNum].Assigments.Content.Frame[ActiveTankFrame].Tank[ActiveTankFrame]:GetName().."Button"):SetScript("OnClick", function() 136 | local DropDownID = getglobal(HealingAsssignments.Mainframe.Foreground.Profile[ProfileNum].Template[TemplateNum].Assigments.Content.Frame[ActiveTankFrame].Tank[ActiveTankFrame]:GetName()) 137 | HealingAsssignments.Mainframe:TankDropDownOnClick(DropDownID) 138 | ToggleDropDownMenu(); -- inherit UIDropDownMenuTemplate functions 139 | PlaySound("igMainMenuOptionCheckBoxOn"); -- inherit UIDropDownMenuTemplate functions 140 | end) 141 | getglobal(HealingAsssignments.Mainframe.Foreground.Profile[ProfileNum].Template[TemplateNum].Assigments.Content.Frame[ActiveTankFrame].Tank[ActiveTankFrame]:GetName().."Text"):SetText(DropText) 142 | 143 | -- add font string 144 | local TankFontString = HealingAsssignments.Mainframe.Foreground.Profile[ProfileNum].Template[TemplateNum].Assigments.Content.Frame[ActiveTankFrame].Tank[ActiveTankFrame]:CreateFontString(nil, "OVERLAY") 145 | TankFontString:SetPoint("CENTER", 62, 27) 146 | TankFontString:SetFont("Fonts\\FRIZQT__.TTF", 11) 147 | TankFontString:SetJustifyH("CENTER") 148 | TankFontString:SetText("Tank "..ActiveTankFrame) 149 | 150 | -- reconfigure scrollslider and save Database 151 | HealingAssignmentsTemplates.Profile[ProfileNum].Template[TemplateNum].TankNum = table.getn(HealingAsssignments.Mainframe.Foreground.Profile[ProfileNum].Template[TemplateNum].Assigments.Content.Frame) 152 | if not HealingAssignmentsTemplates.Profile[ProfileNum].Template[TemplateNum].Tank then HealingAssignmentsTemplates.Profile[ProfileNum].Template[TemplateNum].Tank = {} end 153 | HealingAssignmentsTemplates.Profile[ProfileNum].Template[TemplateNum].Tank[ActiveTankFrame] = DropText 154 | 155 | --HealingAsssignments.Mainframe:SetScrollFrameHeight(TemplateNum) 156 | else getglobal(HealingAsssignments.Mainframe.Foreground.Profile[ProfileNum].Template[TemplateNum].Assigments.Content.Frame[ActiveTankFrame].Tank[ActiveTankFrame]:GetName().."Text"):SetText(DropText) 157 | HealingAssignmentsTemplates.Profile[ProfileNum].Template[TemplateNum].Tank[ActiveTankFrame] = DropText 158 | end 159 | 160 | --healer dropdown 161 | elseif DropType > 2 then 162 | if not HealingAsssignments.Mainframe.Foreground.Profile[ProfileNum].Template[TemplateNum].Assigments.Content.Frame[ActiveTankFrame].Healer or not HealingAsssignments.Mainframe.Foreground.Profile[ProfileNum].Template[TemplateNum].Assigments.Content.Frame[ActiveTankFrame].Healer[ActiveHealerFrame] then 163 | HealingAsssignments.Mainframe.DropDownCounter = HealingAsssignments.Mainframe.DropDownCounter +1 164 | local DropDownCount = HealingAsssignments.Mainframe.DropDownCounter 165 | if not HealingAsssignments.Mainframe.Foreground.Profile[ProfileNum].Template[TemplateNum].Assigments.Content.Frame[ActiveTankFrame].Healer then HealingAsssignments.Mainframe.Foreground.Profile[ProfileNum].Template[TemplateNum].Assigments.Content.Frame[ActiveTankFrame].Healer = {} end; 166 | HealingAsssignments.Mainframe.Foreground.Profile[ProfileNum].Template[TemplateNum].Assigments.Content.Frame[ActiveTankFrame].Healer[ActiveHealerFrame] = CreateFrame("Button","HADropdown"..DropDownCount, HealingAsssignments.Mainframe.Foreground.Profile[ProfileNum].Template[TemplateNum].Assigments.Content.Frame[ActiveTankFrame], "UIDropDownMenuTemplate") 167 | getglobal(HealingAsssignments.Mainframe.Foreground.Profile[ProfileNum].Template[TemplateNum].Assigments.Content.Frame[ActiveTankFrame].Healer[ActiveHealerFrame]:GetName().."Button"):SetScript("OnClick", function() 168 | local DropDownID = getglobal(HealingAsssignments.Mainframe.Foreground.Profile[ProfileNum].Template[TemplateNum].Assigments.Content.Frame[ActiveTankFrame].Healer[ActiveHealerFrame]:GetName()) 169 | HealingAsssignments.Mainframe:HealerDropDownOnClick(DropDownID) 170 | ToggleDropDownMenu(); -- inherit UIDropDownMenuTemplate functions 171 | PlaySound("igMainMenuOptionCheckBoxOn"); -- inherit UIDropDownMenuTemplate functions 172 | end) 173 | getglobal(HealingAsssignments.Mainframe.Foreground.Profile[ProfileNum].Template[TemplateNum].Assigments.Content.Frame[ActiveTankFrame].Healer[ActiveHealerFrame]:GetName().."Text"):SetText(DropText) 174 | 175 | if math.mod(ActiveHealerFrame,4) == 1 then x = 137; y = math.floor((ActiveHealerFrame/4)-(1/5))*(-60); HealingAsssignments.Mainframe.Foreground.Profile[ProfileNum].Template[TemplateNum].Assigments.Content.Frame[ActiveTankFrame]:SetHeight((math.floor((ActiveHealerFrame/3)-(1/5)))*60+60) 176 | elseif math.mod(ActiveHealerFrame,4) == 2 then x = 274; y = math.floor((ActiveHealerFrame/4)-(1/5))*(-60) 177 | elseif math.mod(ActiveHealerFrame,4) == 3 then x = 411; y = math.floor((ActiveHealerFrame/4)-(1/5))*(-60) 178 | elseif math.mod(ActiveHealerFrame,4) == 0 then x = 548; y = math.floor((ActiveHealerFrame/4)-(1/5))*(-60) end 179 | HealingAsssignments.Mainframe.Foreground.Profile[ProfileNum].Template[TemplateNum].Assigments.Content.Frame[ActiveTankFrame].Healer[ActiveHealerFrame]:SetPoint("TOPLEFT", x-12, y-20) 180 | 181 | -- add font string 182 | local HealerFontString = HealingAsssignments.Mainframe.Foreground.Profile[ProfileNum].Template[TemplateNum].Assigments.Content.Frame[ActiveTankFrame].Healer[ActiveHealerFrame]:CreateFontString(nil, "OVERLAY") 183 | HealerFontString:SetPoint("CENTER", 62, 27) 184 | HealerFontString:SetFont("Fonts\\FRIZQT__.TTF", 11) 185 | HealerFontString:SetJustifyH("CENTER") 186 | HealerFontString:SetText("Healer "..ActiveHealerFrame) 187 | 188 | -- reconfigure Slider and Set Database 189 | HealingAssignmentsTemplates.Profile[ProfileNum].Template[TemplateNum].TankHealer[ActiveTankFrame] = ActiveHealerFrame 190 | if not HealingAssignmentsTemplates.Profile[ProfileNum].Template[TemplateNum].Tankhealernames then HealingAssignmentsTemplates.Profile[ProfileNum].Template[TemplateNum].Tankhealernames = {} end 191 | if not HealingAssignmentsTemplates.Profile[ProfileNum].Template[TemplateNum].Tankhealernames[ActiveTankFrame] then HealingAssignmentsTemplates.Profile[ProfileNum].Template[TemplateNum].Tankhealernames[ActiveTankFrame] = {} end 192 | if not HealingAssignmentsTemplates.Profile[ProfileNum].Template[TemplateNum].Tankhealernames[ActiveTankFrame].Healer then HealingAssignmentsTemplates.Profile[ProfileNum].Template[TemplateNum].Tankhealernames[ActiveTankFrame].Healer = {} end 193 | HealingAssignmentsTemplates.Profile[ProfileNum].Template[TemplateNum].Tankhealernames[ActiveTankFrame].Healer[ActiveHealerFrame] = DropText 194 | else getglobal(HealingAsssignments.Mainframe.Foreground.Profile[ProfileNum].Template[TemplateNum].Assigments.Content.Frame[ActiveTankFrame].Healer[ActiveHealerFrame]:GetName().."Text"):SetText(DropText) 195 | HealingAssignmentsTemplates.Profile[ProfileNum].Template[TemplateNum].Tankhealernames[ActiveTankFrame].Healer[ActiveHealerFrame] = DropText 196 | end 197 | end 198 | end 199 | 200 | function HealingAsssignments.Syncframe:TriggerSync() 201 | if HealingAsssignments.Mainframe.SyncCheckbox:GetChecked() == 1 then 202 | SendAddonMessage("VHTrigger","trigger", "RAID") 203 | end 204 | end 205 | 206 | function HealingAsssignments.Syncframe:ResetDropdownText(ProfileNum,TemplateNum) 207 | local TankNum = 0 208 | local HealerNum = 0 209 | if HealingAssignmentsTemplates.Profile[ProfileNum].Template[TemplateNum].TankNum then TankNum = HealingAssignmentsTemplates.Profile[ProfileNum].Template[TemplateNum].TankNum end 210 | for i=1,TankNum do 211 | HealerNum = HealingAssignmentsTemplates.Profile[ProfileNum].Template[TemplateNum].TankHealer[i] 212 | getglobal(HealingAsssignments.Mainframe.Foreground.Profile[ProfileNum].Template[TemplateNum].Assigments.Content.Frame[i].Tank[i]:GetName().."Text"):SetText(" ") 213 | if HealerNum == nil then HealerNum = 0 end 214 | for j=1,HealerNum do 215 | getglobal(HealingAsssignments.Mainframe.Foreground.Profile[ProfileNum].Template[TemplateNum].Assigments.Content.Frame[i].Healer[j]:GetName().."Text"):SetText(" ") 216 | end 217 | end 218 | end 219 | 220 | function HealingAsssignments.Syncframe:PopulateDropdown() 221 | -- get the number of profiles 222 | local NumofProfiles = 0 223 | local info = {}; 224 | for i=1,11 do 225 | if HealingAssignmentsTemplates.Profile[i].Name ~= " " then 226 | info.text = HealingAssignmentsTemplates.Profile[i].Name 227 | info.checked = false 228 | info.func = function() 229 | UIDropDownMenu_SetSelectedID(GlobalDropDownID, this:GetID(), 0); 230 | HealingAsssignments.Syncframe:ProfileDropdown() 231 | HealingAsssignments.Syncframe:UpdateDeleteButton() 232 | end 233 | UIDropDownMenu_AddButton(info); 234 | end 235 | end 236 | end 237 | 238 | -- update the profile choose dropdown 239 | function HealingAsssignments.Syncframe:UpdateDropdown() 240 | local DropDownID = getglobal(HealingAsssignments.Mainframe.ProfileDropdown:GetName()) 241 | GlobalDropDownID = DropDownID 242 | -- feed the dropdown 243 | UIDropDownMenu_Initialize(DropDownID, self.PopulateDropdown) 244 | end 245 | 246 | function HealingAsssignments.Syncframe:ProfileDropdown() 247 | local ProfileName = UIDropDownMenu_GetText(getglobal(HealingAsssignments.Mainframe.ProfileDropdown:GetName())) 248 | local ProfileNumber 249 | for i=1,11 do 250 | if HealingAssignmentsTemplates.Profile[i].Name == ProfileName then ProfileNumber = i break end 251 | end 252 | 253 | HealingAsssignments.Syncframe:SelectProfile(ProfileNumber) 254 | end 255 | 256 | 257 | -- send your profiles and data 258 | function HealingAsssignments.Syncframe:Send() 259 | local SendString = " " 260 | local TankName = " " 261 | local HealerName = " " 262 | local TemplateNum = getn(HealingAssignmentsTemplates.Profile[1].Template) 263 | local TemplateName = " " 264 | local TemplateNumberString 265 | 266 | for n=1,TemplateNum do 267 | TemplateName = HealingAssignmentsTemplates.Profile[1].Template[n].Name 268 | local TankNum = HealingAssignmentsTemplates.Profile[1].Template[n].TankNum 269 | if TankNum == nil or TankNum == 0 then 270 | if n<10 then TemplateNumberString = "0"..n else TemplateNumberString = n end 271 | SendString = " " 272 | SendAddonMessage("VHA$"..TemplateNumberString.."$"..TemplateName ,SendString, "RAID") 273 | end 274 | for i=1,TankNum do 275 | SendString = " " 276 | TankName = getglobal(HealingAsssignments.Mainframe.Foreground.Profile[1].Template[n].Assigments.Content.Frame[i].Tank[i]:GetName().."Text"):GetText(" ") 277 | if TankName == nil then TankName = " " end 278 | SendString = i.."#"..TankName.."#" 279 | local HealerNum = HealingAssignmentsTemplates.Profile[1].Template[n].TankHealer[i] 280 | if HealerNum == nil then HealerNum = 0 end 281 | for j=1,HealerNum do 282 | HealerName = getglobal(HealingAsssignments.Mainframe.Foreground.Profile[1].Template[n].Assigments.Content.Frame[i].Healer[j]:GetName().."Text"):GetText(" ") 283 | if HealerName == nil then HealerName = " " end 284 | SendString = SendString..HealerName.."#" 285 | end 286 | if n<10 then TemplateNumberString = "0"..n else TemplateNumberString = n end 287 | SendAddonMessage("VHA$"..TemplateNumberString.."$"..TemplateName ,SendString, "RAID") 288 | end 289 | end 290 | end 291 | 292 | function HealingAsssignments.Syncframe:Receive(ProfileName,TemplateNum,TemplateName,NameArray) 293 | -- get Profile Number and set Name 294 | local ProfileNum = HealingAsssignments.Syncframe:GetProfileNum(ProfileName) 295 | if ProfileNum ~= 100 then -- if templates are full 296 | local ActiveTank = tonumber(NameArray[1]) 297 | if ActiveTank == nil then ActiveTank = 0 end 298 | local Height = 0 299 | -- add templates 300 | self:AddTemplate(ProfileNum,TemplateNum,TemplateName) -- works! 301 | 302 | -- add dropdowns 303 | for i=2,getn(NameArray) do 304 | HealingAsssignments.Syncframe:AddDropdown(ProfileNum,TemplateNum,i,ActiveTank,i-2,NameArray[i]) 305 | end 306 | 307 | -- rearrange dropdowns 308 | if ActiveTank >= 2 then 309 | for i=1,ActiveTank-1 do 310 | Height = Height + HealingAsssignments.Mainframe.Foreground.Profile[ProfileNum].Template[TemplateNum].Assigments.Content.Frame[i]:GetHeight() 311 | end 312 | HealingAsssignments.Mainframe.Foreground.Profile[ProfileNum].Template[TemplateNum].Assigments.Content.Frame[ActiveTank]:SetPoint("TOPLEFT", 0, -Height) 313 | end 314 | 315 | -- reconfig height of scrollbar 316 | Height = 0 317 | if HealingAsssignments.Mainframe.Foreground.Profile[ProfileNum].Template[TemplateNum].Assigments.Content.Frame ~= nil then 318 | for i=1,table.getn(HealingAsssignments.Mainframe.Foreground.Profile[ProfileNum].Template[TemplateNum].Assigments.Content.Frame) do 319 | Height = Height + HealingAsssignments.Mainframe.Foreground.Profile[ProfileNum].Template[TemplateNum].Assigments.Content.Frame[i]:GetHeight() 320 | end 321 | end 322 | if Height > 300 then HealingAsssignments.Mainframe.Foreground.Profile[ProfileNum].Template[TemplateNum].Assigments.Scrollbar:SetMinMaxValues(0, Height-300) end 323 | 324 | HealingAsssignments.Syncframe:SelectProfile(HealingAsssignments.Mainframe.ActiveProfile) 325 | end 326 | end 327 | 328 | function HealingAsssignments.Syncframe:DeleteProfile() 329 | local ProfileNum = HealingAsssignments.Syncframe:GetProfileNumNonSave(UIDropDownMenu_GetText(getglobal(HealingAsssignments.Mainframe.ProfileDropdown:GetName()))) 330 | if ProfileNum >= 2 and ProfileNum <= 11 then 331 | for i=1,getn(HealingAsssignments.Mainframe.Foreground.Profile[ProfileNum].Template) do 332 | HealingAsssignments.Mainframe.Foreground.Profile[ProfileNum].Template[i].Menu.ScriptButton:Hide() 333 | HealingAsssignments.Mainframe.Foreground.Profile[ProfileNum].Template[i].Menu.ScriptButton:SetParent(nil) 334 | HealingAsssignments.Mainframe.Foreground.Profile[ProfileNum].Template[i].Menu:Hide() 335 | HealingAsssignments.Mainframe.Foreground.Profile[ProfileNum].Template[i].Menu:SetParent(nil) 336 | HealingAsssignments.Mainframe.Foreground.Profile[ProfileNum].Template[i].Assigments:Hide() 337 | HealingAsssignments.Mainframe.Foreground.Profile[ProfileNum].Template[i].Assigments:SetParent(nil) 338 | HealingAsssignments.Mainframe.Foreground.Profile[ProfileNum].Template[i] = nil 339 | HealingAssignmentsTemplates.Profile[ProfileNum] = {} 340 | HealingAssignmentsTemplates.Profile[ProfileNum].Template = {} 341 | HealingAssignmentsTemplates.Profile[ProfileNum].Template.TankHealer = {} 342 | HealingAssignmentsTemplates.Profile[ProfileNum].Template.Name = {} 343 | HealingAssignmentsTemplates.Profile[ProfileNum].Name = " " 344 | end 345 | HealingAsssignments.Syncframe:SelectProfile(1) 346 | HealingAsssignments.Syncframe:UpdateDropdown() 347 | HealingAsssignments.Syncframe:UpdateDeleteButton() 348 | end 349 | end 350 | 351 | function HealingAsssignments.Syncframe:UpdateDeleteButton() 352 | local ProfileName = UIDropDownMenu_GetText(getglobal(HealingAsssignments.Mainframe.ProfileDropdown:GetName())) 353 | if ProfileName == UnitName("player") then HealingAsssignments.Mainframe.SyncDeleteButton:Disable() 354 | else HealingAsssignments.Mainframe.SyncDeleteButton:Enable() end 355 | end 356 | -------------------------------------------------------------------------------- /VanillaHealingAssignments.toc: -------------------------------------------------------------------------------- 1 | ## Interface: 11200 2 | ## Title: Vanilla Healing Assignments 3 | ## Author: |cff00FF00Renew @ vanillagaming.org 4 | ## Version: 2.02 5 | ## Notes: Addon for Healing Assignments - by |cff00FF00Renew @ vanillagaming.org 6 | ## DefaultState: Enabled 7 | ## LoadOnDemand: 0 8 | ## SavedVariables: HealingAssignmentsTemplates 9 | 10 | HealingAssignments.lua 11 | Modules\Database.lua 12 | Modules\Posting.lua 13 | Modules\Sync.lua --------------------------------------------------------------------------------