We're porting Retail add-ons to Beta, Come Get 'Em

3rd hand info from Discord - ElvUI is going to get a classic wow update.

3 Likes

IMHO it’s more about Durrus being an professional programmer themselves so doesn’t want to run afoul of any copyright issues due to licensing issues.

1 Like

Well that’s not exactly how IP works. You can’t be held culpable for infringement.

Which really just comes down to some add on makes being drama queens.

1 Like

There is a large difference between “Can’t be bothered” and “Have no way to test changes even if they did make them”.

1 Like

Right so why are they being jerks when people who can do?

Create something of your own from scratch and then see how you feel about someone putting their own level of quality on it a passing it out just because of circumstances beyond your control.

My guess is you wouldn’t just smile and and say “thank you for your service to the community”. But, it’s not your time, effort and creativity being messed with so that’s OK right. and as mentioned before, the support you will have to give when you do get things back on track to someone else potentially sub-standard work.

I don’t see the OP doing anything other than making add ons work in beta classic. I don’t see him claiming that those add ons now belong to him or that he developed them himself.

I develop as a job, and I don’t care when other people use what I develop as I can always develop something new or better :stuck_out_tongue:

You don’t see the OP saying he fully understands the impacts of his changes you that they won’t cause ill effects when something ocures happens that he’s aware about because he hasn’t spend the hours, days, weeks getting to understand just how the parts of the addon work together.

Just taking the output from a debugger at startup and applying deletions and band aid fixes is no guarantee something won’t happen later. But you as a developer know this right.

Yup, you get paid to not care. These people create addons and publish them for a pittance if that because they DO care, apparently while others make selfish, lazy, non-sensical judgements about them.

Umm… i get paid nothing to care about WoW addons.

Then they should be happy people care enough about their addons that they are willing to take their time to make them work in beta.

Yes, I don’t see the OP anywhere claiming these are perfect versions endorsed by whoever. All i can see is the Op claiming these are as you said very intermediate ports while the actual authors work on them.

If you’d like to get clique to work on your own I can tell you what the OP did to the retail version to make it work since I dled it before he removed it. There are a number of changes, but they are all very minor, it seems to just be commenting out code related to things that are no longer there.

Get the current version that works in BfA then make changes in the following files:

Bindconfig.lua
blizzardframes.lua
clique.lua
clique.toc
optionspanel.lua

In: BindConfig.lua find:

function CliqueConfig:SetupGUI()
    self.talents = {}
    for i = 1, GetNumSpecializations() do
        local id, name = GetSpecializationInfo(i)
        self.talents[i] = name
    end

change to

function CliqueConfig:SetupGUI()
    self.talents = {}
    --[[for i = 1, GetNumSpecializations() do
        local id, name = GetSpecializationInfo(i)
        self.talents[i] = name
    end--]]

In BlizzardFrames.lua:

Change:

self.arena = make_checkbox("ArenaEnemy", L["Arena enemy frames"])

to

--self.arena = make_checkbox("ArenaEnemy", L["Arena enemy frames"])

self.boss = make_checkbox("BossTarget", L["Boss target frames"])

to

--self.boss = make_checkbox("BossTarget", L["Boss target frames"])

table.insert(bits, self.arena)

to

--table.insert(bits, self.arena)

table.insert(bits, self.boss)

to

--table.insert(bits, self.boss)

panel.arena:SetChecked(opt.arena)

to

--panel.arena:SetChecked(opt.arena)

panel.boss:SetChecked(opt.boss)

to

--panel.boss:SetChecked(opt.boss)

opt.arena = not not panel.arena:GetChecked()

to

--opt.arena = not not panel.arena:GetChecked()

opt.boss = not not panel.boss:GetChecked()

to

--opt.boss = not not panel.boss:GetChecked()

"FocusFrame",
"FocusFrameToT",

to

--[["FocusFrame",
"FocusFrameToT",--]]
function addon:Enable_BlizzBossFrames()
    if not addon.settings.blizzframes.boss then
        return
    end

    local frames = {
        "Boss1TargetFrame",
        "Boss2TargetFrame",
        "Boss3TargetFrame",
        "Boss4TargetFrame",
    }
    for idx, frame in ipairs(frames) do
        enable(frame)
    end
end

to

--[[function addon:Enable_BlizzBossFrames()
    if not addon.settings.blizzframes.boss then
        return
    end

    local frames = {
        "Boss1TargetFrame",
        "Boss2TargetFrame",
        "Boss3TargetFrame",
        "Boss4TargetFrame",
    }
    for idx, frame in ipairs(frames) do
        enable(frame)
    end
end--]]

self:Enable_BlizzBossFrames()

to

--self:Enable_BlizzBossFrames()

Now, in Clique.lua

self:RegisterEvent("ACTIVE_TALENT_GROUP_CHANGED","TalentGroupChanged")

to

--self:RegisterEvent("ACTIVE_TALENT_GROUP_CHANGED","TalentGroupChanged")

addon:TalentGroupChanged()

to

--addon:TalentGroupChanged()

function addon:TalentGroupChanged()
    local currentProfile = self.db:GetCurrentProfile()
    local newProfile

    local currentSpec = GetSpecialization()
	if self.settings.specswap and currentSpec then
        local settingsKey = string.format("spec%d_profileKey", currentSpec)
        if self.settings[settingsKey] then
            newProfile = self.settings[settingsKey]
        end

        if newProfile ~= currentProfile and type(newProfile) == "string" then
            self.db:SetProfile(newProfile)
        end
    end

    self:FireMessage("BINDINGS_CHANGED")
end

to

--[[function addon:TalentGroupChanged()
    local currentProfile = self.db:GetCurrentProfile()
    local newProfile

    local currentSpec = GetSpecialization()
	if self.settings.specswap and currentSpec then
        local settingsKey = string.format("spec%d_profileKey", currentSpec)
        if self.settings[settingsKey] then
            newProfile = self.settings[settingsKey]
        end

        if newProfile ~= currentProfile and type(newProfile) == "string" then
            self.db:SetProfile(newProfile)
        end
    end

    self:FireMessage("BINDINGS_CHANGED")
end--]]

in Clique.toc

change

## Interface: 80000

to

## Interface: 11302

In OptionsPanel.lua

change

    self.talentProfiles = {}
    self.specswap = make_checkbox("CliqueOptionsSpecSwap", self)
    self.specswap.text:SetText(L["Swap profiles based on talent spec"])
    self.specswap.EnableDisable = function()
        local toggleFunc
        if self.specswap:GetChecked() then
            toggleFunc = UIDropDownMenu_EnableDropDown
        else
            toggleFunc = UIDropDownMenu_DisableDropDown
        end
        for i = 1, #panel.talentProfiles do
            toggleFunc(self.talentProfiles[i])
        end
    end
    self.specswap:SetScript("PostClick", self.specswap.EnableDisable)

    -- Generate the dropdowns for each spec
    for i = 1, GetNumSpecializations() do
        local _, specName = GetSpecializationInfo(i)
        local name = "CliqueOptionsSpec" .. i
        local label = make_label(name .. "Label", self, "GameFontNormalSmall")
        label:SetText(L["Talent profile: %s"]:format(specName))
        self.talentProfiles[i] = make_dropdown(name, self)
        self.talentProfiles[i].profileLabel = label
        UIDropDownMenu_SetWidth(self.talentProfiles[i], 200)
        BlizzardOptionsPanel_SetupDependentControl(self.specswap, self.talentProfiles[i])
    end

to

    --[[self.talentProfiles = {}
    self.specswap = make_checkbox("CliqueOptionsSpecSwap", self)
    self.specswap.text:SetText(L["Swap profiles based on talent spec"])
    self.specswap.EnableDisable = function()
        local toggleFunc
        if self.specswap:GetChecked() then
            toggleFunc = UIDropDownMenu_EnableDropDown
        else
            toggleFunc = UIDropDownMenu_DisableDropDown
        end
        for i = 1, #panel.talentProfiles do
            toggleFunc(self.talentProfiles[i])
        end
    end
    self.specswap:SetScript("PostClick", self.specswap.EnableDisable)

    -- Generate the dropdowns for each spec
    for i = 1, GetNumSpecializations() do
        local _, specName = GetSpecializationInfo(i)
        local name = "CliqueOptionsSpec" .. i
        local label = make_label(name .. "Label", self, "GameFontNormalSmall")
        label:SetText(L["Talent profile: %s"]:format(specName))
        self.talentProfiles[i] = make_dropdown(name, self)
        self.talentProfiles[i].profileLabel = label
        UIDropDownMenu_SetWidth(self.talentProfiles[i], 200)
        BlizzardOptionsPanel_SetupDependentControl(self.specswap, self.talentProfiles[i])
    end--]]
    for i = 1, #self.talentProfiles do
        table.insert(bits, self.talentProfiles[i].profileLabel)
        table.insert(bits, self.talentProfiles[i])
    end

to

    --[[for i = 1, #self.talentProfiles do
        table.insert(bits, self.talentProfiles[i].profileLabel)
        table.insert(bits, self.talentProfiles[i])
    end--]]
    for i = 1, #panel.talentProfiles do
        local dbKey = string.format("spec%d_profileKey", i)
        local dropdown = panel.talentProfiles[i]
        UIDropDownMenu_Initialize(dropdown, spec_initialize)
        UIDropDownMenu_SetSelectedValue(dropdown, settings[dbKey] or currentProfile)
        UIDropDownMenu_SetText(dropdown, settings[dbKey] or currentProfile)
    end

to

    --[[for i = 1, #panel.talentProfiles do
        local dbKey = string.format("spec%d_profileKey", i)
        local dropdown = panel.talentProfiles[i]
        UIDropDownMenu_Initialize(dropdown, spec_initialize)
        UIDropDownMenu_SetSelectedValue(dropdown, settings[dbKey] or currentProfile)
        UIDropDownMenu_SetText(dropdown, settings[dbKey] or currentProfile)
    end--]]
    panel.specswap:SetChecked(settings.specswap)
    panel.specswap.EnableDisable()

to

    --panel.specswap:SetChecked(settings.specswap)
    --panel.specswap.EnableDisable()
    settings.specswap = not not panel.specswap:GetChecked()

    for i = 1, #panel.talentProfiles do
        local settingsKey = string.format("spec%d_profileKey", i)
        local dropdown = panel.talentProfiles[i]
        settings[settingsKey] = UIDropDownMenu_GetSelectedValue(dropdown)
    end

to

    --[[settings.specswap = not not panel.specswap:GetChecked()

    for i = 1, #panel.talentProfiles do
        local settingsKey = string.format("spec%d_profileKey", i)
        local dropdown = panel.talentProfiles[i]
        settings[settingsKey] = UIDropDownMenu_GetSelectedValue(dropdown)
    end--]]

I think that’s all of them.

edit: one I missed from before in clique.lua needs to be changed to:

local function correctSpec(entry)
    --[[
    -- Check to ensure we're on the right spec for this binding
    local currentSpec = GetSpecialization()
    if currentSpec and entry.sets["spec" .. tostring(currentSpec)] then
        return true
    end

    -- Need to check the other spec sets to ensure this shouldn't be
    -- deactivated
    for i = 1, GetNumSpecializations() do
        if entry.sets["spec" .. tostring(i)] then
            return false
        end
    end
    --]]
1 Like

You keep coming back to this line of rubbish which makes me think you really have no vested interest in the subject and more interest in just doing that tired old internet thing.

/shrug my interest is in working add ons in classic :slight_smile:

Then work on your own and release them, you’re a mighty developer :wink:.

If I did I wouldn’t be whiny when someone else released a working version :slight_smile:

Well, other then the elegant failure condition in the one case. <3 That one. (edit: misread that part the first time through)

Time to fire up notepad++ and make some changes.

I see absolutely no proof of this so I can only speculate based on what I’ve seen. It doesn’t stack up in your favour.

Battleground Enemies/Targets

/shrug based on the OP having to pull things he fixed there is indeed proof add on devs are being whiny babies.

Cladhaire, the author of Clique, just contacted me recently, and we’ve begun a discussion about bringing his add-on to Classic. He had a few technical and distribution questions, and asked for access to the changes I made to get things working. I have responded. Cross your fingers, fellow healers… our friend from Stormrage might be about to save the day in Classic!

Stay tuned…

1 Like