Merge pull request #38 from BeniS/master

This commit is contained in:
Eduardo Bart 2012-07-13 14:09:37 -07:00
commit 099716fe03
11 changed files with 132 additions and 41 deletions

View File

@ -22,7 +22,7 @@ local function tryLogin(charInfo, tries)
if g_game.isOnline() then
g_game.safeLogout()
if tries == 1 then
loadBox = displayCancelBox(tr('Please wait'), tr('Loggin out...'))
loadBox = displayCancelBox(tr('Please wait'), tr('Logging out...'))
end
scheduleEvent(function() tryLogin(charInfo, tries+1) end, 250)
return

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

@ -334,6 +334,7 @@ function HotkeysManager.checkSelectedHotkey(focused)
if hotkeyLabelSelectedOnList.itemId == nil then
hotkeyText:enable()
hotkeyText:focus()
hotKeyTextLabel:enable()
hotkeyText:setText(hotkeyLabelSelectedOnList.value)

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,31 +2,15 @@ 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.')
!text: tr('If you shut down the program, you character might stay in the game.\nClick on "Logout" to ensure that you character leaves the game property.\nClick on "Exit" if you want to exit the program without logging out your character.')
width: 550
height: 110
anchors.left: parent.left
anchors.top: parent.top
margin-left: 10
margin-top: 2
Label
!text: tr('Click on "Logout" to ensure that you character leaves the game property.')
width: 550
anchors.left: parent.left
anchors.top: prev.bottom
margin-left: 10
margin-top: 2
Label
!text: tr('Click on "Exit" if you want to exit the program without logging out your character.')
width: 550
anchors.left: parent.left
anchors.top: prev.bottom
margin-left: 10
margin-top: 2
Button
id: buttonExit
@ -34,7 +18,7 @@ ExitWindow < MainWindow
width: 64
anchors.left: parent.left
anchors.bottom: parent.bottom
margin-left: 155
margin-left: 160
Button
id: buttonLogout
@ -51,4 +35,3 @@ ExitWindow < MainWindow
anchors.left: prev.right
anchors.bottom: parent.bottom
margin-left: 5
@onClick: self:getParent():destroy()

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)
@ -125,8 +127,8 @@ function Minimap.compassClick(self, mousePos, mouseButton, elapsed)
local dx = px - self:getWidth()/2
local dy = -(py - self:getHeight()/2)
local radius = math.sqrt(dx*dx+dy*dy)
local movex=0
local movey=0
local movex = 0
local movey = 0
dx = dx/radius
dy = dy/radius
@ -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

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

View File

@ -0,0 +1,29 @@
DeathWindow < MainWindow
id: deathWindow
!text: tr('You are dead')
size: 350 155
Label
!text: tr('Alas! Brave adventurer, you have met a sad fate.\nBut do not despair, for the gods will bring you back\ninto this world in exchange for a small sacrifice\n\nSimply click on Ok to resume your journeys!')
width: 550
height: 140
anchors.left: parent.left
anchors.top: parent.top
margin-left: 10
margin-top: 2
Button
id: buttonOk
!text: tr('Ok')
width: 64
anchors.left: parent.left
anchors.bottom: parent.bottom
margin-left: 160
Button
id: buttonCancel
!text: tr('Cancel')
width: 64
anchors.left: prev.right
anchors.bottom: parent.bottom
margin-left: 5

View File

@ -20,6 +20,7 @@ local MessageTypes = {
local centerTextMessagePanel
local bottomStatusLabel
local privateLabel
local deathWindow
-- private functions
local function displayMessage(msgtype, msg, time)
@ -57,6 +58,8 @@ end
-- public functions
function TextMessage.init()
g_ui.importStyle('deathwindow.otui')
connect(g_game, { onDeath = TextMessage.displayDeadMessage,
onTextMessage = TextMessage.display,
onGameStart = TextMessage.clearMessages })
@ -93,6 +96,7 @@ function TextMessage.terminate()
centerTextMessagePanel = nil
bottomStatusLabel = nil
privateLabel = nil
deathWindow = nil
TextMessage = nil
end
@ -127,4 +131,28 @@ function TextMessage.displayDeadMessage()
local advanceLabel = GameInterface.getMapPanel():recursiveGetChildById('centerAdvance')
if advanceLabel:isVisible() then return end
TextMessage.displayEventAdvance(tr('You are dead.'))
if(deathWindow) then
return
end
deathWindow = g_ui.createWidget('DeathWindow', rootWidget)
local okButton = deathWindow:getChildById('buttonOk')
local cancelButton = deathWindow:getChildById('buttonCancel')
local okFunc = function()
CharacterList.doLogin()
okButton:getParent():destroy()
deathWindow = nil
end
local cancelFunc = function()
GameInterface.logout()
cancelButton:getParent():destroy()
deathWindow = nil
end
deathWindow.onEnter = okFunc
deathWindow.onEscape = cancelFunc
okButton.onClick = okFunc
cancelButton.onClick = cancelFunc
end