vanilla-wow-addons – Rev 1

Subversion Repositories:
Rev:
assert( oRA, "oRA not found!")

------------------------------
--      Are you local?      --
------------------------------

local L = AceLibrary("AceLocale-2.2"):new("oRAPAssist")

----------------------------
--      Localization      --
----------------------------

L:RegisterTranslations("enUS", function() return {
        ["'|c00FFFFFF%s|r' wants you to assist him/her.\nPress Assist to assist."] = true,
        ["assistparticipant"] = true,
        ["assist"] = true,
        ["Assist"] = true,
        ["Options for assist."] = true,
        ["sound"] = true,
        ["Sound"] = true,
        ["Toggle an audio warning upon an assist request."] = true,
        ["Participant/Assist"] = true,
} end )

L:RegisterTranslations("koKR", function() return {

        ["'|c00FFFFFF%s|r' wants you to assist him/her.\nPress Assist to assist."] = "'|c00FFFFFF%s|r'님이 당신이 지원해주기를 원합니다.\n지원하기 위해서는 지원 버튼을 누르세요.",
        ["Assist"] = "지원",
        ["Options for assist."] = "지원 설정",
        ["Sound"] = "소리",
        ["Toggle an audio warning upon an assist request."] = "지원 요청이 들어 왔을 때의 경고음을 토글합니다.",
        ["Participant/Assist"] = "부분/지원",
} end )

L:RegisterTranslations("zhCN", function() return {
        ["'|c00FFFFFF%s|r' wants you to assist him/her.\nPress Assist to assist."] = "'|c00FFFFFF%s|r' 希望你协助他的目标r。\n点击协助来允许。",
        ["assistparticipant"] = "assistparticipant",
        ["assist"] = "协助",
        ["Assist"] = "协助",
        ["Options for assist."] = "协助选项",
        ["sound"] = "声音",
        ["Sound"] = "声音",
        ["Toggle an audio warning upon an assist request."] = "收到协助请求发声",
        ["Participant/Assist"] = "Participant/Assist",
} end )

L:RegisterTranslations("zhTW", function() return {
        ["'|c00FFFFFF%s|r' wants you to assist him/her.\nPress Assist to assist."] = "'|c00FFFFFF%s|r' 希望你協助他的目標。\n點擊協助來協助。",
        ["assistparticipant"] = "assistparticipant",
        ["assist"] = "協助",
        ["Assist"] = "協助",
        ["Options for assist."] = "協助選項",
        ["sound"] = "聲音",
        ["Sound"] = "聲音",
        ["Toggle an audio warning upon an assist request."] = "收到協助請求時聲音提示",
        ["Participant/Assist"] = "隊員/協助",
} end )

L:RegisterTranslations("frFR", function() return {
        ["'|c00FFFFFF%s|r' wants you to assist him/her.\nPress Assist to assist."] = "'|c00FFFFFF%s|r' veux que vous l'aidiez.\nAppuyez sur Aide pour l'aider.",
        --["assistparticipant"] = true,
        --["assist"] = true,
        ["Assist"] = "Aide",
        ["Options for assist."] = "Options concernant l'aide.",
        --["sound"] = true,
        ["Sound"] = "Son",
        ["Toggle an audio warning upon an assist request."] = "Joue un avertissement sonore quand quelqu'un demande de l'aide.",
        ["Participant/Assist"] = "Participant/Aide",
} end )

----------------------------------
--      Module Declaration      --
----------------------------------

oRAPAssist = oRA:NewModule(L["assistparticipant"])
oRAPAssist.defaults = {
        sound = true,
}
oRAPAssist.participant = true
oRAPAssist.consoleCmd = L["assist"]
oRAPAssist.name = L["Participant/Assist"]
oRAPAssist.consoleOptions = {
        type = "group",
        desc = L["Options for assist."],
        name = L["Assist"],
        args = {
                [L["sound"]] = {
                        name = L["Sound"], type = "toggle",
                        desc = L["Toggle an audio warning upon an assist request."],
                        get = function() return oRAPAssist.db.profile.sound end,
                        set = function(v)
                                oRAPAssist.db.profile.sound = v
                        end,
                },
        }
}


------------------------------
--      Initialization      --
------------------------------

function oRAPAssist:OnEnable()
        self:SetupFrames()
        self:RegisterCheck("ASSISTME", "oRA_AssistMe")
        self:RegisterCheck("STOPASSIST", "oRA_StopAssist")
end

function oRAPAssist:OnDisable()
        self:UnregisterAllEvents()
        self:UnregisterCheck("ASSISTME")
        self:UnregisterCheck("STOPASSIST")
end


function oRAPAssist:oRA_AssistMe(msg, author)
        if not self:IsValidRequest(author) then return end
        msg = self:CleanMessage(msg)
        local _,_,p = string.find(msg, "^ASSISTME (.+)$")
        if p and p == UnitName("player") then
                self.assistPerson = author
                self.frames.aheader:SetText(L["Assist"])
                self.frames.ainfo:SetText(string.format( L["'|c00FFFFFF%s|r' wants you to assist him/her.\nPress Assist to assist."], self.assistPerson))
                self.frames.abuttontext:SetText(L["Assist"])
                self.frames.assist:Show()
                if self.db.profile.sound then PlaySound("TellMessage") end
        end
end

function oRAPAssist:oRA_StopAssist(msg, author)
        if not self:IsValidRequest(author) then return end
        msg = self:CleanMessage(msg)
        local _,_,p = string.find(msg, "^STOPASSIST (.+)$")
        if p and p == UnitName("player") then
                self.frames.assist:Hide()
        end
end


function oRAPAssist:SetupFrames()       
        local f, t      

        f, _, _ = GameFontNormal:GetFont()

        self.frames = {}
        self.frames.assist = CreateFrame("Frame", nil, UIParent)
        self.frames.assist:Hide()
        self.frames.assist:SetWidth(325)
        self.frames.assist:SetHeight(125)
        self.frames.assist:SetBackdrop({
                bgFile = "Interface\\DialogFrame\\UI-DialogBox-Background", tile = true, tileSize = 16,
                edgeFile = "Interface\\Tooltips\\UI-Tooltip-Border", edgeSize = 16,
                insets = {left = 4, right = 4, top = 4, bottom = 4},
                })
        self.frames.assist:SetBackdropBorderColor(.5, .5, .5)
        self.frames.assist:SetBackdropColor(0,0,0)
        self.frames.assist:ClearAllPoints()
        self.frames.assist:SetPoint("CENTER", WorldFrame, "CENTER", 0, 0)

        self.frames.cfade = self.frames.assist:CreateTexture(nil, "BORDER")
        self.frames.cfade:SetWidth(319)
        self.frames.cfade:SetHeight(25)
        self.frames.cfade:SetTexture("Interface\\ChatFrame\\ChatFrameBackground")
        self.frames.cfade:SetPoint("TOP", self.frames.assist, "TOP", 0, -4)
        self.frames.cfade:SetBlendMode("ADD")
        self.frames.cfade:SetGradientAlpha("VERTICAL", .1, .1, .1, 0, .25, .25, .25, 1)
        self.frames.assist.Fade = self.frames.fade

        self.frames.aheader = self.frames.assist:CreateFontString(nil,"OVERLAY")
        self.frames.aheader:SetFont(f, 14)
        self.frames.aheader:SetWidth(300)
        self.frames.aheader:SetText("header")
        self.frames.aheader:SetTextColor(1, .8, 0)
        self.frames.aheader:ClearAllPoints()
        self.frames.aheader:SetPoint("TOP", self.frames.assist, "TOP", 0, -10)

        self.frames.ainfo = self.frames.assist:CreateFontString(nil,"OVERLAY")
        self.frames.ainfo:SetFont(f, 10)
        self.frames.ainfo:SetWidth(300)
        self.frames.ainfo:SetText("info")
        self.frames.ainfo:SetTextColor(1, .8, 0)
        self.frames.ainfo:ClearAllPoints()
        self.frames.ainfo:SetPoint("TOP", self.frames.aheader, "BOTTOM", 0, -10)
        
        self.frames.abutton = CreateFrame("Button", nil, self.frames.assist)
        self.frames.abutton.owner = self
        self.frames.abutton:SetWidth(125)
        self.frames.abutton:SetHeight(32)
        self.frames.abutton:SetPoint("CENTER", self.frames.assist, "CENTER", 0, -20)
        
        t = self.frames.abutton:CreateTexture()
        t:SetWidth(125)
        t:SetHeight(32)
        t:SetPoint("CENTER", self.frames.abutton, "CENTER")
        t:SetTexture("Interface\\Buttons\\UI-Panel-Button-Up")
        t:SetTexCoord(0, 0.625, 0, 0.6875)
        self.frames.abutton:SetNormalTexture(t)

        t = self.frames.abutton:CreateTexture(nil, "BACKGROUND")
        t:SetTexture("Interface\\Buttons\\UI-Panel-Button-Down")
        t:SetTexCoord(0, 0.625, 0, 0.6875)
        t:SetAllPoints(self.frames.abutton)
        self.frames.abutton:SetPushedTexture(t)
        
        t = self.frames.abutton:CreateTexture()
        t:SetTexture("Interface\\Buttons\\UI-Panel-Button-Highlight")
        t:SetTexCoord(0, 0.625, 0, 0.6875)
        t:SetAllPoints(self.frames.abutton)
        t:SetBlendMode("ADD")
        self.frames.abutton:SetHighlightTexture(t)
        self.frames.abuttontext = self.frames.abutton:CreateFontString(nil,"OVERLAY")
        self.frames.abuttontext:SetFontObject(GameFontHighlight)
        self.frames.abuttontext:SetText("Assist")
        self.frames.abuttontext:SetAllPoints(self.frames.abutton)
        
        self.frames.abutton:SetScript("OnClick",
                        function()
                                for i = 1, GetNumRaidMembers(), 1 do
                                        if ( UnitName("raid" .. i) == this.owner.assistPerson ) then
                                                        AssistUnit("raid" .. i)
                                                break;
                                        end
                                end
                                this.owner.frames.assist:Hide()
                                PlaySound("UChatScrollButton")
                        end )
end