Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
21 changes: 18 additions & 3 deletions Bars/PrimaryResourceBar.lua
Original file line number Diff line number Diff line change
Expand Up @@ -26,9 +26,24 @@ function PrimaryResourceBarMixin:GetResource()
[DRUID_TREE_FORM] = Enum.PowerType.Mana,
[36] = Enum.PowerType.Mana, -- Tome of the Wilds: Treant Form
[DRUID_CAT_FORM] = Enum.PowerType.Energy,
[DRUID_TRAVEL_FORM] = Enum.PowerType.Mana,
[DRUID_ACQUATIC_FORM] = Enum.PowerType.Mana,
[DRUID_FLIGHT_FORM] = Enum.PowerType.Mana,
[DRUID_TRAVEL_FORM] = {
[102] = Enum.PowerType.LunarPower, -- Balance: keep Lunar Power
[103] = Enum.PowerType.Mana, -- Feral
[104] = Enum.PowerType.Mana, -- Guardian
[105] = Enum.PowerType.Mana, -- Restoration
},
[DRUID_ACQUATIC_FORM] = {
[102] = Enum.PowerType.LunarPower,
[103] = Enum.PowerType.Mana,
[104] = Enum.PowerType.Mana,
[105] = Enum.PowerType.Mana,
},
[DRUID_FLIGHT_FORM] = {
[102] = Enum.PowerType.LunarPower,
[103] = Enum.PowerType.Mana,
[104] = Enum.PowerType.Mana,
[105] = Enum.PowerType.Mana,
},
[DRUID_MOONKIN_FORM_1] = Enum.PowerType.LunarPower,
[DRUID_MOONKIN_FORM_2] = Enum.PowerType.LunarPower,
},
Expand Down
13 changes: 12 additions & 1 deletion Bars/SecondaryResourceBar.lua
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,9 @@ function SecondaryResourceBarMixin:GetResource()
[102] = Enum.PowerType.Mana, -- Balance
},
[DRUID_CAT_FORM] = Enum.PowerType.ComboPoints,
[DRUID_TRAVEL_FORM] = { [102] = Enum.PowerType.Mana }, -- Balance: Mana as secondary
[DRUID_ACQUATIC_FORM] = { [102] = Enum.PowerType.Mana },
[DRUID_FLIGHT_FORM] = { [102] = Enum.PowerType.Mana },
[DRUID_MOONKIN_FORM_1] = Enum.PowerType.Mana,
[DRUID_MOONKIN_FORM_2] = Enum.PowerType.Mana,
},
Expand All @@ -59,7 +62,7 @@ function SecondaryResourceBarMixin:GetResource()
},
["WARLOCK"] = Enum.PowerType.SoulShards,
["WARRIOR"] = {
[72] = "WHIRLWIND",
[72] = "WHIRLWIND", -- Fury: only shown when showWarriorWhirlwindBar is true (checked in GetResource)
},
}

Expand All @@ -68,6 +71,14 @@ function SecondaryResourceBarMixin:GetResource()

local resource = secondaryResources[playerClass]

-- Warrior: Whirlwind bar (Fury) only when class option is enabled
if playerClass == "WARRIOR" and type(resource) == "table" then
resource = resource[specID]
if resource == "WHIRLWIND" and not addonTable.GetClassOption("showWarriorWhirlwindBar") then
resource = nil
end
end

-- Druid: form-based
if playerClass == "DRUID" then
local formID = GetShapeshiftFormID()
Expand Down
41 changes: 18 additions & 23 deletions Bars/TertiaryResourceBar.lua
Original file line number Diff line number Diff line change
Expand Up @@ -7,35 +7,28 @@ local TertiaryResourceBarMixin = Mixin({}, addonTable.PowerBarMixin)

function TertiaryResourceBarMixin:GetResource()
local playerClass = select(2, UnitClass("player"))
if playerClass == "DRUID" then
local showMana = addonTable.GetClassOption("showDruidManaInCatAndBearForm") or LEM:IsInEditMode()
if showMana then
local formID = GetShapeshiftFormID()
if formID == DRUID_CAT_FORM or formID == DRUID_BEAR_FORM then
return Enum.PowerType.Mana
end
end
return nil
end

local tertiaryResources = {
["DEATHKNIGHT"] = nil,
["DEMONHUNTER"] = nil,
["DRUID"] = nil,
["EVOKER"] = {
["EVOKER"] = {
[1473] = "EBON_MIGHT", -- Augmentation
},
["HUNTER"] = nil,
["MAGE"] = nil,
["MONK"] = nil,
["PALADIN"] = nil,
["PRIEST"] = nil,
["ROGUE"] = nil,
["SHAMAN"] = nil,
["WARLOCK"] = nil,
["WARRIOR"] = nil,
}

local spec = C_SpecializationInfo.GetSpecialization()
local specID = C_SpecializationInfo.GetSpecializationInfo(spec)

local resource = tertiaryResources[playerClass]

-- Druid: form-based
if playerClass == "DRUID" then
local formID = GetShapeshiftFormID()
resource = resource and resource[formID or 0]
end

if type(resource) == "table" then
return resource[specID]
else
Expand Down Expand Up @@ -87,16 +80,18 @@ addonTable.RegisteredBar.TertiaryResourceBar = {
x = 0,
y = -80,
useResourceAtlas = false,
-- showDruidManaBar: intentionally not in defaults; nil until user enables it. Default false.
},
allowEditPredicate = function()
local playerClass = select(2, UnitClass("player"))
if playerClass == "DRUID" then
return true
end

local spec = C_SpecializationInfo.GetSpecialization()
local specID = C_SpecializationInfo.GetSpecializationInfo(spec)
return specID == 1473 -- Augmentation
end,
loadPredicate = function()
local playerClass = select(2, UnitClass("player"))
return playerClass == "EVOKER"
end,
lemSettings = function(bar, defaults)
local dbName = bar:GetConfig().dbName

Expand Down
22 changes: 22 additions & 0 deletions Helpers/API.lua
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,28 @@ addonTable.fullUpdateBars = function()
end
end

-- Class options: stored in _Settings.ClassOptions, default false when nil
addonTable.GetClassOption = function(key)
local opts = SenseiClassResourceBarDB and SenseiClassResourceBarDB["_Settings"] and SenseiClassResourceBarDB["_Settings"].ClassOptions
if opts and opts[key] ~= nil then
return opts[key]
end
return false
end

addonTable.SetClassOption = function(key, value)
if not SenseiClassResourceBarDB then
SenseiClassResourceBarDB = {}
end
if not SenseiClassResourceBarDB["_Settings"] then
SenseiClassResourceBarDB["_Settings"] = {}
end
if not SenseiClassResourceBarDB["_Settings"].ClassOptions then
SenseiClassResourceBarDB["_Settings"].ClassOptions = {}
end
SenseiClassResourceBarDB["_Settings"].ClassOptions[key] = (value == true)
end

addonTable.decodeImportString = function(importString)
local prefix, version, encoded = importString:match("^([^:]+):(%d+):(.+)$")
if prefix ~= addonName then
Expand Down
9 changes: 8 additions & 1 deletion Locales/enUS.lua
Original file line number Diff line number Diff line change
Expand Up @@ -68,7 +68,7 @@ local baseLocale = {
["HEALTH_BAR_EDIT_MODE_NAME"] = "Health Bar",
["PRIMARY_POWER_BAR_EDIT_MODE_NAME"] = "Primary Resource Bar",
["SECONDARY_POWER_BAR_EDIT_MODE_NAME"] = "Secondary Resource Bar",
["TERNARY_POWER_BAR_EDIT_MODE_NAME"] = "Ebon Might Bar",
["TERNARY_POWER_BAR_EDIT_MODE_NAME"] = "Tertiary Resource Bar",

-- Bar visibility category - Edit Mode
["CATEGORY_BAR_VISIBILITY"] = "Bar Visibility",
Expand All @@ -78,6 +78,13 @@ local baseLocale = {
["HIDE_WHILE_MOUNTED_OR_VEHICULE"] = "Hide While Mounted Or In Vehicule",
["HIDE_WHILE_MOUNTED_OR_VEHICULE_TOOLTIP"] = "Includes Druid Travel Form",
["HIDE_MANA_ON_ROLE"] = "Hide Mana On Role",
["SETTINGS_CATEGORY_CLASS_OPTIONS"] = "Class Options",
["DRUID_ALWAYS_SHOW_MANA"] = "Druid: show mana in cat and bear form.",
["DRUID_ALWAYS_SHOW_MANA_TOOLTIP"] = "Show a mana bar in Cat Form and Bear Form",
["WARRIOR_SHOW_WHIRLWIND_BAR"] = "Warrior: show Whirlwind bar (Fury)",
["WARRIOR_SHOW_WHIRLWIND_BAR_TOOLTIP"] = "Show the Improved Whirlwind stacks bar for Fury warriors",
["SETTINGS_OPTION_ENABLED"] = "Enabled",
["SETTINGS_OPTION_DISABLED"] = "Disabled",
["HIDE_HEALTH_ON_ROLE"] = "Hide On Role",
["HIDE_MANA_ON_ROLE_PRIMARY_BAR_TOOLTIP"] = "Not effective on Arcane Mage",
["HIDE_BLIZZARD_UI"] = "Hide Blizzard UI",
Expand Down
9 changes: 8 additions & 1 deletion Locales/koKR.lua
Original file line number Diff line number Diff line change
Expand Up @@ -67,7 +67,7 @@ local baseLocale = {
["HEALTH_BAR_EDIT_MODE_NAME"] = "생명력 바",
["PRIMARY_POWER_BAR_EDIT_MODE_NAME"] = "기본 자원 바",
["SECONDARY_POWER_BAR_EDIT_MODE_NAME"] = "보조 자원 바",
["TERNARY_POWER_BAR_EDIT_MODE_NAME"] = "칠흑의 힘 바",
["TERNARY_POWER_BAR_EDIT_MODE_NAME"] = "3차 자원 바",

-- Bar visibility category - Edit Mode
["CATEGORY_BAR_VISIBILITY"] = "바 표시",
Expand All @@ -76,6 +76,13 @@ local baseLocale = {
["BAR_STRATA_TOOLTIP"] = "바가 표시되는 레이어를 설정합니다",
["HIDE_WHILE_MOUNTED_OR_VEHICULE"] = "탈것 또는 차량 탑승 시 숨기기",
["HIDE_WHILE_MOUNTED_OR_VEHICULE_TOOLTIP"] = "드루이드 이동 형태 포함",
["SETTINGS_CATEGORY_CLASS_OPTIONS"] = "직업 옵션",
["DRUID_ALWAYS_SHOW_MANA"] = "드루이드: 표범 및 곰 변신 시 마나 표시",
["DRUID_ALWAYS_SHOW_MANA_TOOLTIP"] = "표범 변신과 곰 변신 시 마나 바 표시",
["WARRIOR_SHOW_WHIRLWIND_BAR"] = "전사: 회오리바람 바 표시 (격노)",
["WARRIOR_SHOW_WHIRLWIND_BAR_TOOLTIP"] = "격노 전사를 위한 강화된 회오리바람 중첩 바 표시",
["SETTINGS_OPTION_ENABLED"] = "사용",
["SETTINGS_OPTION_DISABLED"] = "사용 안 함",
["HIDE_MANA_ON_ROLE"] = "역할에 따라 마나 숨기기",
["HIDE_HEALTH_ON_ROLE"] = "역할에 따라 숨기기",
["HIDE_MANA_ON_ROLE_PRIMARY_BAR_TOOLTIP"] = "비전 마법사에게는 적용되지 않습니다",
Expand Down
9 changes: 8 additions & 1 deletion Locales/ruRU.lua
Original file line number Diff line number Diff line change
Expand Up @@ -68,7 +68,7 @@ local baseLocale = {
["HEALTH_BAR_EDIT_MODE_NAME"] = "Полоса здоровья",
["PRIMARY_POWER_BAR_EDIT_MODE_NAME"] = "Полоса основного ресурса",
["SECONDARY_POWER_BAR_EDIT_MODE_NAME"] = "Полоса вторичного ресурса",
["TERNARY_POWER_BAR_EDIT_MODE_NAME"] = "Полоса Черной мощи",
["TERNARY_POWER_BAR_EDIT_MODE_NAME"] = "Полоса третичного ресурса",

-- Bar visibility category - Edit Mode
["CATEGORY_BAR_VISIBILITY"] = "Видимость полосы",
Expand All @@ -77,6 +77,13 @@ local baseLocale = {
["BAR_STRATA_TOOLTIP"] = "Слой, на котором отрисовывается полоса",
["HIDE_WHILE_MOUNTED_OR_VEHICULE"] = "Скрывать при использовании транспорта",
["HIDE_WHILE_MOUNTED_OR_VEHICULE_TOOLTIP"] = "Включает формы передвижения друида",
["SETTINGS_CATEGORY_CLASS_OPTIONS"] = "Опции класса",
["DRUID_ALWAYS_SHOW_MANA"] = "Друид: показывать ману в обличьях кошки и медведя",
["DRUID_ALWAYS_SHOW_MANA_TOOLTIP"] = "Показывать полосу маны в обличье кошки и обличье медведя",
["WARRIOR_SHOW_WHIRLWIND_BAR"] = "Воин: показывать полосу Вихря (Неистовство)",
["WARRIOR_SHOW_WHIRLWIND_BAR_TOOLTIP"] = "Показывать полосу стаков улучшенного Вихря для воинов Неистовства",
["SETTINGS_OPTION_ENABLED"] = "Включено",
["SETTINGS_OPTION_DISABLED"] = "Отключено",
["HIDE_MANA_ON_ROLE"] = "Скрывать ману по роли",
["HIDE_HEALTH_ON_ROLE"] = "Скрывать здоровье по роли",
["HIDE_MANA_ON_ROLE_PRIMARY_BAR_TOOLTIP"] = "Не работает на магах в спец. Тайная магия",
Expand Down
9 changes: 8 additions & 1 deletion Locales/zhCN.lua
Original file line number Diff line number Diff line change
Expand Up @@ -67,7 +67,7 @@ local baseLocale = {
["HEALTH_BAR_EDIT_MODE_NAME"] = "生命条",
["PRIMARY_POWER_BAR_EDIT_MODE_NAME"] = "主要资源条",
["SECONDARY_POWER_BAR_EDIT_MODE_NAME"] = "次要资源条",
["TERNARY_POWER_BAR_EDIT_MODE_NAME"] = "黑檀之力条",
["TERNARY_POWER_BAR_EDIT_MODE_NAME"] = "第三资源条",

-- Bar visibility category - Edit Mode
["CATEGORY_BAR_VISIBILITY"] = "条形可见性",
Expand All @@ -76,6 +76,13 @@ local baseLocale = {
["BAR_STRATA_TOOLTIP"] = "条形渲染的层级",
["HIDE_WHILE_MOUNTED_OR_VEHICULE"] = "在坐骑或载具中隐藏",
["HIDE_WHILE_MOUNTED_OR_VEHICULE_TOOLTIP"] = "包括德鲁伊旅行形态",
["SETTINGS_CATEGORY_CLASS_OPTIONS"] = "职业选项",
["DRUID_ALWAYS_SHOW_MANA"] = "德鲁伊:在猎豹和熊形态下显示法力值",
["DRUID_ALWAYS_SHOW_MANA_TOOLTIP"] = "在猎豹形态和熊形态下显示法力条",
["WARRIOR_SHOW_WHIRLWIND_BAR"] = "战士:显示旋风斩条(狂暴)",
["WARRIOR_SHOW_WHIRLWIND_BAR_TOOLTIP"] = "为狂暴战士显示强化旋风斩层数条",
["SETTINGS_OPTION_ENABLED"] = "启用",
["SETTINGS_OPTION_DISABLED"] = "禁用",
["HIDE_MANA_ON_ROLE"] = "在特定职责下隐藏法力值",
["HIDE_HEALTH_ON_ROLE"] = "在特定职责下隐藏",
["HIDE_MANA_ON_ROLE_PRIMARY_BAR_TOOLTIP"] = "对奥术法师无效",
Expand Down
3 changes: 2 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,8 @@ Mana, Rage, Energy, Focus, Fury, Runic Power, Astral Power, Maelstrom Weapon and
* **Demon Hunter** → Soul Fragments (Devourer, Vengeance)
* **Hunter** → Tip of the Spear (Survival)

**Ebon Might as a standalone bar**
**Tertiary Resource Bar**
Ebon Might (Augmentation Evoker), Mana in Cat/Bear form (Druid, optional), and more.

**Druid Form Adaptive Support:**
Automatically switches to Mana, Energy, Rage, or Astral Power depending on current shapeshift form.
Expand Down
66 changes: 66 additions & 0 deletions Settings/ClassOptionsSettings.lua
Original file line number Diff line number Diff line change
@@ -0,0 +1,66 @@
local _, addonTable = ...

local SettingsLib = addonTable.SettingsLib or LibStub("LibEQOLSettingsMode-1.0")
local L = addonTable.L

local featureId = "SCRB_CLASS_OPTIONS"

addonTable.AvailableFeatures = addonTable.AvailableFeatures or {}
table.insert(addonTable.AvailableFeatures, featureId)

-- No category: add to root panel as an expandable section (like Power Colors / Health Colors)
addonTable.FeaturesMetadata = addonTable.FeaturesMetadata or {}
addonTable.FeaturesMetadata[featureId] = {}

addonTable.SettingsPanelInitializers = addonTable.SettingsPanelInitializers or {}
addonTable.SettingsPanelInitializers[featureId] = function(category)
if not SenseiClassResourceBarDB["_Settings"] then
SenseiClassResourceBarDB["_Settings"] = {}
end
if not SenseiClassResourceBarDB["_Settings"].ClassOptions then
SenseiClassResourceBarDB["_Settings"].ClassOptions = {}
end

local classOptionsSection = SettingsLib:CreateExpandableSection(category, {
name = L["SETTINGS_CATEGORY_CLASS_OPTIONS"],
expanded = true,
colorizeTitle = true,
})

-- Helper: setter may be called as (setting, value) or (value) depending on Blizzard API
local function makeClassOptionSetter(key)
return function(arg1, arg2)
local value = (type(arg2) == "boolean" and arg2) or (type(arg1) == "boolean" and arg1) or false
addonTable.SetClassOption(key, value)
addonTable.fullUpdateBars()
end
end

-- Druid: show mana in cat and bear form (checkbox)
SettingsLib:CreateCheckbox(category, {
key = "showDruidManaInCatAndBearForm",
variable = "SCRB_ClassOptions_showDruidManaInCatAndBearForm",
name = L["DRUID_ALWAYS_SHOW_MANA"],
desc = L["DRUID_ALWAYS_SHOW_MANA_TOOLTIP"],
default = false,
get = function()
return addonTable.GetClassOption("showDruidManaInCatAndBearForm")
end,
set = makeClassOptionSetter("showDruidManaInCatAndBearForm"),
parentSection = classOptionsSection,
})

-- Warrior: show Whirlwind bar (Fury) (checkbox)
SettingsLib:CreateCheckbox(category, {
key = "showWarriorWhirlwindBar",
variable = "SCRB_ClassOptions_showWarriorWhirlwindBar",
name = L["WARRIOR_SHOW_WHIRLWIND_BAR"],
desc = L["WARRIOR_SHOW_WHIRLWIND_BAR_TOOLTIP"],
default = false,
get = function()
return addonTable.GetClassOption("showWarriorWhirlwindBar")
end,
set = makeClassOptionSetter("showWarriorWhirlwindBar"),
parentSection = classOptionsSection,
})
end
1 change: 1 addition & 0 deletions Settings/embeds.xml
Original file line number Diff line number Diff line change
Expand Up @@ -2,4 +2,5 @@
..\..\Blizzard_SharedXML\UI.xsd">
<Script file="HealthAndPowerColorSettings.lua"/>
<Script file="ImportExportSettings.lua"/>
<Script file="ClassOptionsSettings.lua"/>
</Ui>