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)
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)
if(mouseButton ~= button) then
return false
end
local startTime = g_clock.millis()
callback(widget, mousePos, mouseButton, 0)
periodicalEvent(function()
callback(widget, g_window.getMousePosition(), mouseButton, g_clock.millis() - startTime)
end, function()
return widget:isPressed()
return g_mouse.isPressed(mouseButton)
end, 30, delay)
return true
end })

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -34,7 +34,7 @@ MiniWindow
text: ?
text-align: center
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.right: minimizeButton.left
margin-right: 3