Update LoginScreen.py

This commit is contained in:
Open Toontown 2022-01-20 15:47:27 -05:00
parent 2610e164e7
commit f94b56bba1
1 changed files with 89 additions and 175 deletions

View File

@ -1,4 +1,3 @@
import json
import os
import time
from datetime import datetime
@ -227,28 +226,17 @@ class LoginScreen(StateData.StateData, GuiScreen.GuiScreen):
def exitShowConnectionProblemDialog(self):
pass
if not __astron__:
def handleWaitForLoginResponse(self, msgType, di):
if msgType == CLIENT_LOGIN_2_RESP:
self.handleLoginResponseMsg2(di)
elif msgType == CLIENT_LOGIN_RESP:
self.handleLoginResponseMsg(di)
elif msgType == CLIENT_LOGIN_3_RESP:
self.handleLoginResponseMsg3(di)
elif msgType == CLIENT_LOGIN_TOONTOWN_RESP:
self.handleLoginToontownResponse(di)
else:
self.cr.handleMessageType(msgType, di)
else:
def handleWaitForLoginResponse(self, msgType, di):
if msgType == CLIENT_HELLO_RESP:
self.handleHelloResp()
else:
self.cr.handleMessageType(msgType, di)
def handleHelloResp(self):
self.cr.startHeartbeat()
self.cr.astronLoginManager.handleRequestLogin()
def handleWaitForLoginResponse(self, msgType, di):
if msgType == CLIENT_LOGIN_2_RESP:
self.handleLoginResponseMsg2(di)
elif msgType == CLIENT_LOGIN_RESP:
self.handleLoginResponseMsg(di)
elif msgType == CLIENT_LOGIN_3_RESP:
self.handleLoginResponseMsg3(di)
elif msgType == CLIENT_LOGIN_TOONTOWN_RESP:
self.handleLoginToontownResponse(di)
else:
self.cr.handleMessageType(msgType, di)
def getExtendedErrorMsg(self, errorString):
prefix = 'Bad DC Version Compare'
@ -488,156 +476,82 @@ class LoginScreen(StateData.StateData, GuiScreen.GuiScreen):
self.notify.debug('result=%s' % result)
return result
if not __astron__:
def handleLoginToontownResponse(self, di):
self.notify.debug("handleLoginToontownResponse")
if 1:
if base.logPrivateInfo:
dgram = di.getDatagram()
dgram.dumpHex(ostream)
now = time.time()
returnCode = di.getUint8()
respString = di.getString()
errorString = self.getExtendedErrorMsg(respString)
self.accountNumber = di.getUint32()
self.cr.DISLIdFromLogin = self.accountNumber
self.accountName = di.getString()
self.accountNameApproved = di.getUint8()
accountDetailRecord = AccountDetailRecord()
self.cr.accountDetailRecord = accountDetailRecord
self.openChatEnabled = di.getString() == "YES"
createFriendsWithChat = di.getString()
canChat = createFriendsWithChat == "YES" or createFriendsWithChat == "CODE"
self.cr.secretChatAllowed = canChat
def handleLoginToontownResponse(self, di):
self.notify.debug("handleLoginToontownResponse")
if 1:
if base.logPrivateInfo:
self.notify.info("CREATE_FRIENDS_WITH_CHAT from game server login: %s %s" % (createFriendsWithChat, canChat))
self.chatCodeCreationRule = di.getString()
self.cr.chatChatCodeCreationRule = self.chatCodeCreationRule
if base.logPrivateInfo:
self.notify.info("Chat code creation rule = %s" % self.chatCodeCreationRule)
self.cr.secretChatNeedsParentPassword = self.chatCodeCreationRule == "PARENT"
sec = di.getUint32()
usec = di.getUint32()
serverTime = sec + (usec/1000000.0)
self.cr.serverTimeUponLogin = serverTime
self.cr.clientTimeUponLogin = now
self.cr.globalClockRealTimeUponLogin = globalClock.getRealTime()
if hasattr(self.cr, "toontownTimeManager"):
self.cr.toontownTimeManager.updateLoginTimes(serverTime, now, self.cr.globalClockRealTimeUponLogin)
serverDelta = serverTime - now
self.cr.setServerDelta(serverDelta)
self.notify.setServerDelta(serverDelta, 28800)
access = di.getString()
self.isPaid = access == "FULL"
self.cr.parentPasswordSet = self.isPaid
self.cr.setIsPaid(self.isPaid)
if self.isPaid:
launcher.setPaidUserLoggedIn()
if base.logPrivateInfo:
self.notify.info("Paid from game server login: %s" % self.isPaid)
WhiteListResponse = di.getString()
if WhiteListResponse == "YES":
self.cr.whiteListChatEnabled = 1
else:
self.cr.whiteListChatEnabled = 0
self.lastLoggedInStr = di.getString()
self.cr.lastLoggedIn = datetime.now()
if hasattr(self.cr, "toontownTimeManager"):
self.cr.lastLoggedIn = self.cr.toontownTimeManager.convertStrToToontownTime(self.lastLoggedInStr)
if di.getRemainingSize() > 0:
self.cr.accountDays = self.parseAccountDays(di.getInt32())
else:
self.cr.accountDays = 100000
self.toonAccountType = di.getString()
if self.toonAccountType == "WITH_PARENT_ACCOUNT":
self.cr.withParentAccount = True
elif self.toonAccountType == "NO_PARENT_ACCOUNT":
self.cr.withParentAccount = False
else:
self.notify.error("unknown toon account type %s" % self.toonAccountType)
if base.logPrivateInfo:
self.notify.info("toonAccountType=%s" % self.toonAccountType)
self.userName = di.getString()
self.cr.userName = self.userName
self.notify.info("Login response return code %s" % returnCode)
if returnCode == 0:
self.__handleLoginSuccess()
elif returnCode == -13:
self.notify.info("Period Time Expired")
self.fsm.request("showLoginFailDialog", [OTPLocalizer.LoginScreenPeriodTimeExpired])
else:
self.notify.info("Login failed: %s" % errorString)
messenger.send(self.doneEvent, [{'mode': 'reject'}])
else:
def handleLoginToontownResponse(self, responseBlob):
self.notify.debug("handleLoginToontownResponse")
responseData = json.loads(responseBlob)
now = time.time()
returnCode = responseData.get('returnCode')
respString = responseData.get('respString')
errorString = self.getExtendedErrorMsg(respString)
self.accountNumber = responseData.get('accountNumber')
self.cr.DISLIdFromLogin = self.accountNumber
accountDetailRecord = AccountDetailRecord()
self.cr.accountDetailRecord = accountDetailRecord
createFriendsWithChat = responseData.get('createFriendsWithChat')
canChat = createFriendsWithChat == "YES" or createFriendsWithChat == "CODE"
self.cr.secretChatAllowed = canChat
if base.logPrivateInfo:
self.notify.info("CREATE_FRIENDS_WITH_CHAT from game server login: %s %s" % (createFriendsWithChat, canChat))
self.chatCodeCreationRule = responseData.get('chatCodeCreationRule')
self.cr.chatChatCodeCreationRule = self.chatCodeCreationRule
if base.logPrivateInfo:
self.notify.info("Chat code creation rule = %s" % self.chatCodeCreationRule)
self.cr.secretChatNeedsParentPassword = self.chatCodeCreationRule == "PARENT"
serverTime = responseData.get('serverTime')
self.cr.serverTimeUponLogin = serverTime
self.cr.clientTimeUponLogin = now
self.cr.globalClockRealTimeUponLogin = globalClock.getRealTime()
if hasattr(self.cr, "toontownTimeManager"):
self.cr.toontownTimeManager.updateLoginTimes(serverTime, now, self.cr.globalClockRealTimeUponLogin)
serverDelta = serverTime - now
self.cr.setServerDelta(serverDelta)
self.notify.setServerDelta(serverDelta, 28800)
access = responseData.get('access')
self.isPaid = access == "FULL"
self.cr.parentPasswordSet = self.isPaid
self.cr.setIsPaid(self.isPaid)
if self.isPaid:
launcher.setPaidUserLoggedIn()
if base.logPrivateInfo:
self.notify.info("Paid from game server login: %s" % self.isPaid)
WhiteListResponse = responseData.get('WhiteListResponse')
if WhiteListResponse == "YES":
self.cr.whiteListChatEnabled = 1
else:
self.cr.whiteListChatEnabled = 0
self.lastLoggedInStr = responseData.get('lastLoggedInStr')
self.cr.lastLoggedIn = datetime.now()
if hasattr(self.cr, "toontownTimeManager"):
self.cr.lastLoggedIn = self.cr.toontownTimeManager.convertStrToToontownTime(self.lastLoggedInStr)
accountDaysFromServer = responseData.get('accountDays')
if accountDaysFromServer is not None:
self.cr.accountDays = self.parseAccountDays(accountDaysFromServer)
else:
self.cr.accountDays = 100000
self.toonAccountType = responseData.get('toonAccountType')
if self.toonAccountType == "WITH_PARENT_ACCOUNT":
self.cr.withParentAccount = True
elif self.toonAccountType == "NO_PARENT_ACCOUNT":
self.cr.withParentAccount = False
else:
self.notify.error("unknown toon account type %s" % self.toonAccountType)
if base.logPrivateInfo:
self.notify.info("toonAccountType=%s" % self.toonAccountType)
self.userName = responseData.get('userName')
self.cr.userName = self.userName
self.notify.info("Login response return code %s" % returnCode)
if returnCode == 0:
self.__handleLoginSuccess()
elif returnCode == -13:
self.notify.info("Period Time Expired")
self.fsm.request("showLoginFailDialog", [OTPLocalizer.LoginScreenPeriodTimeExpired])
else:
self.notify.info("Login failed: %s" % errorString)
messenger.send(self.doneEvent, [{'mode': 'reject'}])
dgram = di.getDatagram()
dgram.dumpHex(ostream)
now = time.time()
returnCode = di.getUint8()
respString = di.getString()
errorString = self.getExtendedErrorMsg(respString)
self.accountNumber = di.getUint32()
self.cr.DISLIdFromLogin = self.accountNumber
self.accountName = di.getString()
self.accountNameApproved = di.getUint8()
accountDetailRecord = AccountDetailRecord()
self.cr.accountDetailRecord = accountDetailRecord
self.openChatEnabled = di.getString() == "YES"
createFriendsWithChat = di.getString()
canChat = createFriendsWithChat == "YES" or createFriendsWithChat == "CODE"
self.cr.secretChatAllowed = canChat
if base.logPrivateInfo:
self.notify.info("CREATE_FRIENDS_WITH_CHAT from game server login: %s %s" % (createFriendsWithChat, canChat))
self.chatCodeCreationRule = di.getString()
self.cr.chatChatCodeCreationRule = self.chatCodeCreationRule
if base.logPrivateInfo:
self.notify.info("Chat code creation rule = %s" % self.chatCodeCreationRule)
self.cr.secretChatNeedsParentPassword = self.chatCodeCreationRule == "PARENT"
sec = di.getUint32()
usec = di.getUint32()
serverTime = sec + (usec/1000000.0)
self.cr.serverTimeUponLogin = serverTime
self.cr.clientTimeUponLogin = now
self.cr.globalClockRealTimeUponLogin = globalClock.getRealTime()
if hasattr(self.cr, "toontownTimeManager"):
self.cr.toontownTimeManager.updateLoginTimes(serverTime, now, self.cr.globalClockRealTimeUponLogin)
serverDelta = serverTime - now
self.cr.setServerDelta(serverDelta)
self.notify.setServerDelta(serverDelta, 28800)
access = di.getString()
self.isPaid = access == "FULL"
self.cr.parentPasswordSet = self.isPaid
self.cr.setIsPaid(self.isPaid)
if self.isPaid:
launcher.setPaidUserLoggedIn()
if base.logPrivateInfo:
self.notify.info("Paid from game server login: %s" % self.isPaid)
WhiteListResponse = di.getString()
if WhiteListResponse == "YES":
self.cr.whiteListChatEnabled = 1
else:
self.cr.whiteListChatEnabled = 0
self.lastLoggedInStr = di.getString()
self.cr.lastLoggedIn = datetime.now()
if hasattr(self.cr, "toontownTimeManager"):
self.cr.lastLoggedIn = self.cr.toontownTimeManager.convertStrToToontownTime(self.lastLoggedInStr)
if di.getRemainingSize() > 0:
self.cr.accountDays = self.parseAccountDays(di.getInt32())
else:
self.cr.accountDays = 100000
self.toonAccountType = di.getString()
if self.toonAccountType == "WITH_PARENT_ACCOUNT":
self.cr.withParentAccount = True
elif self.toonAccountType == "NO_PARENT_ACCOUNT":
self.cr.withParentAccount = False
else:
self.notify.error("unknown toon account type %s" % self.toonAccountType)
if base.logPrivateInfo:
self.notify.info("toonAccountType=%s" % self.toonAccountType)
self.userName = di.getString()
self.cr.userName = self.userName
self.notify.info("Login response return code %s" % returnCode)
if returnCode == 0:
self.__handleLoginSuccess()
elif returnCode == -13:
self.notify.info("Period Time Expired")
self.fsm.request("showLoginFailDialog", [OTPLocalizer.LoginScreenPeriodTimeExpired])
else:
self.notify.info("Login failed: %s" % errorString)
messenger.send(self.doneEvent, [{'mode': 'reject'}])