View difference between Paste ID: 81GbmMXi and BATZkp2d
SHOW: | | - or go back to the newest paste.
1
term.setCursorPos(1, 10)
2-
center("Firewolf chat demo")
2+
center("lets.chat V1.2")
3
term.setCursorPos(3, 12)
4
write("Enter a username: ")
5
local username = read()
6
local inputColor = colors.orange
7
local chatColor = colors.white
8
local rawChats = firewolf.query("chat", {message = username .. " has joined the room"})
9
10
local updateChat = function()
11
	local previousX, previousY = term.getCursorPos()
12
	if rawChats then
13
		term.setTextColor(chatColor)
14
		local chat = textutils.unserialize(rawChats)
15
		if chat then
16
			local previousPosition = term.getCursorPos(1, 2)
17
			for k,v in pairs(chat) do
18
				term.setCursorPos(1, k)
19
				term.clearLine()
20
				term.write(v)
21
			end
22
		else
23
			center("Invalid response from server! Retrying...")
24
		end
25
	else
26
		term.setCursorPos(1, 1)
27
		term.setTextColor(colors.red)
28
		center("Failed to connect to server! Retrying...")
29
	end
30
	term.setTextColor(inputColor)
31
	term.setCursorPos(previousX, previousY)
32
end
33
34
local chatUpdateLoop = function()
35
	while true do
36
		rawChats = firewolf.query("chat")
37
		updateChat()
38
		sleep(2)
39
	end
40
end
41
42
local readInput = function()
43
	while true do
44
		term.setTextColor(inputColor)
45
		term.setCursorPos(1, 18)
46
		term.write(string.rep("-", 51))
47
		term.setCursorPos(1, 19)
48
		term.clearLine()
49
		term.write("> ")
50
		local message = read()
51
		term.setCursorPos(1, 18)
52
		term.write(string.rep("-", 51))
53
		term.setCursorPos(1, 19)
54
		term.clearLine()
55
		updateChat()
56
		term.write("Sending...")
57
		if #message > 0  then
58
			updateChat()
59
			rawChats = firewolf.query("chat", {message = "<"..username.."> "..message})
60
			updateChat()
61
		end
62
	end
63
end
64
65
term.clear()
66
parallel.waitForAny(chatUpdateLoop, readInput)