void add_player(PACKET.PLAYER_DATA player) { Button btn = new Button(); btn.Text = string.Format("{0}", player.NAME); btn.Size = new Size(button_width, button_height); btn.Location = new Point(0, 0); btn.Visible = false; // 안보이게 우선 만들어~ //델리게이트를 통해 버튼 이벤트 생성 //btn.Click += new EventHandler(btn_Click); groupBox_users_location.Controls.Add(btn); buttons.Add(player.ID, btn); listBox_users.Items.Add(player.NAME + "_" + player.ID); }
void packet_timer_Elapsed(object sender, EventArgs e) { if (before_update_time != 0) { long nowTime = System.DateTime.Now.Ticks; update_time_gap = (nowTime - before_update_time) / 10000.0f; } before_update_time = System.DateTime.Now.Ticks; if (client == null) { return; } light.net.Client.BufferPacketData data = client.ReadData(); while (data != null) { switch (data.PacketID) { case light.net.Client.PACKET_ID_DISCONNECTED: { on_disconnect(); } break; case (int)PACKET_S2C.JOIN: { var join = PACKET.RES_JOIN.GetRootAsRES_JOIN(new FlatBuffers.ByteBuffer(data.BufferData)); textBox_joined_channel.Text = data.Index.ToString(); PACKET.PLAYER_DATA player = join.DATA; add_player(player); log(player.NAME + " entered channel."); for (int n = 0; n < join.PLAYERDATASLength; ++n) { PACKET.PLAYER_DATA the_other = join.GetPLAYERDATAS(n); add_player(the_other); } } break; case (int)PACKET_S2C.JOINED: { var joined = PACKET.JOINED.GetRootAsJOINED(new FlatBuffers.ByteBuffer(data.BufferData)); textBox_joined_channel.Text = data.Index.ToString(); PACKET.PLAYER_DATA player = joined.DATA; add_player(player); log(player.NAME + " entered channel."); } break; case (int)PACKET_S2C.LEAVE: { var leave = PACKET.RES_LEAVE.GetRootAsRES_LEAVE(new FlatBuffers.ByteBuffer(data.BufferData)); textBox_joined_channel.Text = ""; if (user_index == leave.USERINDEX) { listBox_users.Items.Clear(); buttons.Clear(); groupBox_users_location.Controls.Clear(); log("i leaved channel."); } else { Button btn = buttons[leave.USERINDEX]; log(btn.Text + " left channel."); listBox_users.Items.Remove(btn.Text + "_" + leave.USERINDEX); groupBox_users_location.Controls.Remove(btn); buttons.Remove(leave.USERINDEX); } } break; case (int)PACKET_S2C.SPAWN: { var spawn = PACKET.RES_SPAWN.GetRootAsRES_SPAWN(new FlatBuffers.ByteBuffer(data.BufferData)); log("spawn. monster_id : " + spawn.MONSTERID); } break; case (int)PACKET_S2C.READY: { var ready = PACKET.RES_READY.GetRootAsRES_READY(new FlatBuffers.ByteBuffer(data.BufferData)); log("ready. game_start : " + ready.GAMESTART); if (ready.GAMESTART) { move(); } } break; case (int)PACKET_S2C.SEND: { var send = PACKET.RES_SEND.GetRootAsRES_SEND(new FlatBuffers.ByteBuffer(data.BufferData)); try { for (int n = 0; n < send.MESSAGELength; ++n) { var p = JsonConvert.DeserializeObject <relay_message>(send.GetMESSAGE(n)); Button btn = buttons[p.user_index]; btn.Location = new Point((int)p.position.X, (int)p.position.Y); btn.Visible = true; } move(); } catch (Exception ex) { log("exception: " + ex); } } break; } data = client.ReadData(); } }