# HG changeset patch
# User madcatzinc@35b17cf1-18cd-47ff-9ca3-31d6b526ef09
# Date 1367623461 0
# Node ID c9706291c141c7581d765fccefe8cdf3c63fa6e3
# Parent 4b9e27be9c68c574931ab93b89ccbb923003b78b
Added per-spec bindings. This is optional and must be enabled in the addon settings.
diff -r 4b9e27be9c68 -r c9706291c141 CyborgMMO7.lua
--- a/CyborgMMO7.lua Fri May 03 23:24:16 2013 +0000
+++ b/CyborgMMO7.lua Fri May 03 23:24:21 2013 +0000
@@ -24,6 +24,14 @@
SHIFT = 0,
}
+local function toboolean(value)
+ if value then
+ return true
+ else
+ return false
+ end
+end
+
function CyborgMMO_LoadStrings(self)
-- CyborgMMO_DPrint("LoadStrings("..self:GetName()..") = "..CyborgMMO_StringTable[self:GetName()])
self:SetText(CyborgMMO_StringTable[self:GetName()])
@@ -94,20 +102,36 @@
function CyborgMMO_SetRatSaveData(objects)
assert(VarsLoaded)
- local data = {}
+ local specIndex
+ if Settings.PerSpecBindings then
+ specIndex = GetActiveSpecGroup()
+ else
+ specIndex = 1
+ end
+ local ratData = {}
for mode=1,RAT7.MODES do
- data[mode] = {}
+ ratData[mode] = {}
for button=1,RAT7.BUTTONS do
if objects[mode][button] then
- data[mode][button] = objects[mode][button]:SaveData()
+ ratData[mode][button] = objects[mode][button]:SaveData()
end
end
end
- CyborgMMO_GetSaveData().Rat = data
+ local saveData = CyborgMMO_GetSaveData()
+ if not saveData.Rat then saveData.Rat = {} end
+ saveData.Rat[specIndex] = ratData
end
function CyborgMMO_GetRatSaveData()
- return CyborgMMO_GetSaveData().Rat
+ local specIndex
+ if Settings.PerSpecBindings then
+ specIndex = GetActiveSpecGroup()
+ else
+ specIndex = 1
+ end
+ CyborgMMO_DPrint("returning rat data for spec:", specIndex, GetActiveSpecGroup())
+ local saveData = CyborgMMO_GetSaveData()
+ return saveData.Rat and saveData.Rat[specIndex]
end
local function GetSpellID(name)
@@ -247,19 +271,21 @@
-- gather all needed IDs (and trigger sync while doing so)
if data.Rat then
- for mode=1,RAT7.MODES do
- for button=1,RAT7.BUTTONS do
- local data = data.Rat[mode][button]
- if data then
- if data.type=='item' then
- local itemID = data.detail
- if not GetItemInfo(itemID) then
- itemIDs[itemID] = true
- end
- elseif data.type=='battlepet' then
- local petID = data.detail
- if not C_PetJournal.GetPetInfoByPetID(petID) then
- petIDs[petID] = true
+ for spec,specData in pairs(data.Rat) do
+ for mode=1,RAT7.MODES do
+ for button=1,RAT7.BUTTONS do
+ local buttonData = specData[mode] and specData[mode][button]
+ if buttonData then
+ if buttonData.type=='item' then
+ local itemID = buttonData.detail
+ if not GetItemInfo(itemID) then
+ itemIDs[itemID] = true
+ end
+ elseif buttonData.type=='battlepet' then
+ local petID = buttonData.detail
+ if not C_PetJournal.GetPetInfoByPetID(petID) then
+ petIDs[petID] = true
+ end
end
end
end
@@ -311,34 +337,39 @@
local oldData = CyborgMMO7SaveData[SaveName]
CyborgMMO7SaveData = {}
CyborgMMO7SaveData.Settings = oldData.Settings
- CyborgMMO7SaveData.Rat = ConvertOldRatData(oldData.Rat)
+ -- Rat is an array, with one child per talent spec/group
+ CyborgMMO7SaveData.Rat = {}
+ CyborgMMO7SaveData.Rat[1] = ConvertOldRatData(oldData.Rat)
CyborgMMO7SaveData[SaveName] = oldData -- for now keep the data, we may have missed something in the conversion
end
elseif event == "PLAYER_ENTERING_WORLD" then
EnteredWorld = true
elseif event == "PLAYER_REGEN_DISABLED" then
CyborgMMO_Close()
+ elseif event == "ACTIVE_TALENT_GROUP_CHANGED" then
+ -- force a re-loading of bindings
+ BindingsLoaded = false
else
CyborgMMO_DPrint("Event is "..tostring(event))
end
-- Fire Loading if and only if the player is in the world and vars are loaded
- if not BindingsLoaded and VarsLoaded and AsyncDataLoaded and EnteredWorld then
+ if not SettingsLoaded and VarsLoaded and AsyncDataLoaded and EnteredWorld then
local data = CyborgMMO_GetSaveData()
- CyborgMMO_RatPageModel:LoadData()
- BindingsLoaded = true
-
- CyborgMMO_SetupModeCallbacks(1)
- CyborgMMO_SetupModeCallbacks(2)
- CyborgMMO_SetupModeCallbacks(3)
-
Settings = data.Settings
if not Settings then
Settings = {}
+ data.Settings = Settings
+ end
+ if Settings.MiniMapButton == nil then
Settings.MiniMapButton = true
+ end
+ if Settings.CyborgButton == nil then
Settings.CyborgButton = true
- data.Settings = Settings
+ end
+ if Settings.PerSpecBindings == nil then
+ Settings.PerSpecBindings = false
end
if not Settings.Cyborg then
Settings.Cyborg = 0.75
@@ -357,9 +388,21 @@
CyborgMMO_SetMiniMapButton(Settings.MiniMapButton)
CyborgMMO_MiniMapButtonReposition(Settings.MiniMapButtonAngle)
CyborgMMO_SetCyborgHeadButton(Settings.CyborgButton)
+ CyborgMMO_SetPerSpecBindings(Settings.PerSpecBindings)
SettingsLoaded = true
end
+
+ -- load data AFTER the settings, because PerSpecBindings may affect what's loaded
+ if not BindingsLoaded and VarsLoaded and AsyncDataLoaded and EnteredWorld then
+ CyborgMMO_RatPageModel:LoadData()
+
+ CyborgMMO_SetupModeCallbacks(1)
+ CyborgMMO_SetupModeCallbacks(2)
+ CyborgMMO_SetupModeCallbacks(3)
+
+ BindingsLoaded = true
+ end
end
function CyborgMMO_SetDefaultSettings()
@@ -389,6 +432,7 @@
CyborgMMO_MainPage:RegisterEvent("VARIABLES_LOADED")
CyborgMMO_MainPage:RegisterEvent("PLAYER_ENTERING_WORLD")
CyborgMMO_MainPage:RegisterEvent("PLAYER_REGEN_DISABLED")
+ CyborgMMO_MainPage:RegisterEvent("ACTIVE_TALENT_GROUP_CHANGED")
end
function CyborgMMO_Close()
@@ -462,7 +506,7 @@
end
CyborgMMO_OptionPageCyborgButton:SetChecked(visible)
if SettingsLoaded then
- Settings.CyborgButton = visible
+ Settings.CyborgButton = toboolean(visible)
end
end
@@ -474,7 +518,18 @@
end
CyborgMMO_OptionPageMiniMapButton:SetChecked(visible)
if SettingsLoaded then
- Settings.MiniMapButton = visible
+ Settings.MiniMapButton = toboolean(visible)
end
end
+function CyborgMMO_SetPerSpecBindings(perSpec)
+ CyborgMMO_OptionPagePerSpecBindings:SetChecked(perSpec)
+ if SettingsLoaded then
+ Settings.PerSpecBindings = toboolean(perSpec)
+ end
+ -- reload bindings if necessary (AFTER altering the setting)
+ if BindingsLoaded then
+ CyborgMMO_RatPageModel:LoadData()
+ end
+end
+
diff -r 4b9e27be9c68 -r c9706291c141 Localisation.lua
--- a/Localisation.lua Fri May 03 23:24:16 2013 +0000
+++ b/Localisation.lua Fri May 03 23:24:21 2013 +0000
@@ -354,6 +354,7 @@
CyborgMMO_OptionPageCyborgButtonTitle="Cyborg Button",
CyborgMMO_OptionPageCyborgSizeSliderTitle="Cyborg Head Size",
CyborgMMO_OptionPageMiniMapButtonTitle="MiniMap Button",
+ CyborgMMO_OptionPagePerSpecBindingsTitle="Per-spec bindings",
CyborgMMO_OptionPageRebindMouseRow10Name="Back Button",
CyborgMMO_OptionPageRebindMouseRow11Name="Button 3",
CyborgMMO_OptionPageRebindMouseRow12Name="Thumb Anticlockwise",
diff -r 4b9e27be9c68 -r c9706291c141 OptionPage.xml
--- a/OptionPage.xml Fri May 03 23:24:16 2013 +0000
+++ b/OptionPage.xml Fri May 03 23:24:21 2013 +0000
@@ -257,7 +257,7 @@
-
+
@@ -318,10 +318,42 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ CyborgMMO_LoadStrings(getglobal(self:GetName().."Title"))
+
+
+ if self:GetChecked() then
+ CyborgMMO_SetPerSpecBindings(true)
+ else
+ CyborgMMO_SetPerSpecBindings(false)
+ end
+
+
+
+