Fixed/Changed Minimap and Game Interface Window Issue.

* Changed minimap navigation to hold right click.
* Added MAX_FLOOR_UP and MAX_FLOOR_DOWN for floor changing in the minimap.
* Fixed issues with exit window, logout window and count window to stop multiple instances of the window.
This commit is contained in:
BeniS 2012-07-13 18:31:05 +12:00
parent 29ab28065b
commit 3ebb997c37
7 changed files with 69 additions and 20 deletions

View File

@ -32,14 +32,18 @@ function g_mouse.isPressed(button)
return g_window.isMouseButtonPressed(button) return g_window.isMouseButtonPressed(button)
end end
function g_mouse.bindAutoPress(widget, callback, delay) function g_mouse.bindAutoPress(widget, callback, delay, button)
local button = button or MouseLeftButton
connect(widget, { onMousePress = function(widget, mousePos, mouseButton) connect(widget, { onMousePress = function(widget, mousePos, mouseButton)
if(mouseButton ~= button) then
return false
end
local startTime = g_clock.millis() local startTime = g_clock.millis()
callback(widget, mousePos, mouseButton, 0) callback(widget, mousePos, mouseButton, 0)
periodicalEvent(function() periodicalEvent(function()
callback(widget, g_window.getMousePosition(), mouseButton, g_clock.millis() - startTime) callback(widget, g_window.getMousePosition(), mouseButton, g_clock.millis() - startTime)
end, function() end, function()
return widget:isPressed() return g_mouse.isPressed(mouseButton)
end, 30, delay) end, 30, delay)
return true return true
end }) end })

View File

@ -9,6 +9,10 @@ local gameBottomPanel
local logoutButton local logoutButton
local mouseGrabberWidget local mouseGrabberWidget
local countWindow
local logoutWindow
local exitWindow
local function onLeftPanelVisibilityChange(leftPanel, visible) local function onLeftPanelVisibilityChange(leftPanel, visible)
if not visible then if not visible then
local children = leftPanel:getChildren() local children = leftPanel:getChildren()
@ -97,6 +101,9 @@ function GameInterface.terminate()
gameLeftPanel = nil gameLeftPanel = nil
gameBottomPanel = nil gameBottomPanel = nil
mouseGrabberWidget = nil mouseGrabberWidget = nil
countWindow = nil
logoutWindow = nil
exitWindow = nil
GameInterface = nil GameInterface = nil
end end
@ -125,23 +132,34 @@ function GameInterface.exit()
end end
function GameInterface.tryExit() function GameInterface.tryExit()
local exitWindow = g_ui.createWidget('ExitWindow', rootWidget) if(exitWindow) then
return true
end
exitWindow = g_ui.createWidget('ExitWindow', rootWidget)
local exitButton = exitWindow:getChildById('buttonExit') local exitButton = exitWindow:getChildById('buttonExit')
local logoutButton = exitWindow:getChildById('buttonLogout') local logButton = exitWindow:getChildById('buttonLogout')
local cancelButton = exitWindow:getChildById('buttonCancel')
local exitFunc = function() local exitFunc = function()
GameInterface.exit() GameInterface.exit()
exitButton:getParent():destroy() exitButton:getParent():destroy()
end end
local logoutFunc = function() local logoutFunc = function()
GameInterface.logout() GameInterface.logout()
logoutButton:getParent():destroy() logButton:getParent():destroy()
exitWindow = nil
end
local cancelFunc = function()
cancelButton:getParent():destroy()
exitWindow = nil
end end
exitWindow.onEscape = cancelFunc
exitWindow.onEnter = logoutFunc exitWindow.onEnter = logoutFunc
exitButton.onClick = exitFunc exitButton.onClick = exitFunc
logoutButton.onClick = logoutFunc logButton.onClick = logoutFunc
cancelButton.onClick = cancelFunc
return true -- signal closing return true -- signal closing
end end
@ -153,16 +171,28 @@ function GameInterface.logout()
end end
function GameInterface.tryLogout() function GameInterface.tryLogout()
local logoutWindow = g_ui.createWidget('LogoutWindow', rootWidget) if(logoutWindow) then
return
end
logoutWindow = g_ui.createWidget('LogoutWindow', rootWidget)
local yesButton = logoutWindow:getChildById('buttonYes') local yesButton = logoutWindow:getChildById('buttonYes')
local noButton = logoutWindow:getChildById('buttonNo')
local logoutFunc = function() local logoutFunc = function()
GameInterface.logout() GameInterface.logout()
yesButton:getParent():destroy() yesButton:getParent():destroy()
logoutWindow = nil
end
local cancelFunc = function()
noButton:getParent():destroy()
logoutWindow = nil
end end
logoutWindow.onEnter = logoutFunc logoutWindow.onEnter = logoutFunc
logoutWindow.onEscape = cancelFunc
yesButton.onClick = logoutFunc yesButton.onClick = logoutFunc
noButton.onClick = cancelFunc
end end
function GameInterface.onMouseGrabberRelease(self, mousePosition, mouseButton) function GameInterface.onMouseGrabberRelease(self, mousePosition, mouseButton)
@ -375,7 +405,8 @@ function GameInterface.processMouseAction(menuPosition, mouseButton, autoWalkPos
end end
else else
if multiUseThing and keyboardModifiers == KeyboardNoModifier and mouseButton == MouseRightButton and not g_mouse.isPressed(MouseLeftButton) then if multiUseThing and keyboardModifiers == KeyboardNoModifier and mouseButton == MouseRightButton and not g_mouse.isPressed(MouseLeftButton) then
if multiUseThing:asCreature() then local player = g_game.getLocalPlayer()
if multiUseThing:asCreature() and multiUseThing:asCreature() ~= player then
g_game.attack(multiUseThing:asCreature()) g_game.attack(multiUseThing:asCreature())
return true return true
elseif multiUseThing:isContainer() then elseif multiUseThing:isContainer() then
@ -422,6 +453,9 @@ function GameInterface.processMouseAction(menuPosition, mouseButton, autoWalkPos
end end
function GameInterface.moveStackableItem(item, toPos) function GameInterface.moveStackableItem(item, toPos)
if(countWindow) then
return
end
if g_keyboard.isCtrlPressed() then if g_keyboard.isCtrlPressed() then
g_game.move(item, toPos, item:getCount()) g_game.move(item, toPos, item:getCount())
return return
@ -431,7 +465,7 @@ function GameInterface.moveStackableItem(item, toPos)
end end
local count = item:getCount() local count = item:getCount()
local countWindow = g_ui.createWidget('CountWindow', rootWidget) countWindow = g_ui.createWidget('CountWindow', rootWidget)
local spinbox = countWindow:getChildById('countSpinBox') local spinbox = countWindow:getChildById('countSpinBox')
local scrollbar = countWindow:getChildById('countScrollBar') local scrollbar = countWindow:getChildById('countScrollBar')
spinbox:setMaximum(count) spinbox:setMaximum(count)
@ -447,10 +481,19 @@ function GameInterface.moveStackableItem(item, toPos)
local moveFunc = function() local moveFunc = function()
g_game.move(item, toPos, spinbox:getValue()) g_game.move(item, toPos, spinbox:getValue())
okButton:getParent():destroy() okButton:getParent():destroy()
countWindow = nil
end
local cancelButton = countWindow:getChildById('buttonCancel')
local cancelFunc = function()
cancelButton:getParent():destroy()
countWindow = nil
end end
countWindow.onEnter = moveFunc countWindow.onEnter = moveFunc
countWindow.onEscape = cancelFunc
okButton.onClick = moveFunc okButton.onClick = moveFunc
cancelButton.onClick = cancelFunc
end end
function GameInterface.getRootPanel() function GameInterface.getRootPanel()

View File

@ -2,7 +2,6 @@ CountWindow < MainWindow
id: countWindow id: countWindow
!text: tr('Move Stackable Item') !text: tr('Move Stackable Item')
size: 196 112 size: 196 112
@onEscape: self:destroy()
Label Label
!text: tr('Amount:') !text: tr('Amount:')
@ -38,4 +37,3 @@ CountWindow < MainWindow
width: 64 width: 64
anchors.right: parent.right anchors.right: parent.right
anchors.bottom: parent.bottom anchors.bottom: parent.bottom
@onClick: self:getParent():destroy()

View File

@ -2,7 +2,6 @@ ExitWindow < MainWindow
id: exitWindow id: exitWindow
!text: tr('Exit') !text: tr('Exit')
size: 550 135 size: 550 135
@onEscape: self:destroy()
Label Label
!text: tr('If you shut down the program, you character might stay in the game.') !text: tr('If you shut down the program, you character might stay in the game.')
@ -34,7 +33,7 @@ ExitWindow < MainWindow
width: 64 width: 64
anchors.left: parent.left anchors.left: parent.left
anchors.bottom: parent.bottom anchors.bottom: parent.bottom
margin-left: 155 margin-left: 160
Button Button
id: buttonLogout id: buttonLogout

View File

@ -2,7 +2,6 @@ LogoutWindow < MainWindow
id: logoutWindow id: logoutWindow
!text: tr('Logout') !text: tr('Logout')
size: 300 100 size: 300 100
@onEscape: self:destroy()
Label Label
!text: tr('Are you sure you want to logout?') !text: tr('Are you sure you want to logout?')

View File

@ -5,6 +5,8 @@ local minimapWidget
local minimapButton local minimapButton
local minimapWindow local minimapWindow
local DEFAULT_ZOOM = 60 local DEFAULT_ZOOM = 60
local MAX_FLOOR_UP = 0
local MAX_FLOOR_DOWN = 15
local navigating = false local navigating = false
minimapFirstLoad = true minimapFirstLoad = true
@ -54,7 +56,7 @@ function Minimap.init()
minimapWidget = minimapWindow:recursiveGetChildById('minimap') minimapWidget = minimapWindow:recursiveGetChildById('minimap')
g_mouse.bindAutoPress(minimapWidget, Minimap.compassClick) g_mouse.bindAutoPress(minimapWidget, Minimap.compassClick, nil, MouseRightButton)
minimapWidget:setAutoViewMode(false) minimapWidget:setAutoViewMode(false)
minimapWidget:setViewMode(1) -- mid view minimapWidget:setViewMode(1) -- mid view
minimapWidget:setDrawMinimapColors(true) minimapWidget:setDrawMinimapColors(true)
@ -148,13 +150,17 @@ function Minimap.onButtonClick(id)
elseif id == "floorUp" then elseif id == "floorUp" then
local pos = minimapWidget:getCameraPosition() local pos = minimapWidget:getCameraPosition()
pos.z = pos.z - 1 pos.z = pos.z - 1
if(pos.z > MAX_FLOOR_UP) then
minimapWidget:setCameraPosition(pos) minimapWidget:setCameraPosition(pos)
end
elseif id == "floorDown" then elseif id == "floorDown" then
local pos = minimapWidget:getCameraPosition() local pos = minimapWidget:getCameraPosition()
pos.z = pos.z + 1 pos.z = pos.z + 1
if(pos.z < MAX_FLOOR_DOWN) then
minimapWidget:setCameraPosition(pos) minimapWidget:setCameraPosition(pos)
end end
end end
end
-- hooked events -- hooked events
function Minimap.reset() function Minimap.reset()

View File

@ -34,7 +34,7 @@ MiniWindow
text: ? text: ?
text-align: center text-align: center
phantom: false phantom: false
!tooltip: tr('Hold left mouse button to navigate\nScroll mouse middle button to zoom') !tooltip: tr('Hold right mouse button to navigate\nScroll mouse middle button to zoom')
anchors.top: minimizeButton.top anchors.top: minimizeButton.top
anchors.right: minimizeButton.left anchors.right: minimizeButton.left
margin-right: 3 margin-right: 3