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:
parent
29ab28065b
commit
3ebb997c37
|
@ -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 })
|
||||
|
|
|
@ -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()
|
||||
|
|
|
@ -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()
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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?')
|
||||
|
|
|
@ -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,11 +150,15 @@ function Minimap.onButtonClick(id)
|
|||
elseif id == "floorUp" then
|
||||
local pos = minimapWidget:getCameraPosition()
|
||||
pos.z = pos.z - 1
|
||||
minimapWidget:setCameraPosition(pos)
|
||||
if(pos.z > MAX_FLOOR_UP) then
|
||||
minimapWidget:setCameraPosition(pos)
|
||||
end
|
||||
elseif id == "floorDown" then
|
||||
local pos = minimapWidget:getCameraPosition()
|
||||
pos.z = pos.z + 1
|
||||
minimapWidget:setCameraPosition(pos)
|
||||
if(pos.z < MAX_FLOOR_DOWN) then
|
||||
minimapWidget:setCameraPosition(pos)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Reference in New Issue