* There was a bug in OTML saving hotkeys per player because of the way they are storing children and not a straight value. Perhaps you want to look at it ed.
Note: Your hotkeys will reset in this revision.
This commit is contained in:
BeniS 2013-01-11 17:03:48 +13:00
parent adba4b0da9
commit 914b4bd5f3
2 changed files with 23 additions and 13 deletions

View File

@ -84,13 +84,16 @@ function terminate()
end
function load()
local hotkeySettings = g_settings.getNode('HotkeysManager')
local hotkeySettings = g_settings.getNode('HotkeysManager') or {}
if hotkeySettings then
local playerHotkeySettings = hotkeySettings[g_game.getLocalPlayer():getName()]
local hasCombos = false
if hotkeySettings ~= nil then
for i, v in pairs(hotkeySettings) do
addKeyCombo(nil, v.keyCombo, v)
hasCombos = true
local hasCombos = false
if playerHotkeySettings ~= nil then
for k, setting in pairs(playerHotkeySettings) do
addKeyCombo(nil, setting.keyCombo, setting)
hasCombos = true
end
end
end
@ -99,18 +102,25 @@ function load()
for i=1,12 do
addKeyCombo(nil, 'F' .. i)
end
for i=1,4 do
addKeyCombo(nil, 'Shift+F' .. i)
end
end
end
function save()
local hotkeySettings = {}
local char = g_game.getLocalPlayer():getName()
local hotkeySettings = g_settings.getNode('HotkeysManager') or {}
hotkeySettings[char] = {}
for i=1, currentHotkeysList:getChildCount() do
local child = currentHotkeysList:getChildByIndex(i)
table.insert(hotkeySettings, {keyCombo = child.keyCombo,
autoSend = child.autoSend,
itemId = child.itemId,
useType = child.useType,
value = child.value})
table.insert(hotkeySettings[char], {
keyCombo = child.keyCombo,
autoSend = child.autoSend,
itemId = child.itemId,
useType = child.useType,
value = child.value
})
end
g_settings.setNode('HotkeysManager', hotkeySettings)

View File

@ -38,7 +38,7 @@ std::string OTMLEmitter::emitNode(const OTMLNodePtr& node, int currentDepth)
ss << node->tag();
// add ':' to if the node is unique or has value
if(node->hasValue() || node->isUnique() || node->isNull())
if(node->hasValue() || node->isUnique() || node->isNull() || node->hasChildren())
ss << ":";
} else
ss << "-";