Advertisement
Guest User

Habbo Hotel Login Interface Class v0.3

a guest
Jun 20th, 2024
156
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 8.60 KB | Source Code | 0 0
  1. --Login
  2. --Interface
  3. --v.0.3
  4.  
  5.  
  6. --| Public:
  7. --| construct
  8. --| deconstruct
  9. --| showLogin
  10. --| hideLogin
  11. --| showDisconnect
  12. --| showForgottenPW
  13. --|
  14. --| Private:
  15. --| tryLogin
  16. --| blinkConnection
  17. --| showUserFound
  18. --| myHabboSmile
  19. --| stopWaving
  20. --| eventProcLogin
  21. --| eventProcForgottenPW
  22. --| eventProcDisconnect
  23.  
  24.  
  25. property pConnectionID
  26. property pTempPassword
  27.  
  28.  
  29. -- Public methods: -- -- -- -- -- -- -- -- -- -- --//
  30.  
  31.  
  32. -- Constructor.
  33.  
  34. on construct(me)
  35.  
  36. pConnectionID = getVariable("connection.info.id")
  37. pTempPassword = []
  38. return(TRUE)
  39.  
  40. end
  41.  
  42.  
  43. -- Deconstructor.
  44.  
  45. on deconstruct(me)
  46.  
  47. if(windowExists(#login_a)) then removeWindow(#login_a)
  48. if(windowExists(#login_b)) then removeWindow(#login_b)
  49. return(TRUE)
  50.  
  51. end
  52.  
  53.  
  54. -- Opens login dialog windows...
  55.  
  56. on showLogin(me)
  57.  
  58. -- Clear user's name and password...
  59.  
  60. getObject(#session).set(#username, EMPTY)
  61. getObject(#session).set(#password, EMPTY)
  62. pTempPassword = []
  63.  
  64. -- Create login windows...
  65.  
  66. if(createWindow(#login_a, "habbo_simple.window", 444, 100)) then
  67. tWndObj = getWindow(#login_a)
  68. tWndObj.merge("login_a.window")
  69. tWndObj.registerClient(me.getID())
  70. tWndObj.registerProcedure(#eventProcLogin, me.getID(), #mouseUp)
  71. end if
  72.  
  73. if(createWindow(#login_b, "habbo_simple.window", 444, 230)) then
  74. tWndObj = getWindow(#login_b)
  75. tWndObj.merge("login_b.window")
  76. tWndObj.registerClient(me.getID())
  77. tWndObj.registerProcedure(#eventProcLogin, me.getID(), #mouseUp)
  78. tWndObj.registerProcedure(#eventProcLogin, me.getID(), #keyDown)
  79. tWndObj.getElement("login_username").setFocus(TRUE)
  80.  
  81. -- For china font fix! --jjj
  82. if(variableExists("username_input.font.size")) then
  83. tElem = tWndObj.getElement("login_username")
  84. if(tElem = FALSE) then return(FALSE)
  85. if(tElem.pMember = VOID) then return(FALSE)
  86. if(tElem.pMember.type <> #field) then return(FALSE)
  87. tElem.pMember.fontSize = getIntVariable("username_input.font.size")
  88.  
  89. tElem = tWndObj.getElement("login_password")
  90. if(tElem = FALSE) then return(FALSE)
  91. if(tElem.pMember = VOID) then return(FALSE)
  92. if(tElem.pMember.type <> #field) then return(FALSE)
  93. tElem.pMember.fontSize = getIntVariable("username_input.font.size")
  94. end if
  95. end if
  96.  
  97. return(TRUE)
  98.  
  99. end
  100.  
  101.  
  102. -- Simply closes login windows after succesfull login...
  103.  
  104. on hideLogin(me)
  105.  
  106. if(windowExists(#login_a)) then removeWindow(#login_a)
  107. if(windowExists(#login_b)) then removeWindow(#login_b)
  108. return(TRUE)
  109.  
  110. end
  111.  
  112.  
  113. -- Open generic dialog when connection \
  114. is accidentally disconnected...
  115.  
  116. on showDisconnect(me)
  117.  
  118. createWindow(#error, "error.window", 0, 0, #modal)
  119. tWndObj = getWindow(#error)
  120. tWndObj.getElement("error_title").setText(getText("Alert_ConnectionFailure"))
  121. tWndObj.getElement("error_text").setText(getText("Alert_ConnectionDisconnected"))
  122. tWndObj.registerClient(me.getID())
  123. tWndObj.registerProcedure(#eventProcDisconnect, me.getID(), #mouseUp)
  124. the keyboardFocusSprite = 0
  125.  
  126. end
  127.  
  128.  
  129.  
  130.  
  131. -- Private methods: -- -- -- -- -- -- -- -- -- -- --//
  132.  
  133.  
  134. -- Starts connection/login process.
  135.  
  136. on tryLogin(me)
  137.  
  138. -- '#login_b' window MUST exist...
  139.  
  140. if(not windowExists(#login_b)) then
  141. return(error(me, "Window not found:" && #login_b, #eventProcLogin))
  142. end if
  143.  
  144. tWndObj = getWindow(#login_b)
  145.  
  146. -- Save username & password...
  147.  
  148. tUserName = tWndObj.getElement("login_username").getText()
  149. tPassword = EMPTY
  150.  
  151. repeat with tChar in pTempPassword
  152. put tChar after tPassword
  153. end repeat
  154.  
  155. if(tUserName = EMPTY) then return(FALSE)
  156. if(tPassword = EMPTY) then return(FALSE)
  157.  
  158. getObject(#session).set(#username, tUserName)
  159. getObject(#session).set(#password, tPassword)
  160.  
  161. -- Hide 'OK' button...Replace with 'connecting' text...
  162.  
  163. tWndObj.getElement("login_ok").hide()
  164. tWndObj.getElement("login_connecting").setProperty(#blend, 100)
  165.  
  166. tElem = tWndObj.getElement("login_forgotten")
  167. tElem.setProperty(#blend, 99)
  168. tElem.setProperty(#cursor, 0)
  169.  
  170. tElem = getWindow(#login_a).getElement("login_createUser")
  171. tElem.setProperty(#blend, 99)
  172. tElem.setProperty(#cursor, 0)
  173.  
  174. me.blinkConnection()
  175.  
  176. -- Tell login thread to create connection...
  177.  
  178. me.getComponent().setaProp(#pOkToLogin, TRUE)
  179. return(me.getComponent().connect())
  180.  
  181. end
  182.  
  183.  
  184. -- Blinks 'connecting' text while \
  185. making connection to server...
  186.  
  187. on blinkConnection(me)
  188.  
  189. if(not windowExists(#login_b)) then return(FALSE)
  190. if(timeoutExists(#login_blinker)) then return(FALSE)
  191.  
  192. tElem = getWindow(#login_b).getElement("login_connecting")
  193. if(not tElem) then return(FALSE)
  194. if(getWindow(#login_b).getElement("login_ok").getProperty(#visible) = TRUE) then return(FALSE)
  195.  
  196. tElem.setProperty(#visible, not tElem.getProperty(#visible))
  197. return(createTimeout(#login_blinker, 500, #blinkConnection, me.getID(), VOID, 1))
  198.  
  199. end
  200.  
  201.  
  202. -- Opens 'user found' window...
  203.  
  204. on showUserFound(me)
  205.  
  206. if(windowExists(#login_b)) then
  207. getWindow(#login_b).unmerge()
  208. else
  209. createWindow(#login_b, "habbo_simple.window",444, 230)
  210. end if
  211.  
  212. tWndObj = getWindow(#login_b)
  213. tWndObj.merge("login_c.window")
  214.  
  215. -- Apply welcome text...
  216.  
  217. tTxt = tWndObj.getElement("login_c_welcome").getText()
  218. tTxt = tTxt && getObject(#session).get("user_name")
  219. tWndObj.getElement("login_c_welcome").setText(tTxt)
  220.  
  221. -- Render user's character...
  222.  
  223. if objectExists("Figure_Preview") then
  224. tBuffer = getObject("Figure_Preview").createTemplateHuman("h", 3, "wave")
  225. tWndObj.getElement("login_preview").setProperty(#buffer, tBuffer)
  226. me.delay(800, #myHabboSmile)
  227. else
  228. me.hideLogin()
  229. end if
  230.  
  231. return(TRUE)
  232.  
  233. end
  234.  
  235.  
  236. -- Makes a happy Habbo...
  237.  
  238. on myHabboSmile(me)
  239.  
  240. if objectExists("Figure_Preview") then
  241. getObject("Figure_Preview").createTemplateHuman("h", 3, "gest", "temp sml")
  242. end if
  243.  
  244. me.delay(1200, #stopWaving)
  245.  
  246. end
  247.  
  248.  
  249. -- Prepare to step on...
  250.  
  251. on stopWaving(me)
  252.  
  253. if objectExists("Figure_Preview") then
  254. getObject("Figure_Preview").createTemplateHuman("h", 3, "reset")
  255. getObject("Figure_Preview").createTemplateHuman("h", 3, "gest", "temp sml")
  256. getObject("Figure_Preview").createTemplateHuman("h", 3, "remove")
  257. end if
  258.  
  259. me.delay(400, #hideLogin)
  260.  
  261. end
  262.  
  263.  
  264. -- Handles mouse and key events \
  265. occured to login windows. Hides \
  266. password in password field.
  267.  
  268. on eventProcLogin(me, tEvent, tSprID, tParam)
  269.  
  270. case(tEvent) of
  271.  
  272. #mouseUp:
  273.  
  274. case(tSprID) of
  275.  
  276. "login_ok":
  277.  
  278. return(me.tryLogin())
  279.  
  280. "login_createUser":
  281.  
  282. if(getWindow(#login_a).getElement(tSprID).getProperty(#blend) = 100) then
  283.  
  284. -- Enter the registration...
  285.  
  286. if(windowExists(#login_a)) then removeWindow(#login_a)
  287. if(windowExists(#login_b)) then removeWindow(#login_b)
  288. executeMessage(#show_registration)
  289.  
  290. return(TRUE)
  291.  
  292. end if
  293.  
  294. "login_forgotten":
  295.  
  296. if(getWindow(#login_b).getElement(tSprID).getProperty(#blend) = 100) then
  297.  
  298. openNetPage(getText("login_forgottenPassword_url"))
  299.  
  300. end if
  301.  
  302. end case
  303.  
  304. #keyDown:
  305.  
  306. if(the keyCode = 36) then -- Return...
  307. me.tryLogin()
  308. return(TRUE)
  309. end if
  310.  
  311. case(tSprID) of
  312.  
  313. "login_password":
  314.  
  315. case(the keyCode) of
  316. 48: return(FALSE) -- TAB...
  317. 49: return(TRUE) -- Space...
  318. 51: if(pTempPassword.count > 0) then pTempPassword.deleteAt(pTempPassword.count) -- Backspace...
  319. 117: pTempPassword = [] -- Delete...
  320. otherwise:
  321.  
  322. tAscii = charToNum(the key)
  323.  
  324. if(tAscii > 31) and (tAscii < 128) then
  325. if(pTempPassword.count < getIntVariable("pass.length.max", 36)) then
  326. pTempPassword.append(the key)
  327. end if
  328. end if
  329.  
  330. end case
  331.  
  332. tStr = EMPTY
  333.  
  334. repeat with tChar in pTempPassword
  335. put "*" after tStr
  336. end repeat
  337.  
  338. getWindow(#login_b).getElement(tSprID).setText(tStr)
  339. the selStart = pTempPassword.count
  340. the selEnd = pTempPassword.count
  341. return(TRUE)
  342.  
  343. end case
  344.  
  345. end case
  346.  
  347. return(FALSE)
  348.  
  349. end
  350.  
  351.  
  352.  
  353. -- Event proc for modal disconnection dialog.
  354.  
  355. on eventProcDisconnect(me, tEvent, tElemID, tParam)
  356.  
  357. if(tEvent = #mouseUp) then
  358. if(tElemID = "error_close") then
  359. removeWindow(#error)
  360. resetClient()
  361. end if
  362. end if
  363.  
  364. end
  365.  
  366.  
  367. -- End of file. -- -- -- -- -- -- -- -- -- -- -- --//
  368.  
  369. --Login Interface Class
  370. --Antti Kaseva
  371.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement