Exemplo n.º 1
0
        public void UpdateGame()
        {
            if (m_Game != null)
            {
                Packets.Packet P = m_Game.ReturnPacket();
                switch (P.m_PacketType)
                {
                case Packets.PacketType.GameUpdate:
                {
                    Packets.GameUpdate GameUpdate = (Packets.GameUpdate)P;
                    if (!GameUpdate.Equals(m_CachedUpdate))
                    {
                        m_CachedUpdate = GameUpdate;
                        UdpSendMessage(P);
                    }
                    break;
                }

                case Packets.PacketType.GameFinished:
                {
                    UdpSendMessage(P);
                    break;
                }

                default:
                    break;
                }
            }
            else
            {
            }
        }
Exemplo n.º 2
0
 public void IncommingPacket(Packets.Packet packet)
 {
     switch (packet.m_PacketType)
     {
     case Packets.PacketType.GameUpdate:
     {
         m_NewestUpdate = (Packets.GameUpdate)packet;
         break;
     }
     }
 }
Exemplo n.º 3
0
 public void Run()
 {
     Login();
     CreateForm();
     ProcessServerResponse();
     Packets.PublicKeys PK = new Packets.PublicKeys(m_PublicKey);
     m_CachedUpdate = new Packets.GameUpdate(0, 0, 0, null);
     Send(PK);
     m_ProcessServerResponse    = new Thread(() => SetTimer(this));
     m_ProcessUDPServerResponse = new Thread(() => UdpProcessServerResponse());
     m_ManageGameUpdate         = new Thread(() => SetGameUpdate(this));
     m_ProcessServerResponse.Start();
     m_ProcessUDPServerResponse.Start();
     m_ClientForm.ShowDialog();
     Close();
 }
Exemplo n.º 4
0
        protected override void Update(GameTime gameTime)
        {
            //Check for finish

            if (GamePad.GetState(PlayerIndex.One).Buttons.Back == ButtonState.Pressed || Keyboard.GetState().IsKeyDown(Keys.Escape) || !IsActive)
            {
                _graphics.Dispose();
                IsGameFinished = true;
                TimeTaken      = 0;
                Close();
            }


            //Handle Enemy Graphics


            if (m_NewestUpdate != null)
            {
                Vector2 OppositionPos = m_CompetitorsAndObjects[0].ReturnLocale();
                OppositionPos.X = m_NewestUpdate.m_PaddlePosX;
                m_CompetitorsAndObjects[0].Update(m_NewestUpdate.m_PaddlePosX);
                Vector2 CurrentBallPos        = new Vector2(m_NewestUpdate.m_BallX, m_NewestUpdate.m_BallY);
                Vector2 SuspectedBallPosition = new Vector2(OppositionPos.X + 150, OppositionPos.Y - 46);

                if (CurrentBallPos != SuspectedBallPosition && CurrentBallPos.Y > SuspectedBallPosition.Y + 5 || CurrentBallPos.Y < SuspectedBallPosition.Y - 5)
                {
                    if (!m_CompetitorsAndObjects[1].Active)
                    {
                        m_CompetitorsAndObjects[1].Active = true;
                    }
                    else
                    {
                        m_CompetitorsAndObjects[1].MoveY(-3);
                    }
                }
                else
                {
                    SuspectedBallPosition.X          -= 150;
                    SuspectedBallPosition.Y          += 46;
                    m_CompetitorsAndObjects[1].Active = false;
                    m_CompetitorsAndObjects[1].SetBallPos(SuspectedBallPosition);
                }

                for (int i = 0; i < m_CompetitorBricks.Count; i++)
                {
                    if (m_NewestUpdate.m_BrickState[i])
                    {
                        m_CompetitorBricks[i].Active = true;
                    }
                    else
                    {
                        m_CompetitorBricks[i].Active = false;
                    }
                }
            }



            //Handle local
            m_PlayerAndObjects[1].UpdateRectangle(m_PlayerAndObjects[1].ReturnLocale());
            if (Keyboard.GetState().IsKeyDown(Keys.Space))
            {
                m_PlayerAndObjects[1].Active = true;
            }
            else if (!m_PlayerAndObjects[1].Active)
            {
                m_PlayerAndObjects[1].SetBallPos(m_PlayerAndObjects[0].ReturnLocale());
            }
            else
            {
                m_PlayerAndObjects[1].MoveY(-3);
                if (m_PlayerAndObjects[1].ReturnLocale().Y < -10)
                {
                    m_PlayerAndObjects[1].Active = false;
                }
            }

            if (Keyboard.GetState().IsKeyDown(Keys.A))
            {
                m_PlayerAndObjects[0].MoveX(-1);
            }
            if (Keyboard.GetState().IsKeyDown(Keys.D))
            {
                m_PlayerAndObjects[0].MoveX(1);
            }

            //Collision
            if (m_PlayerAndObjects[1].Active)
            {
                for (int i = 0; i < m_Bricks.Count; i++)
                {
                    if (m_Bricks[i].Active)
                    {
                        if (m_Bricks[i].CheckForCollision(m_Bricks[i], m_PlayerAndObjects[1]))
                        {
                            m_Bricks[i].Active           = false;
                            m_PlayerAndObjects[1].Active = false;
                        }
                    }
                }
            }

            List <bool> CheckIfCompleted = new List <bool>();
            int         truecount        = 0;

            for (int i = 0; i < m_Bricks.Count; i++)
            {
                if (!m_Bricks[i].Active)
                {
                    CheckIfCompleted.Add(false);
                    truecount++;
                }
                else
                {
                    CheckIfCompleted.Add(true);
                }
            }
            if (truecount == m_Bricks.Count - 2)
            {
                TimeTaken      = (int)gameTime.TotalGameTime.TotalSeconds;
                m_Finished     = new Packets.GameFinished(TimeTaken);
                IsGameFinished = true;
                if (Submitted)
                {
                    Close();
                }
            }
            Packets.GameUpdate GU = new Packets.GameUpdate((int)m_PlayerAndObjects[0].ReturnLocale().X, (int)m_PlayerAndObjects[1].ReturnLocale().X, (int)m_PlayerAndObjects[1].ReturnLocale().Y, CheckIfCompleted);
            m_CurrentObjects = GU;
            base.Update(gameTime);
        }