diff --git a/parts/globalTables.lua b/parts/globalTables.lua index fddf0c8d..0cbf9195 100644 --- a/parts/globalTables.lua +++ b/parts/globalTables.lua @@ -144,8 +144,7 @@ PATH={--Network API paths auth="/auth", access="/auth/access", rooms="/online/rooms", - enterRoom="/online/enterRoom/", - chat="/chat", + chat_room="/chat_room", } --Game tables diff --git a/parts/language/lang_en.lua b/parts/language/lang_en.lua index 06adfc20..68b74193 100644 --- a/parts/language/lang_en.lua +++ b/parts/language/lang_en.lua @@ -248,7 +248,7 @@ return{ rooms="Rooms", chat="Chat", }, - chat={ + net_chat={ clear="Clear", send="Send", }, diff --git a/parts/language/lang_fr.lua b/parts/language/lang_fr.lua index 4958ed53..ec041595 100644 --- a/parts/language/lang_fr.lua +++ b/parts/language/lang_fr.lua @@ -227,7 +227,7 @@ return{ -- rooms="Rooms", -- chat="Chat", }, - chat={ + net_chat={ -- clear="Clear", -- send="Send", }, diff --git a/parts/language/lang_sp.lua b/parts/language/lang_sp.lua index ea6e454e..77fae93f 100644 --- a/parts/language/lang_sp.lua +++ b/parts/language/lang_sp.lua @@ -231,7 +231,7 @@ return{ -- rooms="Rooms", -- chat="Chat", }, - chat={ + net_chat={ -- clear="Clear", -- send="Send", }, diff --git a/parts/language/lang_zh.lua b/parts/language/lang_zh.lua index 2c86aa8f..21b58922 100644 --- a/parts/language/lang_zh.lua +++ b/parts/language/lang_zh.lua @@ -251,7 +251,7 @@ return{ rooms="房间列表", chat="聊天室", }, - chat={ + net_chat={ clear="清空", send="发送", }, diff --git a/parts/scenes/chat.lua b/parts/scenes/net_chat.lua similarity index 95% rename from parts/scenes/chat.lua rename to parts/scenes/net_chat.lua index 11f51062..dbecbf15 100644 --- a/parts/scenes/chat.lua +++ b/parts/scenes/net_chat.lua @@ -40,11 +40,8 @@ function scene.sceneInit() end scrollPos=#texts TASK.new(focusAtTextbox)--Widgets are not initialized, so active after 1 frame + TASK.new(TICK.ws_read) BG.set("none") - wsConnect( - TICK.wsCONN_connect, - PATH.socket..PATH.chat.."?email="..urlEncode(USER.email).."&access_token="..urlEncode(USER.access_token) - ) end function scene.sceneBack() wsWrite("/quit") diff --git a/parts/scenes/net_menu.lua b/parts/scenes/net_menu.lua index 2fde18da..66b0aa50 100644 --- a/parts/scenes/net_menu.lua +++ b/parts/scenes/net_menu.lua @@ -1,3 +1,25 @@ +local function tick_goChatRoom(task) + local time=0 + while true do + coroutine.yield() + local wsconn,connErr=client.poll(task) + if wsconn then + WSCONN=wsconn + SCN.go("net_chat") + LOG.print(text.wsSuccessed,"warn") + return + elseif connErr then + LOG.print(text.wsFailed..": "..connErr,"warn") + return + end + time=time+1 + if time>360 then + LOG.print(text.wsFailed..": "..text.httpTimeout,"message") + return + end + end +end + local scene={} function scene.sceneInit() @@ -7,7 +29,12 @@ end scene.widgetList={ WIDGET.newButton{name="ffa", x=640, y=200,w=350,h=120,font=40,code=NULL}, WIDGET.newButton{name="rooms", x=640, y=360,w=350,h=120,font=40,code=WIDGET.lnk_goScene("net_rooms")}, - WIDGET.newButton{name="chat", x=640, y=540,w=350,h=120,font=40,code=WIDGET.lnk_goScene("chat")}, + WIDGET.newButton{name="chat", x=640, y=540,w=350,h=120,font=40,code=function() + wsConnect( + tick_goChatRoom, + PATH.socket..PATH.chat_room.."?email="..urlEncode(USER.email).."&access_token="..urlEncode(USER.access_token) + ) + end}, WIDGET.newButton{name="back", x=1140, y=640,w=170,h=80,font=40,code=WIDGET.lnk_BACK}, } diff --git a/parts/tick.lua b/parts/tick.lua index ab24519e..7003d440 100644 --- a/parts/tick.lua +++ b/parts/tick.lua @@ -39,7 +39,7 @@ function Tick.httpREQ_getAccessToken(task) end end -local function tick_wsCONN_read() +function Tick.ws_read() while true do coroutine.yield() if not WSCONN then return end @@ -60,26 +60,4 @@ local function tick_wsCONN_read() end end end -function Tick.wsCONN_connect(task) - local time=0 - while true do - coroutine.yield() - local wsconn,connErr=client.poll(task) - if wsconn then - WSCONN=wsconn - TASK.new(tick_wsCONN_read) - LOG.print(text.wsSuccessed,"warn") - return - elseif connErr then - LOG.print(text.wsFailed..": "..connErr,"warn") - return - end - time=time+1 - if time>360 then - LOG.print(text.wsFailed..": "..text.httpTimeout,"message") - return - end - end -end - return Tick \ No newline at end of file