Added easy menu hooking, fixed terminal default size/pos & more:

* Added autowalk style option to Minimap style.
* Added onCreate for setting up variables before styling is applied etc.
This commit is contained in:
BenDol 2014-07-13 22:27:09 +12:00
parent 0b5654f870
commit 0f362f80e3
4 changed files with 42 additions and 4 deletions

View File

@ -202,9 +202,9 @@ function popWindow()
else
terminalWindow:breakAnchors()
terminalWindow:setOn(true)
local size = oldSize or { width = g_window.getWidth()/2, height = g_window.getHeight()/2 }
local size = oldSize or { width = g_window.getWidth()/2.5, height = g_window.getHeight()/4 }
terminalWindow:setSize(size)
local pos = oldPos or { x = (g_window.getWidth() - terminalWindow:getWidth())/2, y = (g_window.getHeight() - terminalWindow:getHeight())/2 }
local pos = oldPos or { x = 0, y = g_window.getHeight() }
terminalWindow:setPosition(pos)
terminalWindow:getChildById('bottomResizeBorder'):enable()
terminalWindow:getChildById('rightResizeBorder'):enable()

View File

@ -16,6 +16,7 @@ currentViewMode = 0
smartWalkDirs = {}
smartWalkDir = nil
walkFunction = nil
hookedMenuOptions = {}
function init()
g_ui.importStyle('styles/countwindow')
@ -104,6 +105,8 @@ function terminate()
save()
hide()
hookedMenuOptions = {}
stopSmartWalk()
disconnect(g_game, {
@ -409,6 +412,17 @@ function startTradeWith(thing)
g_mouse.pushCursor('target')
end
function addMenuHook(category, name, callback, condition, shortcut)
if not hookedMenuOptions[category] then
hookedMenuOptions[category] = {}
end
hookedMenuOptions[category][name] = {
callback = callback,
condition = condition,
shortcut = shortcut
}
end
function createThingMenu(menuPosition, lookThing, useThing, creatureThing)
if not g_game.isOnline() then return end
local menu = g_ui.createWidget('PopupMenu')
@ -440,7 +454,6 @@ function createThingMenu(menuPosition, lookThing, useThing, creatureThing)
if useThing:isRotateable() then
menu:addOption(tr('Rotate'), function() g_game.rotate(useThing) end)
end
end
if lookThing and not lookThing:isCreature() and not lookThing:isNotMoveable() and lookThing:isPickupable() then
@ -550,6 +563,16 @@ function createThingMenu(menuPosition, lookThing, useThing, creatureThing)
menu:addOption(tr('Copy Name'), function() g_window.setClipboardText(creatureThing:getName()) end)
end
-- hooked menu options
for _,category in pairs(hookedMenuOptions) do
menu:addSeparator()
for name,opt in pairs(category) do
if opt.condition(menuPosition, lookThing, useThing, creatureThing) then
menu:addOption(name, opt.callback, opt.shortcut)
end
end
end
menu:display(menuPosition)
end

View File

@ -1,3 +1,7 @@
function UIMinimap:onCreate()
self.autowalk = true
end
function UIMinimap:onSetup()
self.flagWindow = nil
self.floorUpWidget = self:getChildById('floorUp')
@ -6,7 +10,6 @@ function UIMinimap:onSetup()
self.zoomOutWidget = self:getChildById('zoomOut')
self.flags = {}
self.alternatives = {}
self.autowalk = true
self.onAddAutomapFlag = function(pos, icon, description) self:addFlag(pos, icon, description) end
self.onRemoveAutomapFlag = function(pos, icon, description) self:removeFlag(pos, icon, description) end
connect(g_game, {
@ -251,6 +254,16 @@ function UIMinimap:onDragLeave(widget, pos)
return true
end
function UIMinimap:onStyleApply(styleName, styleNode)
for name,value in pairs(styleNode) do
print(name)
if name == 'autowalk' then
print(value)
self.autowalk = value
end
end
end
function UIMinimap:createFlagWindow(pos)
if self.flagWindow then return end
if not pos then return end

View File

@ -447,6 +447,8 @@ UIWidgetPtr UIManager::createWidgetFromOTML(const OTMLNodePtr& widgetNode, const
if(parent)
parent->addChild(widget);
widget->callLuaField("onCreate");
if(widget) {
widget->setStyleFromNode(styleNode);