Пример #1
0
            private void RecvrMsgCallback()
            {
                while (running)
                {
                    try
                    {
                        System.Diagnostics.Debug.WriteLine("Hello");
                        byte[] bytes = new byte[1024];
                        int bytesRec;
                        bytesRec = handler.Receive(bytes);
                        time = 0;

                        // Message
                        Console.WriteLine(bytesRec);
                        Console.WriteLine("Message Received: {0}", Encoding.ASCII.GetString(bytes, 0, bytesRec));
                        System.Diagnostics.Debug.WriteLine("Message Received: " + Encoding.ASCII.GetString(bytes, 0, bytesRec));
                        //Game1.GameObject.text = "Message Received: " + Encoding.ASCII.GetString(bytes, 0, bytesRec);

                        //string response = "OK";

                        // Message Handling Here
                        //Message[] mArray = Message.ParseStream(bytes);

                        //for (int i = 0; i < mArray.Count(); i++)
                        //{
                            Message m = new Message();//mArray[i];
                            m.Parse(bytes);
                            System.Diagnostics.Debug.WriteLine(m.msgCode + "," + m.ToString());

                            Game1.GameObject.text = "From PeerID : " + PeerID + " : " + m.GetString();
                            if (m.msgCode == Message.FIRE)
                            {
                                //nembak
                                Console.WriteLine("TEMBAK");
                                lock (Game1.GameObject.Bullets)
                                {
                                    Game1.GameObject.Bullets.Add(new Bullet(Game1.GameObject, m.playerPos, m.bulletV0, m.playerRot, new Microsoft.Xna.Framework.Vector2(0, 10)));
                                }
                            }
                            else if (m.msgCode == Message.KEEP_ALIVE)
                            {
                                //keep alive
                                Player player = Game1.GameObject.Players[m.PeerID];
                                if (player != null)
                                {
                                    player.setHealthPoint(m.HP);
                                }
                            }
                            else if (m.msgCode == Message.NEXT_PLAYER)
                            {
                                Game1.GameObject.WhoseTurn = m.nextPlayer;

                                //next player
                                if (Connection.peerID.Equals(m.nextPlayer))
                                {
                                    // Set Fire true
                                    Game1.GameObject.myPlayer.setFire(false);
                                }
                            }
                            else if (m.msgCode == Message.POS)
                            {
                                //kirim position
                                Player player = Game1.GameObject.Players[m.PeerID];
                                if (player != null)
                                {
                                    player.setPosition(m.playerPos);
                                    player.setAngle(m.playerRot);
                                    player.setOrientation(m.playerOrt);
                                }
                            }
                            else if (m.msgCode == Message.INIT)
                            {
                                //init
                                Player player = new Player(m.PeerID, m.playerPos0);
                                switch (m.playerTexture)
                                {
                                    case 0:
                                        player.setPlayerTexture(AssetsManager.AssetsList["orang1"]);
                                        break;
                                    case 1:
                                        player.setPlayerTexture(AssetsManager.AssetsList["orang2"]);
                                        break;
                                    case 2:
                                        player.setPlayerTexture(AssetsManager.AssetsList["orang3"]);
                                        break;
                                    case 3:
                                        player.setPlayerTexture(AssetsManager.AssetsList["orang4"]);
                                        break;
                                    default:
                                        player.setPlayerTexture(AssetsManager.AssetsList["orang1"]);
                                        break;
                                }
                                lock (Game1.GameObject.Players)
                                {
                                    Game1.GameObject.Players.Add(m.PeerID, player);
                                }
                            }

                            //Response
                            //SendMsg(response);
                            /*if (!Connection.ifMessageRepeated(m))
                            {
                                if (Connection.MessageBox.Count >= 5)
                                    Connection.MessageBox.Remove(Connection.MessageBox[0]);
                                Connection.MessageBox.Add(m);
                                Connection.BroadCastMessage(m.Construct());
                            }*/
                        //}

                    }
                    catch (SocketException se)
                    {
                        System.Diagnostics.Debug.WriteLine(se.ToString());
                        //lock (Connection.ClientHandlers)
                        //{
                        //    Connection.ClientHandlers.Remove(this);
                        //}
                    }
                }
            }