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
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)
|