summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFxQnLr <[email protected]>2024-04-29 19:36:48 +0200
committerFxQnLr <[email protected]>2024-04-29 19:36:48 +0200
commitab76e442ab4fb4d41ccbc211f9ac05e19aaefd4b (patch)
tree20c5b52d8e2bb3a7ad00f6932d1a591bd22091fb
parent9233e47a7afa1bee87c53b2bff22bfc5a862c435 (diff)
downloadfunsaac-ab76e442ab4fb4d41ccbc211f9ac05e19aaefd4b.tar
funsaac-ab76e442ab4fb4d41ccbc211f9ac05e19aaefd4b.tar.gz
funsaac-ab76e442ab4fb4d41ccbc211f9ac05e19aaefd4b.zip
connection, counter, messages and device scan
-rw-r--r--main.lua37
-rw-r--r--messages.lua46
2 files changed, 70 insertions, 13 deletions
diff --git a/main.lua b/main.lua
index 40acc5b..31555ee 100644
--- a/main.lua
+++ b/main.lua
@@ -1,24 +1,35 @@
1---@diagnostic disable: duplicate-set-field
2
1local funsaac = RegisterMod("funsaac", 1) 3local funsaac = RegisterMod("funsaac", 1)
2local json = require("json") 4require("messages")
5
6local client = require("websocket").new("127.0.0.1", 12345, "/")
3 7
4local requestServerInfo = { 8CONNECTED = false
5 Id = 1,
6 ClientName = "Funsaac v.0.0.1",
7 MessageVersion = 3
8}
9 9
10local client = require("websocket").new("127.0.0.1", 12345)
11function client:onmessage(message) 10function client:onmessage(message)
12 print(message) 11 HandleResponse(ResponseContent(message))
12 if CONNECTED == true then
13 self:send(GetMessage(Messages.StartScanning))
14 CONNECTED = false
15 end
13end 16end
17
14function client:onopen() 18function client:onopen()
15 local msg = '[{"RequestServerInfo": ' .. json.encode(requestServerInfo) .. "}]" 19 self:send(GetMessage(Messages.RequestServerInfo))
16 print(msg)
17 self:send(msg)
18end 20end
19 21
20local function onUpdate() 22
23local render_tick = 0
24local s = 0;
25local function onRender()
21 client:update() 26 client:update()
27
28 render_tick = render_tick + 1
29 if render_tick >= 60 then
30 render_tick = 0
31 s = s + 1
32 end
22end 33end
23 34
24funsaac:AddCallback(ModCallbacks.MC_POST_UPDATE, onUpdate) \ No newline at end of file 35funsaac:AddCallback(ModCallbacks.MC_POST_RENDER, onRender) \ No newline at end of file
diff --git a/messages.lua b/messages.lua
new file mode 100644
index 0000000..69576e1
--- /dev/null
+++ b/messages.lua
@@ -0,0 +1,46 @@
1local json = require("json")
2
3Messages = {
4 -- Handshake
5 RequestServerInfo = {
6 RequestServerInfo = {
7 Id = 1,
8 ClientName = "Funsaac v0.0.2",
9 MessageVersion = 3
10 }
11 },
12
13 -- Enumeration
14
15 StartScanning = {
16 StartScanning = {
17 Id = 1
18 }
19 }
20}
21
22local cnt = 1;
23
24function GetMessage(msg)
25 local message = msg
26 message[next(msg)]["Id"] = cnt
27 cnt = cnt + 1
28 return "[" .. json.encode(message) .. "]"
29end
30
31function ResponseContent(message)
32 local msg = json.decode(message)[1]
33 local type = next(msg)
34 return type, msg[type]
35end
36
37function HandleResponse(type, content)
38 if type == "ServerInfo" then
39 print("Connected to Server: " .. content["ServerName"])
40 CONNECTED = true
41 elseif type == "Ok" then
42 print("Id: " .. content["Id"])
43 elseif type == "DeviceAdded" then
44 print("DeviceAdded: " .. content["DeviceName"])
45 end
46end \ No newline at end of file