You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

87 lines
2.4 KiB
Lua

assert(_VERSION == "Lua 5.4")
package.path = "lualib/?.lua;skynet/lualib/?.lua;simulation/?.lua"
package.cpath = "skynet/luaclib/?.so;luaclib/?.so"
local auth = require "auth"
local ok, atoken = pcall(auth)
if not ok then
print("please check: login auth err", atoken)
return
end
local termfx = require "termfx"
local ui = require "simpleui"
termfx.init()
termfx.inputmode(termfx.input.ALT + termfx.input.MOUSE)
termfx.outputmode(termfx.output.COL256)
local function main(token)
local sock = require ("network")()
local sok = sock:connect(token.ip, token.port)
assert(sok)
local output = {}
local mok, err = pcall(function()
local msg_list = {}
local input
local string = {}
while true do
termfx.clear(termfx.color.WHITE, termfx.color.BLACK)
local w, h = termfx.size()
local width = math.floor(w / 2)
ui.box(2, 2, width, h - 10)
ui.box(w / 2, 2, width, h - 10)
termfx.printat(2, h - 1, input)
termfx.printat(2, h, table.concat(string, ""))
termfx.present()
local evt = termfx.pollevent(100)
if evt then
if evt.type == 'key' then
if evt.key == termfx.key.CTRL_C then
break
elseif evt.key == termfx.key.BACKSPACE2 then
table.remove(string)
elseif evt.key == termfx.key.ENTER then
input = table.concat(string, '')
string = {}
pcall(act_when_input, input)
elseif evt.key == termfx.key.SPACE then
table.insert(string, ' ')
else
table.insert(string, evt.char)
end
end
else
local success, err = sock:update()
assert(success, err)
local r, msgid, msg = recv_msg()
if r == true then
table.insert(msg_list, {MN[msgid] or msgid, inspect(msg)})
elseif r == false then
p('网络断开,结束客户端', msgid)
break
end
end
end
end)
termfx.shutdown()
if not mok then
print("Error: ", err)
end
print(':\n', table.concat(output, '\n'))
end
main(atoken)