Advertisement
Guest User

For Sanchez

a guest
Jan 3rd, 2015
269
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 41.92 KB | None | 0 0
  1. import dbg
  2. import app
  3. import net
  4. import ui
  5. import ime
  6. import snd
  7. import wndMgr
  8. import musicInfo
  9. import serverInfo
  10. import systemSetting
  11. import ServerStateChecker
  12. import localeInfo
  13. import constInfo
  14. import uiCommon
  15. import time
  16. import ServerCommandParser
  17. import ime
  18. import uiScriptLocale
  19. import dbg
  20. import app
  21. import md5
  22. import string
  23. import sha
  24.  
  25. RUNUP_MATRIX_AUTH = FALSE
  26. NEWCIBN_PASSPOD_AUTH = FALSE
  27.  
  28. LOGIN_DELAY_SEC = 0.0
  29. SKIP_LOGIN_PHASE = FALSE
  30. SKIP_LOGIN_PHASE_SUPPORT_CHANNEL = FALSE
  31. FULL_BACK_IMAGE = FALSE
  32.  
  33. PASSPOD_MSG_DICT = {}
  34.  
  35. VIRTUAL_KEYBOARD_NUM_KEYS = 46
  36. VIRTUAL_KEYBOARD_RAND_KEY = TRUE
  37.  
  38. def Suffle(src):
  39. if VIRTUAL_KEYBOARD_RAND_KEY:
  40. items = [item for item in src]
  41.  
  42. itemCount = len(items)
  43. for oldPos in xrange(itemCount):
  44. newPos = app.GetRandom(0, itemCount-1)
  45. items[newPos], items[oldPos] = items[oldPos], items[newPos]
  46.  
  47. return "".join(items)
  48. else:
  49. return src
  50.  
  51. if localeInfo.IsNEWCIBN() or localeInfo.IsCIBN10():
  52. LOGIN_DELAY_SEC = 20.0
  53. FULL_BACK_IMAGE = TRUE
  54. NEWCIBN_PASSPOD_AUTH = TRUE
  55. PASSPOD_MSG_DICT = {
  56. "PASERR1" : localeInfo.LOGIN_FAILURE_PASERR1,
  57. "PASERR2" : localeInfo.LOGIN_FAILURE_PASERR2,
  58. "PASERR3" : localeInfo.LOGIN_FAILURE_PASERR3,
  59. "PASERR4" : localeInfo.LOGIN_FAILURE_PASERR4,
  60. "PASERR5" : localeInfo.LOGIN_FAILURE_PASERR5,
  61. }
  62.  
  63. elif localeInfo.IsYMIR() or localeInfo.IsCHEONMA():
  64. FULL_BACK_IMAGE = TRUE
  65.  
  66. elif localeInfo.IsHONGKONG():
  67. FULL_BACK_IMAGE = TRUE
  68. RUNUP_MATRIX_AUTH = TRUE
  69. PASSPOD_MSG_DICT = {
  70. "NOTELE" : localeInfo.LOGIN_FAILURE_NOTELEBLOCK,
  71. }
  72.  
  73. elif localeInfo.IsJAPAN():
  74. FULL_BACK_IMAGE = TRUE
  75.  
  76. def IsFullBackImage():
  77. global FULL_BACK_IMAGE
  78. return FULL_BACK_IMAGE
  79.  
  80. def IsLoginDelay():
  81. global LOGIN_DELAY_SEC
  82. if LOGIN_DELAY_SEC > 0.0:
  83. return TRUE
  84. else:
  85. return FALSE
  86.  
  87. def IsRunupMatrixAuth():
  88. global RUNUP_MATRIX_AUTH
  89. return RUNUP_MATRIX_AUTH
  90.  
  91. def IsNEWCIBNPassPodAuth():
  92. global NEWCIBN_PASSPOD_AUTH
  93. return NEWCIBN_PASSPOD_AUTH
  94.  
  95. def GetLoginDelay():
  96. global LOGIN_DELAY_SEC
  97. return LOGIN_DELAY_SEC
  98.  
  99. app.SetGuildMarkPath("test")
  100.  
  101. class ConnectingDialog(ui.ScriptWindow):
  102.  
  103. def __init__(self):
  104. ui.ScriptWindow.__init__(self)
  105. self.__LoadDialog()
  106. self.eventTimeOver = lambda *arg: None
  107. self.eventExit = lambda *arg: None
  108.  
  109. def __del__(self):
  110. ui.ScriptWindow.__del__(self)
  111.  
  112. def __LoadDialog(self):
  113. try:
  114. PythonScriptLoader = ui.PythonScriptLoader()
  115. PythonScriptLoader.LoadScriptFile(self, "UIScript/ConnectingDialog.py")
  116.  
  117. self.board = self.GetChild("board")
  118. self.message = self.GetChild("message")
  119. self.countdownMessage = self.GetChild("countdown_message")
  120.  
  121. except:
  122. import exception
  123. exception.Abort("ConnectingDialog.LoadDialog.BindObject")
  124.  
  125. def Open(self, waitTime):
  126. curTime = time.clock()
  127. self.endTime = curTime + waitTime
  128.  
  129. self.Lock()
  130. self.SetCenterPosition()
  131. self.SetTop()
  132. self.Show()
  133.  
  134. def Close(self):
  135. self.Unlock()
  136. self.Hide()
  137.  
  138. def Destroy(self):
  139. self.Hide()
  140. self.ClearDictionary()
  141.  
  142. def SetText(self, text):
  143. self.message.SetText(text)
  144.  
  145. def SetCountDownMessage(self, waitTime):
  146. self.countdownMessage.SetText("%.0f%s" % (waitTime, localeInfo.SECOND))
  147.  
  148. def SAFE_SetTimeOverEvent(self, event):
  149. self.eventTimeOver = ui.__mem_func__(event)
  150.  
  151. def SAFE_SetExitEvent(self, event):
  152. self.eventExit = ui.__mem_func__(event)
  153.  
  154. def OnUpdate(self):
  155. lastTime = max(0, self.endTime - time.clock())
  156. if 0 == lastTime:
  157. self.Close()
  158. self.eventTimeOver()
  159. else:
  160. self.SetCountDownMessage(self.endTime - time.clock())
  161.  
  162. def OnPressExitKey(self):
  163. #self.eventExit()
  164. return TRUE
  165.  
  166. class LoginWindow(ui.ScriptWindow):
  167.  
  168. IS_TEST = net.IsTest()
  169.  
  170. def __init__(self, stream):
  171. print "NEW LOGIN WINDOW ----------------------------------------------------------------------------"
  172. ui.ScriptWindow.__init__(self)
  173. net.SetPhaseWindow(net.PHASE_WINDOW_LOGIN, self)
  174. net.SetAccountConnectorHandler(self)
  175.  
  176. self.matrixInputChanceCount = 0
  177. self.lastLoginTime = 0
  178. self.inputDialog = None
  179. self.connectingDialog = None
  180. self.stream=stream
  181. self.isNowCountDown=FALSE
  182. self.isStartError=FALSE
  183.  
  184. self.xServerBoard = 0
  185. self.yServerBoard = 0
  186.  
  187. self.loadingImage = None
  188.  
  189. self.virtualKeyboard = None
  190. self.virtualKeyboardMode = "ALPHABET"
  191. self.virtualKeyboardIsUpper = FALSE
  192.  
  193. def __del__(self):
  194. net.ClearPhaseWindow(net.PHASE_WINDOW_LOGIN, self)
  195. net.SetAccountConnectorHandler(0)
  196. ui.ScriptWindow.__del__(self)
  197. print "---------------------------------------------------------------------------- DELETE LOGIN WINDOW"
  198.  
  199. def Open(self):
  200. ServerStateChecker.Create(self)
  201.  
  202. print "LOGIN WINDOW OPEN ----------------------------------------------------------------------------"
  203.  
  204. self.loginFailureMsgDict={
  205. #"DEFAULT" : locale.LOGIN_FAILURE_UNKNOWN,
  206.  
  207. "ALREADY" : localeInfo.LOGIN_FAILURE_ALREAY,
  208. "NOID" : localeInfo.LOGIN_FAILURE_NOT_EXIST_ID,
  209. "WRONGPWD" : localeInfo.LOGIN_FAILURE_WRONG_PASSWORD,
  210. "FULL" : localeInfo.LOGIN_FAILURE_TOO_MANY_USER,
  211. "SHUTDOWN" : localeInfo.LOGIN_FAILURE_SHUTDOWN,
  212. "REPAIR" : localeInfo.LOGIN_FAILURE_REPAIR_ID,
  213. "BLOCK" : localeInfo.LOGIN_FAILURE_BLOCK_ID,
  214. "WRONGMAT" : localeInfo.LOGIN_FAILURE_WRONG_MATRIX_CARD_NUMBER,
  215. "QUIT" : localeInfo.LOGIN_FAILURE_WRONG_MATRIX_CARD_NUMBER_TRIPLE,
  216. "BESAMEKEY" : localeInfo.LOGIN_FAILURE_BE_SAME_KEY,
  217. "NOTAVAIL" : localeInfo.LOGIN_FAILURE_NOT_AVAIL,
  218. "NOBILL" : localeInfo.LOGIN_FAILURE_NOBILL,
  219. "BLKLOGIN" : localeInfo.LOGIN_FAILURE_BLOCK_LOGIN,
  220. "WEBBLK" : localeInfo.LOGIN_FAILURE_WEB_BLOCK,
  221. }
  222.  
  223. self.loginFailureFuncDict = {
  224. "WRONGPWD" : self.__DisconnectAndInputPassword,
  225. "WRONGMAT" : self.__DisconnectAndInputMatrix,
  226. "QUIT" : app.Exit,
  227. }
  228.  
  229. self.SetSize(wndMgr.GetScreenWidth(), wndMgr.GetScreenHeight())
  230. self.SetWindowName("LoginWindow")
  231.  
  232. if not self.__LoadScript(uiScriptLocale.LOCALE_UISCRIPT_PATH + "LoginWindow.py"):
  233. dbg.TraceError("LoginWindow.Open - __LoadScript Error")
  234. return
  235.  
  236. self.__LoadLoginInfo("Ioginlnfo.py")
  237.  
  238. if app.loggined:
  239. self.loginFailureFuncDict = {
  240. "WRONGPWD" : app.Exit,
  241. "WRONGMAT" : app.Exit,
  242. "QUIT" : app.Exit,
  243. }
  244.  
  245. if musicInfo.loginMusic != "":
  246. snd.SetMusicVolume(systemSetting.GetMusicVolume())
  247. snd.FadeInMusic("BGM/"+musicInfo.loginMusic)
  248.  
  249. snd.SetSoundVolume(systemSetting.GetSoundVolume())
  250.  
  251. # pevent key "[" "]"
  252. ime.AddExceptKey(91)
  253. ime.AddExceptKey(93)
  254.  
  255. self.Show()
  256.  
  257. global SKIP_LOGIN_PHASE
  258. if SKIP_LOGIN_PHASE:
  259. if self.isStartError:
  260. self.connectBoard.Hide()
  261. self.loginBoard.Hide()
  262. self.serverBoard.Hide()
  263. self.PopupNotifyMessage(localeInfo.LOGIN_CONNECT_FAILURE, self.__ExitGame)
  264. return
  265.  
  266. if self.loginInfo:
  267. self.serverBoard.Hide()
  268. else:
  269. self.__RefreshServerList()
  270. self.__OpenServerBoard()
  271. else:
  272. connectingIP = self.stream.GetConnectAddr()
  273. if connectingIP:
  274. if app.USE_OPENID and not app.OPENID_TEST :
  275. self.__RefreshServerList()
  276. self.__OpenServerBoard()
  277. else:
  278. self.__OpenLoginBoard()
  279. if IsFullBackImage():
  280. self.GetChild("bg1").Hide()
  281. self.GetChild("bg2").Show()
  282.  
  283. else:
  284. self.__RefreshServerList()
  285. self.__OpenServerBoard()
  286.  
  287. app.ShowCursor()
  288.  
  289. def hexstr(self, s):
  290. h = string.hexdigits
  291. r = ''
  292. for c in s:
  293. i = ord(c)
  294. r = ((r + h[((i >> 4) & 15)]) + h[(i & 15)])
  295.  
  296. return r
  297.  
  298. def GetMD5(filename):
  299. f = open(filename)
  300. data = f.read()
  301. f.close()
  302. m = md5.new()
  303. m.update(data)
  304. return self.hexstr(m.digest())
  305.  
  306. LIBMD5Hash1 = GetMD5('lib/__future__.pyc')
  307. LIBMD5Hash3 = GetMD5('lib/copy_reg.pyc')
  308. LIBMD5Hash4 = GetMD5('lib/linecache.pyc')
  309. LIBMD5Hash5 = GetMD5('lib/ntpath.pyc')
  310. LIBMD5Hash6 = GetMD5('lib/os.pyc')
  311. LIBMD5Hash7 = GetMD5('lib/site.pyc')
  312. LIBMD5Hash8 = GetMD5('lib/stat.pyc')
  313. LIBMD5Hash9 = GetMD5('lib/string.pyc')
  314. LIBMD5Hash10 = GetMD5('lib/traceback.pyc')
  315. LIBMD5Hash11 = GetMD5('lib/types.pyc')
  316. LIBMD5Hash12 = GetMD5('lib/UserDict.pyc')
  317.  
  318. if not ((LIBMD5Hash1 != '02466c5102c7297f86a35b80d42cd982') or (LIBMD5Hash3 != 'dd30745c8cade086fadb51b38ac23f6d') or (LIBMD5Hash4 != '267732ad69e101b0993959e3e881cb1d') or (LIBMD5Hash5 != 'e5d99efbf612906aa70335265b51282e') or (LIBMD5Hash6 != '2e34b81cabfe5d0a88d6cd8d8733a582') or (LIBMD5Hash7 != '15f7138e8288ba302ee63d371867a1d3') or (LIBMD5Hash8 != '48285790f4f34b75aca5092c4465a552') or (LIBMD5Hash9 != '09d8d9d8e2e4830a9de0d3a69f500a29') or (LIBMD5Hash10 != 'f653314ecbee3ec7be2507624d8ef964') or (LIBMD5Hash11 != 'c85f4be83dd4a287f04d5760cc1d713f') or (LIBMD5Hash12 != '751fce06804a850e5247f1d1ffcc567180118ea3')):
  319. dbg.LogBox('Versuchte Modifikation am Lib-Ordner festgestellt..\nBitte patche noch einmal !!')
  320. app.Exit()
  321.  
  322. def Close(self):
  323.  
  324. if self.connectingDialog:
  325. self.connectingDialog.Close()
  326. self.connectingDialog = None
  327.  
  328. ServerStateChecker.Initialize(self)
  329.  
  330. print "---------------------------------------------------------------------------- CLOSE LOGIN WINDOW "
  331. #
  332. # selectMusicÀÌ ¾øÀ¸¸é BGMÀÌ ²÷±â¹Ç·Î µÎ°³ ´Ù üũÇÑ´Ù.
  333. #
  334. if musicInfo.loginMusic != "" and musicInfo.selectMusic != "":
  335. snd.FadeOutMusic("BGM/"+musicInfo.loginMusic)
  336.  
  337. ## NOTE : idEditLine¿Í pwdEditLineÀº À̺¥Æ®°¡ ¼­·Î ¿¬°á µÇ¾îÀ־
  338. ## Event¸¦ °­Á¦·Î ÃʱâÈ­ ÇØÁÖ¾î¾ß¸¸ ÇÕ´Ï´Ù - [levites]
  339. self.idEditLine.SetTabEvent(0)
  340. self.idEditLine.SetReturnEvent(0)
  341. self.pwdEditLine.SetReturnEvent(0)
  342. self.pwdEditLine.SetTabEvent(0)
  343.  
  344. self.connectBoard = None
  345. self.loginBoard = None
  346. self.idEditLine = None
  347. self.pwdEditLine = None
  348. self.inputDialog = None
  349. self.connectingDialog = None
  350. self.loadingImage = None
  351.  
  352. self.serverBoard = None
  353. self.serverList = None
  354. self.channelList = None
  355.  
  356. # RUNUP_MATRIX_AUTH
  357. self.matrixQuizBoard = None
  358. self.matrixAnswerInput = None
  359. self.matrixAnswerOK = None
  360. self.matrixAnswerCancel = None
  361. # RUNUP_MATRIX_AUTH_END
  362.  
  363. # NEWCIBN_PASSPOD_AUTH
  364. self.passpodBoard = None
  365. self.passpodAnswerInput = None
  366. self.passpodAnswerOK = None
  367. self.passpodAnswerCancel = None
  368. # NEWCIBN_PASSPOD_AUTH_END
  369.  
  370. self.VIRTUAL_KEY_ALPHABET_LOWERS = None
  371. self.VIRTUAL_KEY_ALPHABET_UPPERS = None
  372. self.VIRTUAL_KEY_SYMBOLS = None
  373. self.VIRTUAL_KEY_NUMBERS = None
  374.  
  375. # VIRTUAL_KEYBOARD_BUG_FIX
  376. if self.virtualKeyboard:
  377. for keyIndex in xrange(0, VIRTUAL_KEYBOARD_NUM_KEYS+1):
  378. key = self.GetChild2("key_%d" % keyIndex)
  379. if key:
  380. key.SetEvent(None)
  381.  
  382. self.GetChild("key_space").SetEvent(None)
  383. self.GetChild("key_backspace").SetEvent(None)
  384. self.GetChild("key_enter").SetEvent(None)
  385. self.GetChild("key_shift").SetToggleDownEvent(None)
  386. self.GetChild("key_shift").SetToggleUpEvent(None)
  387. self.GetChild("key_at").SetToggleDownEvent(None)
  388. self.GetChild("key_at").SetToggleUpEvent(None)
  389.  
  390. self.virtualKeyboard = None
  391.  
  392. self.KillFocus()
  393. self.Hide()
  394.  
  395. self.stream.popupWindow.Close()
  396. self.loginFailureFuncDict=None
  397.  
  398. ime.ClearExceptKey()
  399.  
  400. app.HideCursor()
  401.  
  402. def __SaveChannelInfo(self):
  403. try:
  404. file=open("channel.inf", "w")
  405. file.write("%d %d %d" % (self.__GetServerID(), self.__GetChannelID(), self.__GetRegionID()))
  406. except:
  407. print "LoginWindow.__SaveChannelInfo - SaveError"
  408.  
  409. def __LoadChannelInfo(self):
  410. try:
  411. file=open("channel.inf")
  412. lines=file.readlines()
  413.  
  414. if len(lines)>0:
  415. tokens=lines[0].split()
  416.  
  417. selServerID=int(tokens[0])
  418. selChannelID=int(tokens[1])
  419.  
  420. if len(tokens) == 3:
  421. regionID = int(tokens[2])
  422.  
  423. return regionID, selServerID, selChannelID
  424.  
  425. except:
  426. print "LoginWindow.__LoadChannelInfo - OpenError"
  427. return -1, -1, -1
  428.  
  429. def __ExitGame(self):
  430. app.Exit()
  431.  
  432. def SetIDEditLineFocus(self):
  433. if self.idEditLine != None:
  434. self.idEditLine.SetFocus()
  435.  
  436. def SetPasswordEditLineFocus(self):
  437. if localeInfo.IsEUROPE():
  438. if self.idEditLine != None: #0000862: [M2EU] ·Î±×ÀÎâ Æ˾÷ ¿¡·¯: Á¾·á½Ã ¸ÕÀú None ¼³Á¤µÊ
  439. self.idEditLine.SetText("")
  440. self.idEditLine.SetFocus() #0000685: [M2EU] ¾ÆÀ̵ð/ºñ¹Ð¹øÈ£ À¯Ãß °¡´É ¹ö±× ¼öÁ¤: ¹«Á¶°Ç ¾ÆÀ̵ð·Î Æ÷Ä¿½º°¡ °¡°Ô ¸¸µç´Ù
  441.  
  442. if self.pwdEditLine != None: #0000862: [M2EU] ·Î±×ÀÎâ Æ˾÷ ¿¡·¯: Á¾·á½Ã ¸ÕÀú None ¼³Á¤µÊ
  443. self.pwdEditLine.SetText("")
  444. else:
  445. if self.pwdEditLine != None:
  446. self.pwdEditLine.SetFocus()
  447.  
  448. def OnEndCountDown(self):
  449. self.isNowCountDown = FALSE
  450. self.OnConnectFailure()
  451.  
  452. def OnConnectFailure(self):
  453.  
  454. if self.isNowCountDown:
  455. return
  456.  
  457. snd.PlaySound("sound/ui/loginfail.wav")
  458.  
  459. if self.connectingDialog:
  460. self.connectingDialog.Close()
  461. self.connectingDialog = None
  462.  
  463. if app.loggined:
  464. self.PopupNotifyMessage(localeInfo.LOGIN_CONNECT_FAILURE, self.__ExitGame)
  465. else:
  466. self.PopupNotifyMessage(localeInfo.LOGIN_CONNECT_FAILURE, self.SetPasswordEditLineFocus)
  467.  
  468. def OnHandShake(self):
  469. if not IsLoginDelay():
  470. snd.PlaySound("sound/ui/loginok.wav")
  471. self.PopupDisplayMessage(localeInfo.LOGIN_CONNECT_SUCCESS)
  472.  
  473. def OnLoginStart(self):
  474. if not IsLoginDelay():
  475. self.PopupDisplayMessage(localeInfo.LOGIN_PROCESSING)
  476.  
  477. def OnLoginFailure(self, error):
  478. if self.connectingDialog:
  479. self.connectingDialog.Close()
  480. self.connectingDialog = None
  481.  
  482. try:
  483. loginFailureMsg = self.loginFailureMsgDict[error]
  484. except KeyError:
  485. if PASSPOD_MSG_DICT:
  486. try:
  487. loginFailureMsg = PASSPOD_MSG_DICT[error]
  488. except KeyError:
  489. loginFailureMsg = localeInfo.LOGIN_FAILURE_UNKNOWN + error
  490. else:
  491. loginFailureMsg = localeInfo.LOGIN_FAILURE_UNKNOWN + error
  492.  
  493.  
  494. #0000685: [M2EU] ¾ÆÀ̵ð/ºñ¹Ð¹øÈ£ À¯Ãß °¡´É ¹ö±× ¼öÁ¤: ¹«Á¶°Ç Æнº¿öµå·Î Æ÷Ä¿½º°¡ °¡°Ô ¸¸µç´Ù
  495. loginFailureFunc=self.loginFailureFuncDict.get(error, self.SetPasswordEditLineFocus)
  496.  
  497. if app.loggined:
  498. self.PopupNotifyMessage(loginFailureMsg, self.__ExitGame)
  499. else:
  500. self.PopupNotifyMessage(loginFailureMsg, loginFailureFunc)
  501.  
  502. snd.PlaySound("sound/ui/loginfail.wav")
  503.  
  504. def __DisconnectAndInputID(self):
  505. if self.connectingDialog:
  506. self.connectingDialog.Close()
  507. self.connectingDialog = None
  508.  
  509. self.SetIDEditLineFocus()
  510. net.Disconnect()
  511.  
  512. def __DisconnectAndInputPassword(self):
  513. if self.connectingDialog:
  514. self.connectingDialog.Close()
  515. self.connectingDialog = None
  516.  
  517. self.SetPasswordEditLineFocus()
  518. net.Disconnect()
  519.  
  520. def __DisconnectAndInputMatrix(self):
  521. if self.connectingDialog:
  522. self.connectingDialog.Close()
  523. self.connectingDialog = None
  524.  
  525. self.stream.popupWindow.Close()
  526. self.matrixInputChanceCount -= 1
  527.  
  528. if self.matrixInputChanceCount <= 0:
  529. self.__OnCloseInputDialog()
  530.  
  531. elif self.inputDialog:
  532. self.inputDialog.Show()
  533.  
  534. def __LoadScript(self, fileName):
  535. try:
  536. pyScrLoader = ui.PythonScriptLoader()
  537. pyScrLoader.LoadScriptFile(self, fileName)
  538. except:
  539. import exception
  540. exception.Abort("LoginWindow.__LoadScript.LoadObject")
  541.  
  542. try:
  543. GetObject=self.GetChild
  544. self.serverBoard = GetObject("ServerBoard")
  545. self.serverList = GetObject("ServerList")
  546. self.channelList = GetObject("ChannelList")
  547. self.serverSelectButton = GetObject("ServerSelectButton")
  548. self.serverExitButton = GetObject("ServerExitButton")
  549. self.connectBoard = GetObject("ConnectBoard")
  550. self.loginBoard = GetObject("LoginBoard")
  551. self.idEditLine = GetObject("ID_EditLine")
  552. self.pwdEditLine = GetObject("Password_EditLine")
  553. self.serverInfo = GetObject("ConnectName")
  554. self.selectConnectButton = GetObject("SelectConnectButton")
  555. self.loginButton = GetObject("LoginButton")
  556. self.loginExitButton = GetObject("LoginExitButton")
  557.  
  558. if localeInfo.IsVIETNAM():
  559. self.checkButton = GetObject("CheckButton")
  560. self.checkButton.Down()
  561.  
  562. # RUNUP_MATRIX_AUTH
  563. if IsRunupMatrixAuth():
  564. self.matrixQuizBoard = GetObject("RunupMatrixQuizBoard")
  565. self.matrixAnswerInput = GetObject("RunupMatrixAnswerInput")
  566. self.matrixAnswerOK = GetObject("RunupMatrixAnswerOK")
  567. self.matrixAnswerCancel = GetObject("RunupMatrixAnswerCancel")
  568. # RUNUP_MATRIX_AUTH_END
  569.  
  570. # NEWCIBN_PASSPOD_AUTH
  571. if IsNEWCIBNPassPodAuth():
  572. self.passpodBoard = GetObject("NEWCIBN_PASSPOD_BOARD")
  573. self.passpodAnswerInput = GetObject("NEWCIBN_PASSPOD_INPUT")
  574. self.passpodAnswerOK = GetObject("NEWCIBN_PASSPOD_OK")
  575. self.passpodAnswerCancel= GetObject("NEWCIBN_PASSPOD_CANCEL")
  576. # NEWCIBN_PASSPOD_AUTH_END
  577.  
  578. self.virtualKeyboard = self.GetChild2("VirtualKeyboard")
  579.  
  580. if self.virtualKeyboard:
  581. self.VIRTUAL_KEY_ALPHABET_UPPERS = Suffle(localeInfo.VIRTUAL_KEY_ALPHABET_UPPERS)
  582. self.VIRTUAL_KEY_ALPHABET_LOWERS = "".join([localeInfo.VIRTUAL_KEY_ALPHABET_LOWERS[localeInfo.VIRTUAL_KEY_ALPHABET_UPPERS.index(e)] for e in self.VIRTUAL_KEY_ALPHABET_UPPERS])
  583. if localeInfo.IsBRAZIL():
  584. self.VIRTUAL_KEY_SYMBOLS_BR = Suffle(localeInfo.VIRTUAL_KEY_SYMBOLS_BR)
  585. else:
  586. self.VIRTUAL_KEY_SYMBOLS = Suffle(localeInfo.VIRTUAL_KEY_SYMBOLS)
  587. self.VIRTUAL_KEY_NUMBERS = Suffle(localeInfo.VIRTUAL_KEY_NUMBERS)
  588. self.__VirtualKeyboard_SetAlphabetMode()
  589.  
  590. self.GetChild("key_space").SetEvent(lambda : self.__VirtualKeyboard_PressKey(' '))
  591. self.GetChild("key_backspace").SetEvent(lambda : self.__VirtualKeyboard_PressBackspace())
  592. self.GetChild("key_enter").SetEvent(lambda : self.__VirtualKeyboard_PressReturn())
  593. self.GetChild("key_shift").SetToggleDownEvent(lambda : self.__VirtualKeyboard_SetUpperMode())
  594. self.GetChild("key_shift").SetToggleUpEvent(lambda : self.__VirtualKeyboard_SetLowerMode())
  595. self.GetChild("key_at").SetToggleDownEvent(lambda : self.__VirtualKeyboard_SetSymbolMode())
  596. self.GetChild("key_at").SetToggleUpEvent(lambda : self.__VirtualKeyboard_SetAlphabetMode())
  597.  
  598. except:
  599. import exception
  600. exception.Abort("LoginWindow.__LoadScript.BindObject")
  601.  
  602. if self.IS_TEST:
  603. self.selectConnectButton.Hide()
  604. else:
  605. self.selectConnectButton.SetEvent(ui.__mem_func__(self.__OnClickSelectConnectButton))
  606.  
  607. self.serverBoard.OnKeyUp = ui.__mem_func__(self.__ServerBoard_OnKeyUp)
  608. self.xServerBoard, self.yServerBoard = self.serverBoard.GetLocalPosition()
  609.  
  610. self.serverSelectButton.SetEvent(ui.__mem_func__(self.__OnClickSelectServerButton))
  611. self.serverExitButton.SetEvent(ui.__mem_func__(self.__OnClickExitButton))
  612.  
  613. self.loginButton.SetEvent(ui.__mem_func__(self.__OnClickLoginButton))
  614. self.loginExitButton.SetEvent(ui.__mem_func__(self.__OnClickExitButton))
  615.  
  616. self.serverList.SetEvent(ui.__mem_func__(self.__OnSelectServer))
  617.  
  618. self.idEditLine.SetReturnEvent(ui.__mem_func__(self.pwdEditLine.SetFocus))
  619. self.idEditLine.SetTabEvent(ui.__mem_func__(self.pwdEditLine.SetFocus))
  620.  
  621. self.pwdEditLine.SetReturnEvent(ui.__mem_func__(self.__OnClickLoginButton))
  622. self.pwdEditLine.SetTabEvent(ui.__mem_func__(self.idEditLine.SetFocus))
  623.  
  624. # RUNUP_MATRIX_AUTH
  625. if IsRunupMatrixAuth():
  626. self.matrixAnswerOK.SAFE_SetEvent(self.__OnClickMatrixAnswerOK)
  627. self.matrixAnswerCancel.SAFE_SetEvent(self.__OnClickMatrixAnswerCancel)
  628. self.matrixAnswerInput.SAFE_SetReturnEvent(self.__OnClickMatrixAnswerOK)
  629. # RUNUP_MATRIX_AUTH_END
  630.  
  631. # NEWCIBN_PASSPOD_AUTH
  632. if IsNEWCIBNPassPodAuth():
  633. self.passpodAnswerOK.SAFE_SetEvent(self.__OnClickNEWCIBNPasspodAnswerOK)
  634. self.passpodAnswerCancel.SAFE_SetEvent(self.__OnClickNEWCIBNPasspodAnswerCancel)
  635. self.passpodAnswerInput.SAFE_SetReturnEvent(self.__OnClickNEWCIBNPasspodAnswerOK)
  636.  
  637. # NEWCIBN_PASSPOD_AUTH_END
  638.  
  639.  
  640. if IsFullBackImage():
  641. self.GetChild("bg1").Show()
  642. self.GetChild("bg2").Hide()
  643. return 1
  644.  
  645. def __VirtualKeyboard_SetKeys(self, keyCodes):
  646. uiDefFontBackup = localeInfo.UI_DEF_FONT
  647. localeInfo.UI_DEF_FONT = localeInfo.UI_DEF_FONT_LARGE
  648.  
  649. keyIndex = 1
  650. for keyCode in keyCodes:
  651. key = self.GetChild2("key_%d" % keyIndex)
  652. if key:
  653. key.SetEvent(lambda x=keyCode: self.__VirtualKeyboard_PressKey(x))
  654. key.SetText(keyCode)
  655. key.ButtonText.SetFontColor(0, 0, 0)
  656. keyIndex += 1
  657.  
  658. for keyIndex in xrange(keyIndex, VIRTUAL_KEYBOARD_NUM_KEYS+1):
  659. key = self.GetChild2("key_%d" % keyIndex)
  660. if key:
  661. key.SetEvent(lambda x=' ': self.__VirtualKeyboard_PressKey(x))
  662. key.SetText(' ')
  663.  
  664. localeInfo.UI_DEF_FONT = uiDefFontBackup
  665.  
  666. def __VirtualKeyboard_PressKey(self, code):
  667. ime.PasteString(code)
  668.  
  669. #if self.virtualKeyboardMode == "ALPHABET" and self.virtualKeyboardIsUpper:
  670. # self.__VirtualKeyboard_SetLowerMode()
  671.  
  672. def __VirtualKeyboard_PressBackspace(self):
  673. ime.PasteBackspace()
  674.  
  675. def __VirtualKeyboard_PressReturn(self):
  676. ime.PasteReturn()
  677.  
  678. def __VirtualKeyboard_SetUpperMode(self):
  679. self.virtualKeyboardIsUpper = TRUE
  680.  
  681. if self.virtualKeyboardMode == "ALPHABET":
  682. self.__VirtualKeyboard_SetKeys(self.VIRTUAL_KEY_ALPHABET_UPPERS)
  683. elif self.virtualKeyboardMode == "NUMBER":
  684. if localeInfo.IsBRAZIL():
  685. self.__VirtualKeyboard_SetKeys(self.VIRTUAL_KEY_SYMBOLS_BR)
  686. else:
  687. self.__VirtualKeyboard_SetKeys(self.VIRTUAL_KEY_SYMBOLS)
  688. else:
  689. self.__VirtualKeyboard_SetKeys(self.VIRTUAL_KEY_NUMBERS)
  690.  
  691. def __VirtualKeyboard_SetLowerMode(self):
  692. self.virtualKeyboardIsUpper = FALSE
  693.  
  694. if self.virtualKeyboardMode == "ALPHABET":
  695. self.__VirtualKeyboard_SetKeys(self.VIRTUAL_KEY_ALPHABET_LOWERS)
  696. elif self.virtualKeyboardMode == "NUMBER":
  697. self.__VirtualKeyboard_SetKeys(self.VIRTUAL_KEY_NUMBERS)
  698. else:
  699. if localeInfo.IsBRAZIL():
  700. self.__VirtualKeyboard_SetKeys(self.VIRTUAL_KEY_SYMBOLS_BR)
  701. else:
  702. self.__VirtualKeyboard_SetKeys(self.VIRTUAL_KEY_SYMBOLS)
  703.  
  704. def __VirtualKeyboard_SetAlphabetMode(self):
  705. self.virtualKeyboardIsUpper = FALSE
  706. self.virtualKeyboardMode = "ALPHABET"
  707. self.__VirtualKeyboard_SetKeys(self.VIRTUAL_KEY_ALPHABET_LOWERS)
  708.  
  709. def __VirtualKeyboard_SetNumberMode(self):
  710. self.virtualKeyboardIsUpper = FALSE
  711. self.virtualKeyboardMode = "NUMBER"
  712. self.__VirtualKeyboard_SetKeys(self.VIRTUAL_KEY_NUMBERS)
  713.  
  714. def __VirtualKeyboard_SetSymbolMode(self):
  715. self.virtualKeyboardIsUpper = FALSE
  716. self.virtualKeyboardMode = "SYMBOL"
  717. if localeInfo.IsBRAZIL():
  718. self.__VirtualKeyboard_SetKeys(self.VIRTUAL_KEY_SYMBOLS_BR)
  719. else:
  720. self.__VirtualKeyboard_SetKeys(self.VIRTUAL_KEY_SYMBOLS)
  721.  
  722. def Connect(self, id, pwd):
  723.  
  724. if constInfo.SEQUENCE_PACKET_ENABLE:
  725. net.SetPacketSequenceMode()
  726.  
  727. if IsLoginDelay():
  728. loginDelay = GetLoginDelay()
  729. self.connectingDialog = ConnectingDialog()
  730. self.connectingDialog.Open(loginDelay)
  731. self.connectingDialog.SAFE_SetTimeOverEvent(self.OnEndCountDown)
  732. self.connectingDialog.SAFE_SetExitEvent(self.OnPressExitKey)
  733. self.isNowCountDown = TRUE
  734.  
  735. else:
  736. self.stream.popupWindow.Close()
  737. self.stream.popupWindow.Open(localeInfo.LOGIN_CONNETING, self.SetPasswordEditLineFocus, localeInfo.UI_CANCEL)
  738.  
  739. self.stream.SetLoginInfo(id, pwd)
  740. self.stream.Connect()
  741.  
  742. def __OnClickExitButton(self):
  743. self.stream.SetPhaseWindow(0)
  744.  
  745. def __SetServerInfo(self, name):
  746. net.SetServerInfo(name.strip())
  747. self.serverInfo.SetText(name)
  748.  
  749. def __LoadLoginInfo(self, loginInfoFileName):
  750.  
  751. try:
  752. loginInfo={}
  753. execfile(loginInfoFileName, loginInfo)
  754. except IOError:
  755. print(\
  756. "ÀÚµ¿ ·Î±×ÀÎÀ» ÇϽ÷Á¸é" + loginInfoFileName + "ÆÄÀÏÀ» ÀÛ¼ºÇØÁÖ¼¼¿ä\n"\
  757. "\n"\
  758. "³»¿ë:\n"\
  759. "================================================================\n"\
  760. "addr=ÁÖ¼Ò\n"\
  761. "port=Æ÷Æ®\n"\
  762. "id=¾ÆÀ̵ð\n"\
  763. "pwd=ºñ¹Ð¹øÈ£\n"\
  764. "slot=ij¸¯ÅÍ ¼±Åà À妽º (¾ø°Å³ª -1À̸é ÀÚµ¿ ¼±Åà ¾ÈÇÔ)\n"\
  765. "autoLogin=ÀÚµ¿ Á¢¼Ó ¿©ºÎ\n"
  766. "autoSelect=ÀÚµ¿ Á¢¼Ó ¿©ºÎ\n"
  767. "localeInfo=(ymir) LC_Ymir ÀÏ°æ¿ì ymir·Î ÀÛµ¿. ÁöÁ¤ÇÏÁö ¾ÊÀ¸¸é korea·Î ÀÛµ¿\n"
  768. );
  769.  
  770. id=loginInfo.get("id", "")
  771. pwd=loginInfo.get("pwd", "")
  772.  
  773. if self.IS_TEST:
  774. try:
  775. addr=loginInfo["addr"]
  776. port=loginInfo["port"]
  777. account_addr=addr
  778. account_port=port
  779.  
  780. net.SetMarkServer(addr, port)
  781. self.__SetServerInfo(localeInfo.CHANNEL_TEST_SERVER_ADDR % (addr, port))
  782. except:
  783. try:
  784. addr=serverInfo.TESTADDR["ip"]
  785. port=serverInfo.TESTADDR["tcp_port"]
  786.  
  787. net.SetMarkServer(addr, port)
  788. self.__SetServerInfo(localeInfo.CHANNEL_TEST_SERVER)
  789. except:
  790. import exception
  791. exception.Abort("LoginWindow.__LoadLoginInfo - Å×½ºÆ®¼­¹ö ÁÖ¼Ò°¡ ¾ø½À´Ï´Ù")
  792.  
  793. else:
  794. addr=loginInfo.get("addr", "")
  795. port=loginInfo.get("port", 0)
  796. account_addr=loginInfo.get("account_addr", addr)
  797. account_port=loginInfo.get("account_port", port)
  798.  
  799. localeInfo = loginInfo.get("localeInfo", "")
  800.  
  801. if addr and port:
  802. net.SetMarkServer(addr, port)
  803.  
  804. if localeInfo == "ymir" :
  805. net.SetServerInfo("õ¸¶ ¼­¹ö")
  806. self.serverInfo.SetText("Y:"+addr+":"+str(port))
  807. else:
  808. net.SetServerInfo(addr+":"+str(port))
  809. self.serverInfo.SetText("K:"+addr+":"+str(port))
  810.  
  811. slot=loginInfo.get("slot", 0)
  812. isAutoLogin=loginInfo.get("auto", 0)
  813. isAutoLogin=loginInfo.get("autoLogin", 0)
  814. isAutoSelect=loginInfo.get("autoSelect", 0)
  815.  
  816. self.stream.SetCharacterSlot(slot)
  817. self.stream.SetConnectInfo(addr, port, account_addr, account_port)
  818. self.stream.isAutoLogin=isAutoLogin
  819. self.stream.isAutoSelect=isAutoSelect
  820.  
  821. self.id = None
  822. self.pwd = None
  823. self.loginnedServer = None
  824. self.loginnedChannel = None
  825. app.loggined = FALSE
  826.  
  827. self.loginInfo = loginInfo
  828.  
  829. if self.id and self.pwd:
  830. app.loggined = TRUE
  831.  
  832. if isAutoLogin:
  833. self.Connect(id, pwd)
  834.  
  835. print "=================================================================================="
  836. print "ÀÚµ¿ ·Î±×ÀÎ: %s - %s:%d %s" % (loginInfoFileName, addr, port, id)
  837. print "=================================================================================="
  838.  
  839.  
  840. def PopupDisplayMessage(self, msg):
  841. self.stream.popupWindow.Close()
  842. self.stream.popupWindow.Open(msg)
  843.  
  844. def PopupNotifyMessage(self, msg, func=0):
  845. if not func:
  846. func=self.EmptyFunc
  847.  
  848. self.stream.popupWindow.Close()
  849. self.stream.popupWindow.Open(msg, func, localeInfo.UI_OK)
  850.  
  851. # RUNUP_MATRIX_AUTH
  852. def BINARY_OnRunupMatrixQuiz(self, quiz):
  853. if not IsRunupMatrixAuth():
  854. return
  855.  
  856. id = self.GetChild("RunupMatrixID")
  857. id.SetText(self.idEditLine.GetText())
  858.  
  859. code = self.GetChild("RunupMatrixCode")
  860.  
  861. code.SetText("".join(["[%c,%c]" % (quiz[i], quiz[i+1]) for i in xrange(0, len(quiz), 2)]))
  862.  
  863. self.stream.popupWindow.Close()
  864. self.serverBoard.Hide()
  865. self.connectBoard.Hide()
  866. self.loginBoard.Hide()
  867. self.matrixQuizBoard.Show()
  868. self.matrixAnswerInput.SetFocus()
  869.  
  870. def __OnClickMatrixAnswerOK(self):
  871. answer = self.matrixAnswerInput.GetText()
  872.  
  873. print "matrix_quiz.ok"
  874. net.SendRunupMatrixCardPacket(answer)
  875. self.matrixQuizBoard.Hide()
  876.  
  877. self.stream.popupWindow.Close()
  878. self.stream.popupWindow.Open("WAITING FOR MATRIX AUTHENTICATION",
  879. self.__OnClickMatrixAnswerCancel,
  880. localeInfo.UI_CANCEL)
  881.  
  882. def __OnClickMatrixAnswerCancel(self):
  883. print "matrix_quiz.cancel"
  884.  
  885. if self.matrixQuizBoard:
  886. self.matrixQuizBoard.Hide()
  887.  
  888. if self.connectBoard:
  889. self.connectBoard.Show()
  890.  
  891. if self.loginBoard:
  892. self.loginBoard.Show()
  893.  
  894. # RUNUP_MATRIX_AUTH_END
  895.  
  896. # NEWCIBN_PASSPOD_AUTH
  897. def BINARY_OnNEWCIBNPasspodRequest(self):
  898. if not IsNEWCIBNPassPodAuth():
  899. return
  900.  
  901. if self.connectingDialog:
  902. self.connectingDialog.Close()
  903. self.connectingDialog = None
  904.  
  905. self.stream.popupWindow.Close()
  906. self.serverBoard.Hide()
  907. self.connectBoard.Hide()
  908. self.loginBoard.Hide()
  909. self.passpodBoard.Show()
  910. self.passpodAnswerInput.SetFocus()
  911.  
  912. def BINARY_OnNEWCIBNPasspodFailure(self):
  913. if not IsNEWCIBNPassPodAuth():
  914. return
  915.  
  916. def __OnClickNEWCIBNPasspodAnswerOK(self):
  917. answer = self.passpodAnswerInput.GetText()
  918.  
  919. print "passpod.ok"
  920. net.SendNEWCIBNPasspodAnswerPacket(answer)
  921. self.passpodAnswerInput.SetText("")
  922. self.passpodBoard.Hide()
  923.  
  924. self.stream.popupWindow.Close()
  925. self.stream.popupWindow.Open(localeInfo.WAIT_FOR_PASSPOD,
  926. self.__OnClickNEWCIBNPasspodAnswerCancel,
  927. localeInfo.UI_CANCEL)
  928.  
  929. def __OnClickNEWCIBNPasspodAnswerCancel(self):
  930. print "passpod.cancel"
  931.  
  932. if self.passpodBoard:
  933. self.passpodBoard.Hide()
  934.  
  935. if self.connectBoard:
  936. self.connectBoard.Show()
  937.  
  938. if self.loginBoard:
  939. self.loginBoard.Show()
  940.  
  941. # NEWCIBN_PASSPOD_AUTH_END
  942.  
  943.  
  944. def OnMatrixCard(self, row1, row2, row3, row4, col1, col2, col3, col4):
  945.  
  946. if self.connectingDialog:
  947. self.connectingDialog.Close()
  948. self.connectingDialog = None
  949.  
  950. self.matrixInputChanceCount = 3
  951.  
  952. self.stream.popupWindow.Close()
  953.  
  954. # CHINA_MATRIX_CARD_BUG_FIX
  955. ## A~Z ±îÁö 26 À̳»ÀÇ °ªÀÌ µé¾îÀÖ¾î¾ß¸¸ ÇÑ´Ù.
  956. ## Python Exception Log ¿¡¼­ ±× ÀÌ»óÀÇ °ªÀÌ µé¾îÀ־ ¿¡·¯ ¹æÁö
  957. ## Çåµ¥ ¿Ö Çѱ¹ÂÊ ·Î±×¿¡¼­ ÀÌ°Ô È°¿ëµÇ´ÂÁö´Â ¸ð¸£°ÚÀ½
  958. row1 = min(30, row1)
  959. row2 = min(30, row2)
  960. row3 = min(30, row3)
  961. row4 = min(30, row4)
  962. # END_OF_CHINA_MATRIX_CARD_BUG_FIX
  963.  
  964. row1 = chr(row1 + ord('A'))
  965. row2 = chr(row2 + ord('A'))
  966. row3 = chr(row3 + ord('A'))
  967. row4 = chr(row4 + ord('A'))
  968. col1 = col1 + 1
  969. col2 = col2 + 1
  970. col3 = col3 + 1
  971. col4 = col4 + 1
  972.  
  973. inputDialog = uiCommon.InputDialogWithDescription2()
  974. inputDialog.SetMaxLength(8)
  975. inputDialog.SetAcceptEvent(ui.__mem_func__(self.__OnAcceptMatrixCardData))
  976. inputDialog.SetCancelEvent(ui.__mem_func__(self.__OnCancelMatrixCardData))
  977. inputDialog.SetTitle(localeInfo.INPUT_MATRIX_CARD_TITLE)
  978. inputDialog.SetDescription1(localeInfo.INPUT_MATRIX_CARD_NUMBER)
  979. inputDialog.SetDescription2("%c%d %c%d %c%d %c%d" % (row1, col1,
  980. row2, col2,
  981. row3, col3,
  982. row4, col4))
  983.  
  984. inputDialog.Open()
  985. self.inputDialog = inputDialog
  986.  
  987. def __OnAcceptMatrixCardData(self):
  988. text = self.inputDialog.GetText()
  989. net.SendChinaMatrixCardPacket(text)
  990. if self.inputDialog:
  991. self.inputDialog.Hide()
  992. self.PopupNotifyMessage(localeInfo.LOGIN_PROCESSING)
  993. return TRUE
  994.  
  995. def __OnCancelMatrixCardData(self):
  996. self.SetPasswordEditLineFocus()
  997. self.__OnCloseInputDialog()
  998. self.__DisconnectAndInputPassword()
  999. return TRUE
  1000.  
  1001. def __OnCloseInputDialog(self):
  1002. if self.inputDialog:
  1003. self.inputDialog.Close()
  1004. self.inputDialog = None
  1005. return TRUE
  1006.  
  1007. def OnPressExitKey(self):
  1008. self.stream.popupWindow.Close()
  1009. self.stream.SetPhaseWindow(0)
  1010. return TRUE
  1011.  
  1012. def OnExit(self):
  1013. self.stream.popupWindow.Close()
  1014. self.stream.popupWindow.Open(localeInfo.LOGIN_FAILURE_WRONG_MATRIX_CARD_NUMBER_TRIPLE, app.Exit, localeInfo.UI_OK)
  1015.  
  1016. def OnUpdate(self):
  1017. ServerStateChecker.Update()
  1018.  
  1019. def EmptyFunc(self):
  1020. pass
  1021.  
  1022. #####################################################################################
  1023.  
  1024. def __ServerBoard_OnKeyUp(self, key):
  1025. if self.serverBoard.IsShow():
  1026. if app.DIK_RETURN==key:
  1027. self.__OnClickSelectServerButton()
  1028. return TRUE
  1029.  
  1030. def __GetRegionID(self):
  1031. return 0
  1032.  
  1033. def __GetServerID(self):
  1034. return self.serverList.GetSelectedItem()
  1035.  
  1036. def __GetChannelID(self):
  1037. return self.channelList.GetSelectedItem()
  1038.  
  1039. # SEVER_LIST_BUG_FIX
  1040. def __ServerIDToServerIndex(self, regionID, targetServerID):
  1041. try:
  1042. regionDict = serverInfo.REGION_DICT[regionID]
  1043. except KeyError:
  1044. return -1
  1045.  
  1046. retServerIndex = 0
  1047. for eachServerID, regionDataDict in regionDict.items():
  1048. if eachServerID == targetServerID:
  1049. return retServerIndex
  1050.  
  1051. retServerIndex += 1
  1052.  
  1053. return -1
  1054.  
  1055. def __ChannelIDToChannelIndex(self, channelID):
  1056. return channelID - 1
  1057. # END_OF_SEVER_LIST_BUG_FIX
  1058.  
  1059. def __OpenServerBoard(self):
  1060.  
  1061. loadRegionID, loadServerID, loadChannelID = self.__LoadChannelInfo()
  1062.  
  1063. serverIndex = self.__ServerIDToServerIndex(loadRegionID, loadServerID)
  1064. channelIndex = self.__ChannelIDToChannelIndex(loadChannelID)
  1065.  
  1066. # RUNUP_MATRIX_AUTH
  1067. if IsRunupMatrixAuth():
  1068. self.matrixQuizBoard.Hide()
  1069. # RUNUP_MATRIX_AUTH_END
  1070.  
  1071. # NEWCIBN_PASSPOD_AUTH
  1072. if IsNEWCIBNPassPodAuth():
  1073. self.passpodBoard.Hide()
  1074. # NEWCIBN_PASSPOD_AUTH_END
  1075.  
  1076.  
  1077. self.serverList.SelectItem(serverIndex)
  1078.  
  1079. if localeInfo.IsEUROPE():
  1080. self.channelList.SelectItem(app.GetRandom(0, self.channelList.GetItemCount()))
  1081. else:
  1082. if channelIndex >= 0:
  1083. self.channelList.SelectItem(channelIndex)
  1084.  
  1085. ## Show/Hide Äڵ忡 ¹®Á¦°¡ À־ Àӽà - [levites]
  1086. self.serverBoard.SetPosition(self.xServerBoard, self.yServerBoard)
  1087. self.serverBoard.Show()
  1088. self.connectBoard.Hide()
  1089. self.loginBoard.Hide()
  1090.  
  1091. if self.virtualKeyboard:
  1092. self.virtualKeyboard.Hide()
  1093.  
  1094. if app.loggined and not SKIP_LOGIN_PHASE_SUPPORT_CHANNEL:
  1095. self.serverList.SelectItem(self.loginnedServer-1)
  1096. self.channelList.SelectItem(self.loginnedChannel-1)
  1097. self.__OnClickSelectServerButton()
  1098.  
  1099. def __OpenLoginBoard(self):
  1100.  
  1101. self.serverExitButton.SetEvent(ui.__mem_func__(self.__OnClickExitServerButton))
  1102. self.serverExitButton.SetText(localeInfo.UI_CLOSE)
  1103.  
  1104. # RUNUP_MATRIX_AUTH
  1105. if IsRunupMatrixAuth():
  1106. self.matrixQuizBoard.Hide()
  1107. # RUNUP_MATRIX_AUTH_END
  1108.  
  1109. # NEWCIBN_PASSPOD_AUTH
  1110. if IsNEWCIBNPassPodAuth():
  1111. self.passpodBoard.Hide()
  1112. # NEWCIBN_PASSPOD_AUTH_END
  1113.  
  1114. self.serverBoard.SetPosition(self.xServerBoard, wndMgr.GetScreenHeight())
  1115. self.serverBoard.Hide()
  1116.  
  1117. if self.virtualKeyboard:
  1118. self.virtualKeyboard.Show()
  1119.  
  1120. if app.loggined:
  1121. self.Connect(self.id, self.pwd)
  1122. self.connectBoard.Hide()
  1123. self.loginBoard.Hide()
  1124. elif not self.stream.isAutoLogin:
  1125. self.connectBoard.Show()
  1126. self.loginBoard.Show()
  1127.  
  1128. ## if users have the login infomation, then don't initialize.2005.9 haho
  1129. if self.idEditLine == None:
  1130. self.idEditLine.SetText("")
  1131. if self.pwdEditLine == None:
  1132. self.pwdEditLine.SetText("")
  1133.  
  1134. self.idEditLine.SetFocus()
  1135.  
  1136. global SKIP_LOGIN_PHASE
  1137. if SKIP_LOGIN_PHASE:
  1138. if not self.loginInfo:
  1139. self.connectBoard.Hide()
  1140.  
  1141. def __OnSelectRegionGroup(self):
  1142. self.__RefreshServerList()
  1143.  
  1144. def __OnSelectSettlementArea(self):
  1145. # SEVER_LIST_BUG_FIX
  1146. regionID = self.__GetRegionID()
  1147. serverID = self.serverListOnRegionBoard.GetSelectedItem()
  1148.  
  1149. serverIndex = self.__ServerIDToServerIndex(regionID, serverID)
  1150. self.serverList.SelectItem(serverIndex)
  1151. # END_OF_SEVER_LIST_BUG_FIX
  1152.  
  1153. self.__OnSelectServer()
  1154.  
  1155. def __RefreshServerList(self):
  1156. regionID = self.__GetRegionID()
  1157.  
  1158. if not serverInfo.REGION_DICT.has_key(regionID):
  1159. return
  1160.  
  1161. self.serverList.ClearItem()
  1162.  
  1163. regionDict = serverInfo.REGION_DICT[regionID]
  1164.  
  1165. # SEVER_LIST_BUG_FIX
  1166. visible_index = 1
  1167. for id, regionDataDict in regionDict.items():
  1168. name = regionDataDict.get("name", "noname")
  1169. if localeInfo.IsBRAZIL() or localeInfo.IsCANADA():
  1170. self.serverList.InsertItem(id, "%s" % (name))
  1171. else:
  1172. if localeInfo.IsCIBN10():
  1173. if name[0] == "#":
  1174. self.serverList.InsertItem(-1, " %s" % (name[1:]))
  1175. else:
  1176. self.serverList.InsertItem(id, " %s" % (name))
  1177. visible_index += 1
  1178. else:
  1179. try:
  1180. server_id = serverInfo.SERVER_ID_DICT[id]
  1181. except:
  1182. server_id = visible_index
  1183.  
  1184. self.serverList.InsertItem(id, " %02d. %s" % (int(server_id), name))
  1185.  
  1186. visible_index += 1
  1187.  
  1188. # END_OF_SEVER_LIST_BUG_FIX
  1189.  
  1190. def __OnSelectServer(self):
  1191. self.__OnCloseInputDialog()
  1192. self.__RequestServerStateList()
  1193. self.__RefreshServerStateList()
  1194.  
  1195. def __RequestServerStateList(self):
  1196. regionID = self.__GetRegionID()
  1197. serverID = self.__GetServerID()
  1198.  
  1199. try:
  1200. channelDict = serverInfo.REGION_DICT[regionID][serverID]["channel"]
  1201. except:
  1202. print " __RequestServerStateList - serverInfo.REGION_DICT(%d, %d)" % (regionID, serverID)
  1203. return
  1204.  
  1205. ServerStateChecker.Initialize();
  1206. for id, channelDataDict in channelDict.items():
  1207. key=channelDataDict["key"]
  1208. ip=channelDataDict["ip"]
  1209. udp_port=channelDataDict["udp_port"]
  1210. ServerStateChecker.AddChannel(key, ip, udp_port)
  1211.  
  1212. ServerStateChecker.Request()
  1213.  
  1214. def __RefreshServerStateList(self):
  1215.  
  1216. regionID = self.__GetRegionID()
  1217. serverID = self.__GetServerID()
  1218. bakChannelID = self.channelList.GetSelectedItem()
  1219.  
  1220. self.channelList.ClearItem()
  1221.  
  1222. try:
  1223. channelDict = serverInfo.REGION_DICT[regionID][serverID]["channel"]
  1224. except:
  1225. print " __RequestServerStateList - serverInfo.REGION_DICT(%d, %d)" % (regionID, serverID)
  1226. return
  1227.  
  1228. for channelID, channelDataDict in channelDict.items():
  1229. channelName = channelDataDict["name"]
  1230. channelState = channelDataDict["state"]
  1231. self.channelList.InsertItem(channelID, " %s %s" % (channelName, channelState))
  1232.  
  1233. self.channelList.SelectItem(bakChannelID-1)
  1234.  
  1235. def __GetChannelName(self, regionID, selServerID, selChannelID):
  1236. try:
  1237. return serverInfo.REGION_DICT[regionID][selServerID]["channel"][selChannelID]["name"]
  1238. except KeyError:
  1239. if 9==selChannelID:
  1240. return localeInfo.CHANNEL_PVP
  1241. else:
  1242. return localeInfo.CHANNEL_NORMAL % (selChannelID)
  1243.  
  1244. def NotifyChannelState(self, addrKey, state):
  1245. try:
  1246. stateName=serverInfo.STATE_DICT[state]
  1247. except:
  1248. stateName=serverInfo.STATE_NONE
  1249.  
  1250. regionID=int(addrKey/1000)
  1251. serverID=int(addrKey/10) % 100
  1252. channelID=addrKey%10
  1253.  
  1254. try:
  1255. serverInfo.REGION_DICT[regionID][serverID]["channel"][channelID]["state"] = stateName
  1256. self.__RefreshServerStateList()
  1257.  
  1258. except:
  1259. import exception
  1260. exception.Abort(localeInfo.CHANNEL_NOT_FIND_INFO)
  1261.  
  1262. def __OnClickExitServerButton(self):
  1263. print "exit server"
  1264. self.__OpenLoginBoard()
  1265.  
  1266. if IsFullBackImage():
  1267. self.GetChild("bg1").Hide()
  1268. self.GetChild("bg2").Show()
  1269.  
  1270.  
  1271. def __OnClickSelectRegionButton(self):
  1272. regionID = self.__GetRegionID()
  1273. serverID = self.__GetServerID()
  1274.  
  1275. if (not serverInfo.REGION_DICT.has_key(regionID)):
  1276. self.PopupNotifyMessage(localeInfo.CHANNEL_SELECT_REGION)
  1277. return
  1278.  
  1279. if (not serverInfo.REGION_DICT[regionID].has_key(serverID)):
  1280. self.PopupNotifyMessage(localeInfo.CHANNEL_SELECT_SERVER)
  1281. return
  1282.  
  1283. self.__SaveChannelInfo()
  1284.  
  1285. self.serverExitButton.SetEvent(ui.__mem_func__(self.__OnClickExitServerButton))
  1286. self.serverExitButton.SetText(localeInfo.UI_CLOSE)
  1287.  
  1288. self.__RefreshServerList()
  1289. self.__OpenServerBoard()
  1290.  
  1291. def __OnClickSelectServerButton(self):
  1292. if IsFullBackImage():
  1293. self.GetChild("bg1").Hide()
  1294. self.GetChild("bg2").Show()
  1295.  
  1296. regionID = self.__GetRegionID()
  1297. serverID = self.__GetServerID()
  1298. channelID = self.__GetChannelID()
  1299.  
  1300. if (not serverInfo.REGION_DICT.has_key(regionID)):
  1301. self.PopupNotifyMessage(localeInfo.CHANNEL_SELECT_REGION)
  1302. return
  1303.  
  1304. if (not serverInfo.REGION_DICT[regionID].has_key(serverID)):
  1305. self.PopupNotifyMessage(localeInfo.CHANNEL_SELECT_SERVER)
  1306. return
  1307.  
  1308. try:
  1309. channelDict = serverInfo.REGION_DICT[regionID][serverID]["channel"]
  1310. except KeyError:
  1311. return
  1312.  
  1313. try:
  1314. state = channelDict[channelID]["state"]
  1315. except KeyError:
  1316. self.PopupNotifyMessage(localeInfo.CHANNEL_SELECT_CHANNEL)
  1317. return
  1318.  
  1319. # »óÅ°¡ FULL °ú °°À¸¸é ÁøÀÔ ±ÝÁö
  1320. if state == serverInfo.STATE_DICT[3]:
  1321. self.PopupNotifyMessage(localeInfo.CHANNEL_NOTIFY_FULL)
  1322. return
  1323.  
  1324. self.__SaveChannelInfo()
  1325.  
  1326. try:
  1327. serverName = serverInfo.REGION_DICT[regionID][serverID]["name"]
  1328. channelName = serverInfo.REGION_DICT[regionID][serverID]["channel"][channelID]["name"]
  1329. addrKey = serverInfo.REGION_DICT[regionID][serverID]["channel"][channelID]["key"]
  1330.  
  1331. if "õ¸¶ ¼­¹ö" == serverName:
  1332. app.ForceSetlocaleInfo("ymir", "localeInfo/ymir")
  1333. elif "Äèµµ ¼­¹ö" == serverName:
  1334. app.ForceSetlocaleInfo("we_korea", "localeInfo/we_korea")
  1335.  
  1336. except:
  1337. print " ERROR __OnClickSelectServerButton(%d, %d, %d)" % (regionID, serverID, channelID)
  1338. serverName = localeInfo.CHANNEL_EMPTY_SERVER
  1339. channelName = localeInfo.CHANNEL_NORMAL % channelID
  1340.  
  1341. self.__SetServerInfo("%s, %s " % (serverName, channelName))
  1342.  
  1343. try:
  1344. ip = serverInfo.REGION_DICT[regionID][serverID]["channel"][channelID]["ip"]
  1345. tcp_port = serverInfo.REGION_DICT[regionID][serverID]["channel"][channelID]["tcp_port"]
  1346. except:
  1347. import exception
  1348. exception.Abort("LoginWindow.__OnClickSelectServerButton - ¼­¹ö ¼±Åà ½ÇÆÐ")
  1349.  
  1350. try:
  1351. account_ip = serverInfo.REGION_AUTH_SERVER_DICT[regionID][serverID]["ip"]
  1352. account_port = serverInfo.REGION_AUTH_SERVER_DICT[regionID][serverID]["port"]
  1353. except:
  1354. account_ip = 0
  1355. account_port = 0
  1356.  
  1357. try:
  1358. markKey = regionID*1000 + serverID*10
  1359. markAddrValue=serverInfo.MARKADDR_DICT[markKey]
  1360. net.SetMarkServer(markAddrValue["ip"], markAddrValue["tcp_port"])
  1361. app.SetGuildMarkPath(markAddrValue["mark"])
  1362. # GUILD_SYMBOL
  1363. app.SetGuildSymbolPath(markAddrValue["symbol_path"])
  1364. # END_OF_GUILD_SYMBOL
  1365.  
  1366. except:
  1367. import exception
  1368. exception.Abort("LoginWindow.__OnClickSelectServerButton - ¸¶Å© Á¤º¸ ¾øÀ½")
  1369.  
  1370.  
  1371. if app.USE_OPENID and not app.OPENID_TEST :
  1372. ## 2012.07.19 OpenID : ±è¿ë¿í
  1373. # ä³Î ¼±Åà ȭ¸é¿¡¼­ "È®ÀÎ"(SelectServerButton) À» ´­·¶À»¶§,
  1374. # ·Î±×ÀÎ È­¸éÀ¸·Î ³Ñ¾î°¡Áö ¾Ê°í ¹Ù·Î ¼­¹ö¿¡ OpenID ÀÎÁõÅ°¸¦ º¸³»µµ·Ï ¼öÁ¤
  1375. self.stream.SetConnectInfo(ip, tcp_port, account_ip, account_port)
  1376. self.Connect(0, 0)
  1377. else :
  1378. self.stream.SetConnectInfo(ip, tcp_port, account_ip, account_port)
  1379. self.__OpenLoginBoard()
  1380.  
  1381.  
  1382. def __OnClickSelectConnectButton(self):
  1383. if IsFullBackImage():
  1384. self.GetChild("bg1").Show()
  1385. self.GetChild("bg2").Hide()
  1386. self.__RefreshServerList()
  1387. self.__OpenServerBoard()
  1388.  
  1389. def __OnClickLoginButton(self):
  1390. id = self.idEditLine.GetText()
  1391. pwd = self.pwdEditLine.GetText()
  1392.  
  1393. if len(id)==0:
  1394. self.PopupNotifyMessage(localeInfo.LOGIN_INPUT_ID, self.SetIDEditLineFocus)
  1395. return
  1396.  
  1397. if len(pwd)==0:
  1398. self.PopupNotifyMessage(localeInfo.LOGIN_INPUT_PASSWORD, self.SetPasswordEditLineFocus)
  1399. return
  1400.  
  1401. self.Connect(id, pwd)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement