forked from findstr/silly
-
Notifications
You must be signed in to change notification settings - Fork 0
/
game.lua
75 lines (59 loc) · 1.54 KB
/
game.lua
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
local socket = require("socket")
local json = require("json")
local room = require("room")
local game = {}
local usr_pool = {}
local room_list = {}
local CMD = {}
local function getrid()
local rid = #room_list + 1
--TODO:need to reuse the hold index
--
return rid
end
function CMD.room_create(fd, cmd)
local res = {}
local rid;
rid = getrid()
assert(room_list[rid] == nil)
room_list[rid] = room:create(cmd.uid)
res.cmd = "room_create"
if room_list[rid] then
res.rid = rid
else
res.rid = -1
end
socket.write(socket.GDATA, fd, json.encode(res))
end
function CMD.room_list(fd, cmd)
local rl = {}
assert(cmd.page_index == tostring(1))
rl.cmd = "room_list"
rl.room = {}
for k, v in pairs(room_list) do
print("name", v:getname())
rl.room[#rl.room + 1] = {name=v:getname(), rid = k}
end
socket.write(socket.GDATA, fd, json.encode(rl))
end
function CMD.room_enter(fd, cmd)
end
function game.process(fd, msg)
assert(CMD[msg.cmd])(fd, msg)
end
function game.enter(fd)
usr_pool[fd] = {}
usr_pool[fd].fd = fd
usr_pool[fd].handler = game.process
usr_pool[fd].kick = nil
end
function game.kick(fd)
if (usr_pool[fd].kick) then
usr_pool[fd].kick(fd)
end
usr_pool[fd] = {}
end
function game.handler(fd, cmd)
assert(usr_pool[fd].handler)(fd, cmd)
end
return game