Protocol 10.72 (Authenticator) Support, Unjustified Points diplay

- Unjustified Points (Better topbar icon would be nice)
![Unjustified Points](http://i.gyazo.com/81286f46d9b4d56b3fe864140173cf34.png)
- Authenticator token support
- adjusted 'can change pvp frame' to 1054
- ...
This commit is contained in:
TheSumm
2015-01-18 15:14:07 +01:00
parent 24b1526534
commit ddec9627b8
25 changed files with 525 additions and 31 deletions

View File

@@ -27,7 +27,7 @@ local function tryLogin(charInfo, tries)
CharacterList.hide()
g_game.loginWorld(G.account, G.password, charInfo.worldName, charInfo.worldHost, charInfo.worldPort, charInfo.characterName)
g_game.loginWorld(G.account, G.password, charInfo.worldName, charInfo.worldHost, charInfo.worldPort, charInfo.characterName, G.authenticatorToken)
loadBox = displayCancelBox(tr('Please wait'), tr('Connecting to game server...'))
connect(loadBox, { onCancel = function()
@@ -109,6 +109,16 @@ function onGameLoginError(message)
end
end
function onGameLoginToken(unknown)
CharacterList.destroyLoadBox()
-- TODO: make it possible to enter a new token here / prompt token
errorBox = displayErrorBox(tr("Two-Factor Authentification"), 'A new authentification token is required.\nPlease login again.')
errorBox.onOk = function()
errorBox = nil
EnterGame.show()
end
end
function onGameConnectionError(message, code)
CharacterList.destroyLoadBox()
local text = translateNetworkError(code, g_game.getProtocolGame() and g_game.getProtocolGame():isConnecting(), message)
@@ -131,6 +141,7 @@ end
-- public functions
function CharacterList.init()
connect(g_game, { onLoginError = onGameLoginError })
connect(g_game, { onLoginToken = onGameLoginToken })
connect(g_game, { onUpdateNeeded = onGameUpdateNeeded })
connect(g_game, { onConnectionError = onGameConnectionError })
connect(g_game, { onGameStart = CharacterList.destroyLoadBox })
@@ -144,6 +155,7 @@ end
function CharacterList.terminate()
disconnect(g_game, { onLoginError = onGameLoginError })
disconnect(g_game, { onLoginToken = onGameLoginToken })
disconnect(g_game, { onUpdateNeeded = onGameUpdateNeeded })
disconnect(g_game, { onConnectionError = onGameConnectionError })
disconnect(g_game, { onGameStart = CharacterList.destroyLoadBox })

View File

@@ -16,7 +16,7 @@ CharacterWidget < UIWidget
Label
id: name
color: #aaaaaa
color: #bbbbbb
anchors.top: parent.top
anchors.left: parent.left
font: verdana-11px-monochrome
@@ -29,8 +29,7 @@ CharacterWidget < UIWidget
Label
id: worldName
color: #ffffff
color: #aaaaaa
color: #bbbbbb
anchors.top: parent.top
anchors.right: parent.right
margin-right: 5
@@ -59,6 +58,7 @@ MainWindow
TextList
id: characters
background-color: #565656
anchors.top: parent.top
anchors.left: parent.left
anchors.right: characterListScrollBar.left

View File

@@ -111,7 +111,7 @@ function EnterGame.init()
local port = g_settings.get('port')
local autologin = g_settings.getBoolean('autologin')
local clientVersion = g_settings.getInteger('client-version')
if clientVersion == 0 then clientVersion = 1071 end
if clientVersion == 0 then clientVersion = 1072 end
if port == nil or port == 0 then port = 7171 end
@@ -122,7 +122,10 @@ function EnterGame.init()
enterGame:getChildById('serverPortTextEdit'):setText(port)
enterGame:getChildById('autoLoginBox'):setChecked(autologin)
clientBox = enterGame:getChildById('clientComboBox')
connect(clientBox, { onOptionChange = EnterGame.onClientVersionChange })
for _, proto in pairs(g_game.getSupportedClients()) do
clientBox:addOption(proto)
end
@@ -152,6 +155,7 @@ end
function EnterGame.terminate()
g_keyboard.unbindKeyDown('Ctrl+G')
disconnect(clientBox, { onOptionChange = EnterGame.onClientVersionChange })
enterGame:destroy()
enterGame = nil
enterGameButton:destroy()
@@ -210,14 +214,55 @@ end
function EnterGame.clearAccountFields()
enterGame:getChildById('accountNameTextEdit'):clearText()
enterGame:getChildById('accountPasswordTextEdit'):clearText()
enterGame:getChildById('authenticatorTokenTextEdit'):clearText()
enterGame:getChildById('accountNameTextEdit'):focus()
g_settings.remove('account')
g_settings.remove('password')
end
function EnterGame.toggleAuthenticatorToken(enabled)
if enabled == enterGame.authenticatorEnabled then
return
end
if enabled then
enterGame:getChildById('authenticatorTokenLabel'):setVisible(true)
enterGame:getChildById('authenticatorTokenTextEdit'):setVisible(true)
local serverLabel = enterGame:getChildById('serverLabel')
serverLabel:setMarginTop(serverLabel:getMarginTop() + enterGame.authenticatorHeight)
enterGame:breakAnchors()
enterGame:setY(enterGame:getY() - enterGame.authenticatorHeight)
enterGame:bindRectToParent()
enterGame:setHeight(enterGame:getHeight() + enterGame.authenticatorHeight)
else
enterGame:getChildById('authenticatorTokenLabel'):setVisible(false)
enterGame:getChildById('authenticatorTokenTextEdit'):setVisible(false)
local serverLabel = enterGame:getChildById('serverLabel')
serverLabel:setMarginTop(serverLabel:getMarginTop() - enterGame.authenticatorHeight)
enterGame:breakAnchors()
enterGame:setY(enterGame:getY() + enterGame.authenticatorHeight)
enterGame:bindRectToParent()
enterGame:setHeight(enterGame:getHeight() - enterGame.authenticatorHeight)
end
enterGame.authenticatorEnabled = enabled
end
function EnterGame.onClientVersionChange(comboBox, text, data)
local clientVersion = tonumber(text)
EnterGame.toggleAuthenticatorToken(clientVersion >= 1072)
end
function EnterGame.doLogin()
G.account = enterGame:getChildById('accountNameTextEdit'):getText()
G.password = enterGame:getChildById('accountPasswordTextEdit'):getText()
G.authenticatorToken = enterGame:getChildById('authenticatorTokenTextEdit'):getText()
G.host = enterGame:getChildById('serverHostTextEdit'):getText()
G.port = tonumber(enterGame:getChildById('serverPortTextEdit'):getText())
local clientVersion = tonumber(clientBox:getText())
@@ -251,7 +296,7 @@ function EnterGame.doLogin()
g_game.chooseRsa(G.host)
if modules.game_things.isLoaded() then
protocolLogin:login(G.host, G.port, G.account, G.password)
protocolLogin:login(G.host, G.port, G.account, G.password, G.authenticatorToken)
else
loadBox:destroy()
loadBox = nil
@@ -272,6 +317,7 @@ function EnterGame.setDefaultServer(host, port, protocol)
local clientLabel = enterGame:getChildById('clientLabel')
local accountTextEdit = enterGame:getChildById('accountNameTextEdit')
local passwordTextEdit = enterGame:getChildById('accountPasswordTextEdit')
local authenticatorTokenTextEdit = enterGame:getChildById('authenticatorTokenTextEdit')
if hostTextEdit:getText() ~= host then
hostTextEdit:setText(host)
@@ -279,6 +325,7 @@ function EnterGame.setDefaultServer(host, port, protocol)
clientBox:setCurrentOption(protocol)
accountTextEdit:setText('')
passwordTextEdit:setText('')
authenticatorTokenTextEdit:setText('')
end
end
@@ -291,6 +338,13 @@ function EnterGame.setUniqueServer(host, port, protocol, windowWidth, windowHeig
portTextEdit:setText(port)
portTextEdit:setVisible(false)
portTextEdit:setHeight(0)
local authenticatorTokenTextEdit = enterGame:getChildById('authenticatorTokenTextEdit')
authenticatorTokenTextEdit:setText('')
authenticatorTokenTextEdit:setVisible(false)
authenticatorTokenTextEdit:setHeight(0)
local authenticatorTokenLabel = enterGame:getChildById('authenticatorTokenLabel')
authenticatorTokenLabel:setVisible(false)
authenticatorTokenLabel:setHeight(0)
clientBox:setCurrentOption(protocol)
clientBox:setVisible(false)
@@ -312,7 +366,7 @@ function EnterGame.setUniqueServer(host, port, protocol, windowWidth, windowHeig
serverListButton:setWidth(0)
local rememberPasswordBox = enterGame:getChildById('rememberPasswordBox')
rememberPasswordBox:setMarginTop(-5)
rememberPasswordBox:setMarginTop(-14)
if not windowWidth then windowWidth = 236 end
enterGame:setWidth(windowWidth)

View File

@@ -21,6 +21,8 @@ ServerListButton < UIButton
EnterGameWindow
id: enterGame
&authenticatorEnabled: false
&authenticatorHeight: 44
@onEnter: EnterGame.doLogin()
MenuLabel
@@ -50,12 +52,30 @@ EnterGameWindow
anchors.top: prev.bottom
margin-top: 2
MenuLabel
id: authenticatorTokenLabel
!text: tr('Authenticator Token')
anchors.left: prev.left
anchors.top: prev.bottom
text-auto-resize: true
margin-top: 8
visible: false
TextEdit
id: authenticatorTokenTextEdit
anchors.left: parent.left
anchors.right: parent.right
anchors.top: prev.bottom
margin-top: 2
visible: false
max-length: 8
MenuLabel
id: serverLabel
!text: tr('Server')
anchors.left: prev.left
anchors.top: prev.bottom
margin-top: 8
margin-top: -36
text-auto-resize: true
ServerListButton