Commit c04468c7 by Nick An

item

parent c6a417b5
......@@ -14,7 +14,7 @@
{
type: 'game_ready',
cid: 'abcdefg',
room_id: 'asdfadfaf',
room_id: 'default_room',
payload: {
nick_name: 'asdfasdfa',
avatar_url: 'https://xxx.com',
......@@ -26,7 +26,16 @@
{
type: 'game_end',
room_id: 'asdfadfaf',
room_id: 'default_room',
payload:{
}
}
{
type: 'item_refresh',
room_id: 'default_room',
payload:{
x:1,
y:2
}
}
\ No newline at end of file
......@@ -21,8 +21,16 @@ module CrazyFlirt
end
class RandomPicker
def self.item_generate
rd = Random.new
x = @rd.rand(0..@x_max)
y = @rd.rand(0..@y_max)
[x, y]
end
def initialize(clients)
@client = clients
@x_max = 14
......@@ -45,12 +53,13 @@ module CrazyFlirt
class Client
attr_reader :key
attr_accessor :role, :room
attr_accessor :role, :room, :user_info
def initialize(ws)
@ws = ws
@key = generate_key
@role = nil
@room = nil
end
def msg(msg)
......@@ -111,11 +120,15 @@ module CrazyFlirt
ws.on :message do |event|
message = JSON.parse(event.data)
seq = message['type']
puts 'seq is nil' if seq.nil?
next if seq.nil?
command(seq, message, client)
end
ws.on :close do |event|
puts "leave key #{client.key}"
@socket_pool.delete(client.key)
p client.room
client.room.leave_client(client.key)
client = nil
puts 'closed'
......@@ -135,28 +148,73 @@ module CrazyFlirt
picker = RandomPicker.new(room.clients)
idx = picker.pick_ghost_index
ghost = room.clients[idx]
game_ready_notice(room, ghost, picker)
timer(room)
end
room.clients.each do |client|
msg = {
type: 'game_ready',
cid: client.id,
def timer(room)
@thread = Thread.new do
puts 'start'
sleep(30)
puts 'notice'
notice_all(room, {
type: 'game_end',
room_id: room.name,
payload: {
open_id: client.open_id,
picture: client.picture,
payload:{
}
})
end
@item_thread = Thread.new do
5.times do
x,y = RandomPicker.item_generate
notice_all(room,{
type: 'item_refresh',
room_id: 'default_room',
payload:{
x:x,
y:y
}
})
sleep(5)
end
end
end
def game_ready_notice(room, ghost, picker)
room.clients.each do |client|
msg = ready_message(room, client)
if ghost.key == client.key
msg[:payload][:role] = 'ghost'
client.msg(msg)
else
x,y = picker.pick_born_point
x, y = picker.pick_born_point
msg[:payload][:x] = x
msg[:payload][:y] = y
msg[:payload][:role] = 'runner'
end
notice_all(room, msg)
end
end
def notice_all(room, msg)
room.clients.each do |client|
client.msg(msg)
end
end
def ready_message(room, client)
{
type: 'game_ready',
cid: client.id,
room_id: room.name,
payload: {
open_id: client.open_id,
picture: client.picture,
}
}
end
def clicking(msg,cl)
......@@ -177,22 +235,24 @@ module CrazyFlirt
room = @room_pool[msg['rid']]
seat_index = room.set_client(client)
client.room = room
client.user_info = {nick_name: msg['payload']['nick_name'], avatar_url: msg['payload']['avatar_url']}
msg['cid'] = client.key
msg['payload']['seat'] = seat_index
msg['payload']['members'] = room.clients.map do |cl| cl.user_info end
room.clients.each do |client|
client.msg(msg)
end
end
def create_room(msg)
client_id = msg['cid']
key = "room_#{::CrazyFlirt::RandomKeyGenerator.key}"
room = GameRoom.new(key)
@room_pool[key] = room
client = @socket_pool[client_id]
room.set_client(client)
client.msg(room_id: key)
end
# def create_room(msg)
# client_id = msg['cid']
# key = "room_#{::CrazyFlirt::RandomKeyGenerator.key}"
# room = GameRoom.new(key)
# @room_pool[key] = room
# client = @socket_pool[client_id]
# room.set_client(client)
# client.msg(room_id: key)
# end
end
end
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment