Exemplo n.º 1
0
        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);
        }
Exemplo n.º 2
0
        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();
            }
        }